IaC
코드형 인프라(Infrastructure as Code, IaC)는 수동 프로세스 대신 코드를 통해 인프라를 프로비저닝하고 관리하는 방법입니다.
핵심 개념
- 기존의 수동 설정 방식은 반복 작업이 많고 휴먼 에러가 발생하기 쉬우며, 인프라 설정을 별도로 문서화해 관리해야 하는 번거로움이 있습니다.
- IaC는 인프라를 코드로 관리함으로써 일관성을 보장하고 운영 효율성을 높입니다.
- Git과 같은 형상 관리 도구로 인프라 변경 이력을 추적할 수 있습니다.
선언적 방식과 명령형 방식
| 항목 | 선언적(Declarative) | 명령형(Imperative) |
|---|---|---|
| 정의 대상 | 최종 상태 | 구성 방법(수행 절차) |
| 동작 방식 | 도구가 현재 상태와 최종 상태를 비교해 자동으로 구성 | 사용자가 정의한 절차를 순서대로 실행 |
| 대표 도구 | Terraform, AWS CloudFormation | Ansible, AWS CDK |
장점
- Git과 같은 형상 관리 도구를 활용해서 변경 사항을 추적할 수 있습니다.
- 코드 자체가 문서 역할을 하며, 코드 리뷰를 통해 인프라 변경 사항을 검토할 수 있습니다.
- 수동 작업 없이 코드 실행만으로 인프라 구축을 자동화할 수 있습니다.
- 코드를 재사용할 수 있어 비슷한 인프라를 구축할 때 시간을 절약할 수 있습니다.
단점
- 다양한 도구의 사용법을 익혀야 하기 때문에 러닝 커브가 발생할 수 있습니다.
- 인프라의 상태 관리가 복잡할 수 있습니다.
- 인프라 변경 시 문제가 발생했을 때 디버깅이 어려울 수 있습니다.
핵심 정리
IaC는 인프라를 코드로 관리해 일관성과 운영 효율성을 높이는 방법입니다.
선언적 방식은 최종 상태를, 명령형 방식은 수행 절차를 정의한다는 차이가 있으며, Terraform과 같은 선언적 도구는 State로 현재 상태를 추적해 멱등성을 보장합니다.