Learning
토픽 25 / 192·애자일과 DevOps

IaC (Infrastructure as Code)

IaC (Infrastructure as Code)

인프라 구성(서버, 네트워크, 스토리지)을 코드로 정의하고 버전 관리하여 자동 프로비저닝하는 방법론

접근 방식

  • 선언적(Declarative): 최종 상태를 정의, 도구가 현재→목표 상태 변환. Terraform, CloudFormation
  • 명령적(Imperative): 수행 절차를 순서대로 기술. Ansible(절차적 측면), Pulumi

주요 도구

  • Terraform: 멀티클라우드, HCL 언어, 상태 파일 관리, Plan/Apply
  • Ansible: 에이전트리스(SSH), YAML 플레이북, 구성 관리 + 배포
  • Pulumi: 범용 프로그래밍 언어(Python, TS) 사용, Terraform 대안

장점: 재현성(동일 환경), 버전 관리, 자동화, 드리프트 감지

단점: 학습 곡선, 상태 관리 복잡, 시크릿 관리 필요

비교: Terraform(선언적/멀티클라우드) vs Ansible(명령적/구성관리) vs Pulumi(범용언어)

연관: DevOps, CI/CD, 클라우드, 컨테이너