1. 목적 및 범위
- 앤서블: 주로 구성 관리(configuration management) 도구로 사용되며, 기존 인프라에 대한 설정 관리 및 배포에 초점을 둡니다. 또한, 인프라 프로비저닝도 가능하지만 주 목적은 아닙니다. 에이전트 없이 SSH를 통해 서버와 통신하는 방식으로 작동합니다.
- 테라폼: 인프라 코드(IaC) 도구로서, 클라우드 리소스의 생성 및 관리를 위해 설계되었습니다. AWS, GCP, Azure와 같은 다양한 클라우드 환경에서 인프라를 코드로 정의하고 관리하는 데 특화되어 있습니다.
2. 접근 방식
- 앤서블: 절차적(procedural) 접근 방식입니다. 원하는 상태를 달성하기 위한 실행 단계를 직접 정의하고, 지정한 순서대로 작업이 실행됩니다.
- 테라폼: 선언적(declarative) 접근 방식입니다. 원하는 최종 인프라 상태를 정의하면 테라폼이 그 상태를 달성하기 위해 필요한 작업을 계산하여 자동으로 실행합니다. 실행 단계보다는 최종 상태에 초점을 맞춥니다.
3. 사용 사례
- 앤서블: 주로 서버 구성 관리, 패키지 설치, 사용자 관리, 애플리케이션 배포 등 구성 관리와 복잡한 배포 작업에 적합합니다. 이미 프로비저닝된 서버에서 주로 사용됩니다.
- 테라폼: 인프라 프로비저닝에 가장 적합하며, 클라우드 리소스(예: 가상 머신, 네트워크, 데이터베이스) 생성 및 관리를 할 때 강력한 도구입니다.
4. 상태 관리
- 앤서블: 상태 비저장(stateless) 도구입니다. 실행 시마다 해당 작업이 실행되며, 인프라의 현재 상태를 기록하거나 관리하지 않습니다.
- 테라폼: 상태 저장(stateful) 도구입니다. 인프라의 현재 상태를 기록하는 상태 파일을 유지하며, 이를 통해 변경 사항을 추적하고 필요한 부분만 업데이트합니다.
5. 오케스트레이션 vs 프로비저닝
- 앤서블: 오케스트레이션 도구로, 인프라 프로비저닝도 가능하지만 주로 서버 설정 및 애플리케이션 배포를 관리하는 데 사용됩니다.
- 테라폼: 주로 프로비저닝 도구로, 인프라 리소스의 생성을 자동화하고 관리하는 데 중점을 둡니다.
6. 학습 난이도
- 앤서블: YAML을 사용해 작성되므로 비교적 직관적이고 쉽게 시작할 수 있습니다.
- 테라폼: HashiCorp Configuration Language (HCL) 이라는 전용 언어를 사용하므로 학습에 약간의 시간이 필요하지만, 구조 자체는 복잡하지 않습니다.
7. 실행 방식
- 앤서블: 푸시 기반(push-based) 방식으로, 제어 노드에서 원격 서버로 SSH를 통해 변경 사항을 푸시합니다.
- 테라폼: 풀 기반(pull-based) 방식으로, 테라폼은 클라우드 API와 상호작용해 리소스 상태를 확인하고 원하는 상태로 만들기 위한 변경 작업을 실행합니다.
8. 커뮤니티 및 생태계
- 앤서블: 다양한 모듈과 플레이북을 제공하며, Red Hat 환경에서 특히 잘 통합되고 DevOps 환경에서 많이 사용됩니다.
- 테라폼: 멀티 클라우드 환경에서 강력한 생태계를 자랑하며, 다양한 클라우드 서비스 제공자를 위한 프로바이더가 있어 확장성이 높습니다.
9. 멱등성(Idempotence)
- 앤서블: 멱등성을 지원하지만, 작업을 멱등하게 구성하기 위해 사용자가 추가적인 고려를 해야 하는 경우가 있습니다.
- 테라폼: 멱등성이 기본적으로 설계에 포함되어 있으며, 상태 파일을 통해 필요한 변경 작업만 수행합니다.
10. 확장성
- 앤서블: 다양한 모듈과 롤을 통해 확장할 수 있으며, 에이전트가 없기 때문에 다양한 시스템과 쉽게 통합됩니다.
- 테라폼: 프로바이더와 모듈을 통해 확장 가능하며, 다양한 클라우드 플랫폼에서 일관성 있게 인프라를 관리할 수 있습니다.
요약
- 앤서블은 서버 구성 관리, 애플리케이션 배포 및 오케스트레이션에 적합합니다.
- 테라폼은 클라우드 인프라 프로비저닝 및 멀티 클라우드 환경에서 리소스 관리에 탁월합니다.
'DevOps' 카테고리의 다른 글
마이크로서비스의 특징 (0) | 2022.08.29 |
---|---|
데브옵스 구성요소 (0) | 2022.08.29 |
i18n (국제화) 을 위한 weblate 사용법 (www.weblate.org) - 2편 설정 (0) | 2020.05.20 |
i18n (국제화)을 위한 weblate 사용법 (www.weblate.org) - 1편 설치 (0) | 2020.05.10 |
AWS linux 에 docker-compose 설치 (0) | 2020.05.10 |
docker-compose 명령어 (0) | 2020.05.10 |
도커 명령어 (0) | 2020.03.12 |
애플리케이션 튜닝 (0) | 2019.05.23 |
댓글