[Terraform] 테라폼이 뭔가요? 😮

N'CHE·2021년 8월 26일
0

Terraform

목록 보기
1/1
post-thumbnail

📌 Terraform이 뭔가요?

  • terraform은 HashCorp社에서 개발한 Open Source IaC software tool 입니다.
  • HCL (HashiCorp Configuration Language) Syntax를 사용합니다.

📌 IaC는 뭔데요?

  • IaC 는 Infrastructure as Code의 준말이며, 말 그대로 code 형태의 Infra를 의미합니다.

📌 IaC는 왜 하는 거죠?

  • 명시적인 code 형태로 Infra를 Provisioning하고 관리할 수 있습니다.
  • 문서화와 버전 관리가 편리해집니다.
  • Infra를 표준화된 패턴으로 배포할 수 있게 됩니다.
  • Infra를 수정하고 복제하거나 일관적으로 변경사항을 적용하기가 용이해집니다.
  • Code 형태로 Infra를 관리할 수 있으니 Self-service가 쉬워집니다.
  • Service의 변경 상태와 Service 사이의 영향도를 명확하게 파악할 수 있게됩니다.
  • 일반적인 Code와 같이 modularization이 가능하기 때문에 재사용성을 확보할 수 있습니다.
  • AWS Console과 같은 GUI를 이용하거나 CLI를 통해 하나씩 생성하는 것 보다 편리하고 불필요한 작업이 줄어들어 구축 속도가 빨라집니다.

📌 다른 IaC tool도 있는데 왜 Terraform인가요?

  • Platform에 종속된 IaC tool 보다 범용성이 높습니다.
    • 분명 AWS CloudFormation, Google Cloud Deployment Manager 등 Cloud Platform에서 직접 제공하는 Platform에 최적화 된 IaC 도구도 존재합니다. 하지만 Terraform은 다양한 Platform을 사용할 수 있도록 Provider를 지원하기 때문에 유연합니다.
  • Terraform은 Open source tool로써 Open source Community가 활성화 되어있습니다. 때문에 다양한 이용자들과 기술, issue 등을 공유하며 운영되어 독점 프로그램에 비해 기술의 발전 속도가 빠르고 유연성이 높습니다. 이용자들도 Community에서 얻을 수 있는 정보가 많아 유용합니다.
  • terraform은 선언형으로 불변성을 띱니다.
    • Ansible과 같은 CM(Configuration Management) tool은 현재 상태에 대한 변경사항 만을 계산하여 작성해야합니다. 이렇게 되면 리소스의 낭비를 막기 위해 기존의 구성사항 및 변경 이력을 숙지할 필요가 있게됩니다.
    • Terraform은 *.tfstate 파일을 통해 기존의 상태와 비교하여 적용합니다. 따라서 기존의 구성사항을 고려할 필요 없이 최종 상태만을 선언하면 됩니다.
  • Terraform은 Master-Agent 구조가 아니기 때문에 모든 서버에 설치할 필요가 없습니다. 때문에 Master-Agent 구조의 tool 보다 사용이 편리합니다.
  • 실제 환경에 적용하기 전에 plan 기능을 사용해 설계의 변경사항을 미리 기호로 시각화 하여 확인할 수 있어 편리하고 안정적입니다.
  • resouce 사이의 의존성이 없다면 병렬적으로 생성되기 때문에 Infra의 구축 속도가 빨라집니다.

📌 그래서 terraform이 제일 좋단 말인가요?

  • Provider가 없는 Resouce는 제어가 불가능하다는 제약이 있습니다.
  • 위에서 언급했던 Open source tool로써 발전 속도가 빠르다는 장점이 잦은 release로 버전들 사이의 문법 차이를 만들어 단점이 될 수도 있습니다.

📓 Reference

0개의 댓글