Files
2nd/10_Wiki/Topics/Architecture/Infrastructure_as_Code.md
T

3.6 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, tags, raw_sources, last_reinforced, github_commit
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score tags raw_sources last_reinforced github_commit
P-REINFORCE-WIKI-DEV-IAC 코드형 인프라와 자동화된 자원 관리 (Infrastructure as Code) Unified verified
IaC
Terraform
코드형 인프라
테라폼
Ansible
자동화
A 1.0
Infrastructure
IaC
Terraform
Automation
DevOps
Datacollector_Export_2026-05-02
2026-05-02

코드형 인프라와 자동화된 자원 관리 (Infrastructure as Code)

1. 개요

코드형 인프라(IaC, Infrastructure as Code)는 서버, 네트워크, 데이터베이스 등 정보기술 인프라를 수동 설정 대신 읽기 쉬운 코드나 설정 파일을 통해 정의하고 관리하는 방식이다. 소프트웨어 개발의 버전 관리, 테스트, 지속적 통합(CI) 원칙을 인프라 영역에 이식하여 시스템 구성의 투명성과 재현성을 보장한다.

2. 주요 도구 및 분류

  • 선언적 방식 (Declarative): "무엇(What)"을 만들지 정의하면 도구가 현재 상태와 목표 상태를 비교하여 자동으로 구성 (예: Terraform, CloudFormation).
  • 명령적 방식 (Imperative): "어떻게(How)" 인프라를 구축할지 단계별 명령어를 나열 (예: AWS CLI, Shell Scripts).
  • 구성 관리 (Configuration Management): 이미 생성된 서버 내부의 소프트웨어 설치 및 설정을 관리 (예: Ansible, Chef, Puppet).
  • 인프라 프로비저닝 (Provisioning): 클라우드 리소스(VPC, EC2 등) 자체를 생성하고 관리 (예: Terraform, Pulumi).

3. 엔지니어링 가치

  • 재현성 (Reproducibility): 코드 한 줄로 개발, 테스트, 운영 환경을 100% 동일하게 복제할 수 있어 "환경 차이"로 인한 문제 해결.
  • 버전 관리 및 감사: 인프라 변경 이력이 Git에 남으므로, 누가 언제 어떤 자원을 수정했는지 추적 가능하며 필요 시 이전 상태로 즉시 롤백 가능.
  • 자동화 및 신속성: 수동 클릭 작업을 자동화하여 인프라 구축 시간을 며칠에서 몇 분 단위로 단축하고 인적 오류(Human error) 제거.
  • 가시성 확보: 텍스트 파일 형태의 코드가 곧 인프라 명세서가 되어, 복잡한 인프라 구조를 쉽게 파악하고 공유 가능.

4. 트레이드오프 및 주의사항

  • 상태 관리의 어려움: Terraform의 state 파일과 같이 인프라의 현재 상태를 기록하는 데이터가 소실되거나 오염될 경우 복구가 까다로움.
  • 파괴적 변경의 리스크: 코드 한 줄의 실수가 운영 중인 주요 리소스를 삭제(Destroy)할 수 있으므로, 실행 전 plan 결과 확인 및 승인 절차 필수.
  • 초기 학습 비용: HCL(HashiCorp Configuration Language)이나 각 클라우드 제공자의 리소스 명세를 익히는 데 시간이 소요됨.

🧪 검증 상태 (Validation)

  • 정보 상태: 검증 완료 (Verified)
  • 출처 신뢰도: A
  • 검토 이유: 클라우드 리소스 관리의 수동 작업을 배제하고, 소프트웨어 엔지니어링 원칙을 인프라에 적용하여 시스템의 신뢰성과 운영 민첩성을 확보하기 위한 IaC 표준 정립.