본문 바로가기

AWS DevOps/DevOps 개념

IaC(Infra as a Code)의 주요 도구

 

구성 조정 도구(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