Devops/Terraform

[Terraform] Terraform이란

dev_ss 2024. 11. 26. 21:54

 

 

 


Terraform과 Iac

 

 

최근의 Infra Engineer나 Devops Engineer 직무를 보면 하나같이 필요로 하는 기술 스택이 존재한다.

 

바로 Iac(Infrastructure as code)이다.

 

 

 

과거에는 서버를 구매해서 OS를 설치하고 내부 환경을 세팅하는 등의 수작업을 일일이 했다면, 현재는 다르다.

 

Private Cloud와 Public Cloud를 막론하고 Iac를 활용하여 코드기반의 관리를 하는 경우가 많다.

 

 

 

회사의 규모가 일정 수준 이상이 된다면, 수십 수백 대 이상의 서버를 관리하는 상황이 비일비재하기 때문에, 이를 하나하나 관리해 준다면 관리에 필요한 인력과 비용이 상당히 커질 것이다.

 

 

 

하지만 코드로 관리를 하면서 현재 서버의 상태에 대한 명세를 코드로 쉽게 확인하고 수정도 코드로 일률적으로 관리할 수 있게 되면서 인적자원과 관리비용의 절감을 낮추면서 더욱 효율적으로 운영할 수 있게 되는 것이다.

 

 

 

그중 가장 유명한 툴이 Terraform이다.

 

현재 테라폼은 거의 클라우드 인프라 관리의 표준이라고 봐도 무방할 정도로 많은 곳에서 사용되고 있다.

 

Aws, Azure, Gcp 및 Oci 등의 굉장히 많은 CSP(Cloud Service Provider)를 지원해 주기 때문에 사내 환경이 Public Cloud라면, Terraform을 쓰지 않을 이유가 없을 것이다.

 

 


Steps

 

테라폼은 아래와 같은 단계를 거쳐 사용된다.

 

[출처 : https://developer.hashicorp.com/terraform/intro]

 

 

1. 인프라 구조를 정의하고 코드로 작성 (Write)

 

2. 변경될 인프라 사항들을 확인 (Plan)

 

3. 작성한 코드를 기반으로 실제 인프라를 변경 (Apply)

 

 

이러한 3단계를 기반으로 인프라를 코드로 구현하고 운영하게 되는 것이다.

 


Advantage

 

위 과정들을 통한 테라폼의 장점은 아래와 같다.

 

 

1. 멱등성 보장

 - 동일한 코드를 여러 번 실행해도 항상 같은 결과 생성

 

 - 예측 가능한 인프라 관리 가능

 

 

 

2. 버전 관리 용이

 - Git 등의 버전 관리 시스템과 통합 가능

 

 - 인프라 변경 이력 추적 및 롤백 가능

 

 

 

3. 모듈화와 재사용

 - 공통 인프라 구성을 모듈로 만들어 재사용

 

 - 표준화된 인프라 구성 가능

 

 

 

 


Opinion

 

최근에는 테라폼을 요구하는 기업이 굉장히 많은 것으로 보인다.

 

 

Aws가 적혀있으면 10의 8~9는 자격/우대사항으로 테라폼이 함께 기입되어 있기 때문이다.

 

 

하지만 작년부터 변경된 테라폼의 라이선스 및 Tier 제도(유료화)로 인하여 Public Cloud의 새로운 Iac의 강자가 출몰할지 예의주시할 필요가 있어 보이며, 아직은 대세가 분명하기에 잘 공부해 두면 나쁠 것이 없을 것 같다.

 


 

 

 

반응형