본문 바로가기
Cloud/Terraform

1장. Terraform 이란?

by 근육곰돌이 2021. 5. 31.
728x90

Terraform이란?

테라폼Terraform은 하시코프Hashicorp에서 만든 오픈 소스 "코드형 인프라" 툴입니다.

선언적인 코딩 툴인 Terraform은 개발자가 HCL(HashiCorp Configuration Language)이라고 불리는 상위 레벨 구성 언어를 사용하여 애플리케이션 실행을 위해 원하는 "엔드 상태" 클라우드 또는 온프레미스 인프라를 기술하도록 합니다. 그런 다음 해당 엔드 상태에 도달하기 위한 계획을 생성하고 인프라를 프로비저닝하기 위한 계획을 실행합니다.

 

Ansible, Chef 같은 관리도구들이 OS 내부의 상태 관리를 한다면 테라폼은 인프라 자체의 상태를 관리하는 오케스트레이션 도구에 가깝다.
예를 들어 OS에 문제가 생겼다면 Ansible을 통해 설정하면 OS의 내부의 설정 값이 Ansible에 맞춰서 설정이 변경(멱등성으로 인해 절차적인 실행이 아니라 선언적으로 결과값만 나온다.)된다면 Terraform은 OS가 있는 Server 자체가 설정값에 따라 변경(ansible과 같이 결과값으로만 반영)이 된다.

 

Terraform은 현재 공급되는 가장 인기 있는 인프라 자동화 툴 중 하나이며, 이는 단순 구문을 사용하여 여러 클라우드 및 온프레미스 데이터 센터에서 인프라를 프로비져닝하고 구성 변경에 대한 대응으로 인프라를 안전하고 효율적으로 다시 프로비져닝할 수 있기 때문입니다. 조직이 하이브리드 클라우드 또는 멀티클라우드 환경을 전개할 경우, Terraform 사용을 원하거나 Terraform이 필요할 수 있습니다.

 

 

 

Terraform의 주요 특징

  • Infrastructure as Code
    • 인프라를 코드로 정의하여 생산성과 투명성을 높일 수 있습니다.
    • 정의한 코드를 쉽게 공유할 수 있어 효율적으로 협업할 수 있습니다.
  • Execution Plan
    • 변경 계획과 변경 적용을 분리하여 변경 내용을 적용할 때 발생할 수 있는 실수를 줄일 수 있습니다.
  • Resource Graph
    • 사소한 변경이 인프라 전체에 어떤 영향을 미칠지 미리 확인할 수 있습니다.
    • 종속성 그래프를 작성하여 이 그래프를 바탕으로 계획을 세우고, 이 계획을 적용했을 때 변경되는 인프라 상태를 확인할 수 있습니다.
  • Change Automation
    • 여러 장소에 같은 구성의 인프라를 구축하고 변경할 수 있도록 자동화할 수 있습니다.
    • 인프라를 구축하는 데 드는 시간을 절약할 수 있고, 실수도 줄일 수 있습니다.

 

 

IaC란? (Infrastructure as Code)

Terraform의 장점을 보다 잘 이해하기 위해 코드형 인프라(IaC)의 장점을 먼저 이해하는 것이 도움이 됩니다. IaC를 통해 개발자는 자동화되고 신속하며 반복 가능한 프로비져닝을 제공하는 방식으로 인프라를 코딩할 수 있습니다. 버전 관리, 지속적인 통합, 연속 배치 등 Agile 및 DevOp 실무의 주요 구성요소입니다.

코드형 인프라는 다음과 같은 도움을 줄 수 있습니다.

  • 속도 향상: 자원을 배치 및/또는 연결해야 하는 경우 인터페이스의 수동 탐색보다 자동화가 더 빠릅니다.
  • 안정성 향상: 인프라의 규모가 클 경우, 자원 또는 프로비저닝 서비스를 잘못된 순서로 구성할 수 있습니다. IaC를 사용하면 자원은 항상 프로비저닝되고 선언된 대로 구성됩니다.
  • 구성 드리프트 방지: 사용자 환경을 프로비저닝한 구성이 실제 환경과 더 이상 일치하지 않는 경우 구성 드리프트가 발생합니다. (아래의 '변경 불가 인프라'를 참조하세요.)
  • 실험, 테스트 및 최적화 지원: 코드형 인프라를 더 빠르고 쉽게 프로비저닝할 수 있기 때문에 많은 시간과 자원을 투자하지 않고도 시험적 변경사항을 작성하고 테스트할 수 있습니다. 실제 결과를 원한다면 프로덕션을 위해 새 인프라를 신속하게 확장할 수 있습니다.
반응형