- What is Iac?
- Terraform
- Ansible
Iac(Infrastructure As Code)란?
- IaC란 서버, 네트워크, 데이터베이스, 애플리케이션 구성 등 IT 인프라를 수동으로 관리하는 대신 코드로 정의하고 관리하는 방식입니다.
- IaC는 프로그래밍 언어나 구성 파일을 사용하여 인프라를 자동으로 배포하고 관리할 수 있게 해줍니다
그렇다면 IaC를 사용하는 이점?
• 자동화 및 일관성: 수동 설정에서 발생할 수 있는오류를 줄이고,인프라 배포 및 관리의 일관성을 유지합니다
• 버전 관리: 코드로 정의된 인프라는 버전 관리 시스템(Git 등)을 통해 변경 이력을 추적하고 복구할 수 있습니다
• 재사용성: 코드 모듈화 및 템플릿화를 통해 재사용성을 높여 시간과 비용을 절감할 수 있습니다
• 협업: 코드 기반 접근 방식은 개발팀과 운영팀 간의 협업을 촉진하며, DevOps 문화의 핵심 요소입니다
• 가시성 및 투명성: 코드가 모든 설정을 명시적으로 정의하므로, 인프라 구성 상태를 명확히 파악할 수 있습니다
IaC의 구현 방식 (선언적 접근 방식, 명령적 접근 방식)
- 선언적 접근 방식: 원하는 최종 상태를 정의하고, 시스템이 그 상태로 자동으로 구성됩니다
사용자는 원하는 결과를 명시하며, 도구가 이를 달성하기 위한 과정을 결정합니다
예: Terraform, AWS CloudFormation, Kubernetes YAML 파일
장점: 설정이 간결하고 이해하기 쉬우며, 인프라의 현재 상태와 원하는 상태를 비교하여 필요한 변경 사항만 적용합니다
- 명령적 접근 방식: 수행할 명령어와 순서를 명시하고 사용자는 인프라를 설정하기 위한 단계별 명령을 작성합니다
예: Ansible, Chef, Puppet
장점: 세부적인 제어가 가능하며, 복잡한 논리와 조건 처리를 쉽게 구현할 수 있습니다
IaC 도구 종류
Terraform, AWS CloudFormation, Ansible, Chef/Puppet, Kubernetes
IaC의 장점