1. IAC(코드형 인프라)란?
IAC(Infrastructure as Code)는 클라우드 인프라를 코드로 정의하고 관리하는 방식이다.
기존의 클라우드 관리 콘솔을 통해 수작업으로 리소스를 프로비저닝(provisioning)하는 대신, IAC를 통해 코드로 정의하고 실행하여 리소스를 자동으로 생성, 구성, 업데이트, 삭제할 수 있다.
IAC는 데이터베이스, 네트워크, 스토리지, 애플리케이션 구성과 같은 다양한 인프라 구성 요소를 코드로 관리할 수 있도록 해준다. 예를 들어, 기존의 셸 스크립트를 사용해도 되지만, 이 방식은 관리와 재사용이 어려우며 유지보수를 위해 개발 기술을 필요로 한다. 이러한 문제를 해결하기 위해 Terraform이나 Ansible과 같은 IAC 도구가 등장했다.
2. 주요 IAC 도구 소개
IAC 도구는 크게 세 가지 유형으로 분류할 수 있다.
- 구성 관리(Configuration Management) 도구
- 예시: Ansible, Chef, Puppet, SaltStack
- 용도: 기존 인프라 리소스(서버, 데이터베이스, 네트워크 장치 등)에 소프트웨어를 설치하고 관리
- 특징:
- 코드의 일관성과 표준 구조를 유지
- 다수의 원격 리소스에서 동시에 실행 가능
- Idempotent(멱등성): 동일한 코드를 여러 번 실행해도 환경을 정의된 상태로 유지하며, 불필요한 변경을 방지
- 재사용성과 버전 관리 가능 (예: Ansible Playbook)
- 서버 템플릿(Server Templating) 도구
- 예시: Docker, Vagrant, Packer
- 용도: 필요한 소프트웨어와 종속성이 미리 설치된 VM(가상 머신) 이미지 또는 컨테이너 생성
- 특징:
- 변경이 불가능한 Immutable Infrastructure(불변 인프라)를 지향
- 기존 인스턴스를 업데이트하는 대신 이미지를 업데이트하고 새로운 인스턴스를 재배포
- 예시: Amazon AWS의 Custom AMI, DockerHub의 Docker 이미지
- 프로비저닝(Provisioning) 도구
- 예시: 'Terraform', AWS CloudFormation
- 용도: 서버(VM), 데이터베이스, 네트워크(VPC, 서브넷, 보안 그룹 등)와 같은 인프라 구성 요소를 코드로 정의하고 프로비저닝
- 특징:
- CloudFormation: AWS에 특화된 도구
- Terraform: 클라우드 제공업체에 구애받지 않고 다양한 클라우드 제공업체 지원
3. IAC 도구 간 차이점 및 활용 사례
- Ansible vs Terraform
Ansible은 소프트웨어 구성 관리에 적합하며, Terraform은 인프라 프로비저닝에 적합하다. 각 도구는 특정 목적에 맞춰 설계되었으며, 적절한 도구를 선택하는 것이 중요하다.
4. 왜 IAC를 사용해야 할까?
- 수작업을 줄이고 자동화를 통해 효율성 및 생산성 향상
- 코드 기반 관리를 통해 일관성과 재현성 확보
- 버전 관리를 통해 변경 이력 추적 가능
- 여러 리소스를 동시에 관리 가능
'탐구 생활 > Terraform' 카테고리의 다른 글
Terraform 기초: commands (0) | 2024.11.21 |
---|---|
Terraform 기초: State (0) | 2024.11.21 |
Terraform 기초: depends_on, output (0) | 2024.11.19 |
Terraform 기초: HCL 기본기 (0) | 2024.11.17 |
Terraform 소개 (0) | 2024.11.17 |