구성 조정 도구(Configuration Orchestration Tool)와 구성 관리 도구(Configuration Management Tool)의 차이
ㅇ Terraform과 AWS CloudFormation과 같은 구성 조적 도구(Configuration Orchestration Tool)는 서버 및 기타 인프라의 구축을 자동화 하도록 설계됨.
ㅇ Chef, Puppet과 같은 구성 관리 도구(Configuration Orchestration Tool)는 이미 프로비저닝된 이 인프라의 소프트웨어와 시스템을 구성하고 관리하는데 도움이 됨.
Tools | Code | Cloud | Type | Infrastructure | Language | Architecture |
CloudFormation | Closed Source | AWS Only | Orchestration | Immutable | YAML | YAML |
CHEF | Open Source | All | Config Mgmt | Mutable | Ruby | Pull |
puppet | Open Source | All | Config Mgmt | Mutable | DSL & ERB | Pull |
Terraform | Open Source | All | Orchestration | Immutable | HCAL | Push |
SALTSTACK | Open Source | All | Config Mgmt | Mutable | YAML | PUll/Push |
ANSIBLE | Open Source | ALL | Config Mgmt | Mutable | YAML | Push |
ㅁ Terraform
Terraform은 오픈 소스 기반의 구성 조정 도구(Configuration Orchestration Tool)로 클라우드/온프라미스에 구애 받지 않고 사용할 수 있는 인프라 프로비저닝 툴
ㅇ 하시코프사(Hashicorp)에서 개발하였으며, Go로 작성되었음
ㅇ 퍼블릭 및 프라이빗 클라우드 인프라 프로비저닝을 지원
ㅇ 다른 구성 조정 도구와 달리 Terraform은 상태 파일이라는 개념을 사용하여 인프라의 상태를 유지 가능
ㅇ Terraform은 이해하기 쉽고 편리하게 사용할 수 있기 때문에 짧은 시간의 트레이닝으로 빠르게 시작 가능
ㅇ 자체 HCL(Hashicorp Configuration Language)라는 DSL(Domain Specific Language) 사용
ㅇ HCL은 JSON과 호환되며 배포할 인프라 자원을 설명하는 구성 파일을 만드는 데 사용
ㅇ Custom 기능 개발을 위해 Terrform Plug-in을 사용하여 플랫폼에 고급 기능 추가
ㅁ AWS CloudFormation
Terraform과 마찬가지로 AWS CloudFormation은 인프라를 코딩하여 배포를 자동화 할 수 있게 해주는 구성 조정 도구
ㅇ AWS에서만 사용 가능
ㅇ JSON/YAML을 사용하여 템플릿을 생성
ㅇ Stack을 통해 변경 사항을 사전에 확인해 다른 리소스에 미치는 영향을 사전에 확인 가능하며 리소스 간의 종속성을 관리
ㅇ 인프라의 조정 및 배치/업데이트 작업이 사전에 정의된 방식으로 수행되도록 하기 위해 오류가 감지되면 롤백 트리거를 이용하여 인프라 스택을 이전의 상태로 되돌릴 수 있다.
ㅇ 하나의 CloudFormation 템플릿으로 여러 AWS 계정 및 지역(Region)에 인프라 스택을 배치할 수 있다.
ㅁ Chef
Chef는 일반적인 기업에서 지속적인 통합 및 전달 (CI/CD) 프로세스를 위해 가장 많이 사용하는 구성 관리 도구 중 하나
ㅇ Chef는 Ruby 기반 DSL(Domain Specific Languate)을 사용하여 '레시피(Recipe)'와 '쿡북(Cook-book)'을 생성
ㅇ 이러한 레시피와 쿡북은 기존 서버에서 응용 프로그램 및 유틸리티를 원하는 형태로 구성하는 데 필요한 정확한 단계 설정 가능
Chef는 On-Premise/Cloud와 관계 없이 AWS, Microsoft Azure, Google Cloud Plaform, OpenStack등과 같은 다양한 클라우드 서비스에서 사용 가능
ㅁ Puppet
Puffet은 Chef와 유사하게 엔지니어가 소프트웨어를 지속적으로 제공하도록 돕는 구성 관리 도구
ㅇ Puppet의 Ruby 기반의 DSL(Domain Specific Language)을 사용하여 원하는 인프라의 최종 상태와, 작업을 정확하게 정의
ㅇ Puppet은 자동으로 최적의 환경을 구성하고 잘못된 변경 사항을 수정
ㅇ Puppet에서는 각 서버 설정(매니페스트)을 클래스 단위로 정의하거나 정의 완료된 클래스를 상속받아서 새로운 클래스에 정의하는 등 객체지향적으로 유연하게 기술할 수 있는 것이 특정
Puffet은 주로 시스템 관리자를 대상으로 하고, Chef는 개발자를 대상으로 한다.
'AWS DevOps > DevOps 개념' 카테고리의 다른 글
DevOps를 위한 기술적 요소 (0) | 2021.02.18 |
---|---|
AWS Cloudformation Template 구성 사항 (0) | 2021.02.03 |