Terraform vs CloudFormation vs Ansible
Ansible vs Terraform vs Puppet
CloudFormation vs Terraform
IaC
) 는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말함IaC
를 사용하면 인프라 사양을 담은 구성 파일이 생성되므로 구성을 편집하고 배포하기가 더 쉬워짐IaC
의 중요한 부분IaC
로 인프라 프로비저닝을 자동화하면 애플리케이션을 개발하거나 배포할 때마다 개발자가 직접 서버 ∙ 운영 체제 ∙ 스토리지 ∙ 기타 인프라 구성 요소를 수동으로 프로비저닝하고 관리할 필요가 없어짐IaC
이용 사례를 확립하지 않으면 현재 인프라의 규모를 관리하기가 갈수록 어려워질 것IaC
를 이용해 IT 인프라 요구 사항을 관리함과 동시에 일관성을 높이고 오류 및 수동 구성을 줄일 수 있음IaC
는 DevOps 사례 및 지속적 통합/지속적 제공 ( CI/CD
)에서 중요한 부분을 차지IaC
로 처리하고 개발자는 스크립트를 실행하여 인프라를 준비할 수 있음 CI/CD
는 통합 및 테스트에서 제공 및 배포에 이르는 애플리케이션 라이프사이클 전반에 걸쳐 지속적인 자동화와 지속적인 모니터링에 의존IaC
는 개발과 운영을 조율하는 데 도움이 되고 따라서 DevOps 접근 방식을 지원IaC
는 사용될 때마다 동일한 환경을 생성IaC
는 자동으로 다시 생성할 수 없고 고유한 구성을 지닌 개별 배포 환경을 유지관리할 필요가 없으므로 프로덕션 환경의 일관성이 보장IaC
내 인프라에도 적용됨CI/CD
파이프라인을 인프라에도 적용함으로써 동일한 테스트 및 버전 제어를 인프라 코드에 반영할 수 있음IaC
구현을 위한 서버 자동화 및 구성 관리 툴Chef
Puppet
Ansible
Saltstack
Terraform
AWS CloudFormation
Chef
∙ Ansible
Puppet
∙ Saltstack
∙ Terraform
∙ AWS CloudFormation
Terraform
이 더 상위호환으로 간주됨Ansible
은 서로 잘 연동됨IaC
기반의 구성 조정 도구AWS CloudFormation
에서 템플릿 에 설명된 리소스를 프로비저닝과 구성을 담당Tip!
AWS CloudFormation
구성요소
AWS CloudFormation
을 사용하는 경우에는 템플릿 및 스택 으로 작업
- 템플릿 을 생성하여 AWS 리소스와 해당 속성에 대해 설명
- 스택 을 생성할 때마다
AWS CloudFormation
에서 템플릿에 설명된 리소스를 프로비저닝
- 템플릿 ( Template )
- 스택 리소스 프로비저닝 및 구성을 위해 필요한 파일
- JSON 또는 YAML 형식의 텍스트 파일
.json
∙.yaml
∙.template
또는.txt
등 모든 확장명으로 파일을 저장 가능- AWS CloudFormation Designer 를 사용하여 GUI 기반으로 친숙하게 템플릿 작성 가능
AWS CloudFormation
에서는 템플릿을 AWS 리소스 구축을 위한 블루프린트로 사용
- 스택 ( Stack )
- 하나의 단위로 관리할 수 있는 AWS 리소스 모음
- 스택의 생성 ∙ 업데이트 ∙ 삭제를 통해 리소스 모음의 생성 ∙ 업데이트 ∙ 삭제
- 스택의 모든 리소스는 템플릿을 통해 정의
- 스택을 삭제하면 관련 리소스가 모두 삭제
Tip! 프로비저닝 이란?
- 프로비저닝은 IT 인프라를 설정하는 프로세스
- 사용자와 시스템에서 사용할 수 있도록 데이터와 리소스에 대한 액세스를 관리하는 데 필요한 단계를 지칭하기도 함
- 사용자의 요구에 맞게 시스템 자원을 할당 ∙ 배치 ∙ 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비 해 두는 것을 말함