DevOps의 기본 원칙 : “인프라를 애플리케이션 코드와 동일한 방식으로 다룬다.”
IaC(Infrastructure as Code)
인프라를 콘솔을 통해 수동으로 구성하는 대신 정의된 형식(JSON, YAML 등) 과 구문(Syntax)을 사용하여 텍스트 파일 로 인프라를 프로비저닝하고 관리하는 방식
정해진 규칙에 따라 작성하지 않으면 리소스가 생성되지 않으므로, 인프라의 정합성(Consistency)을 강제할 수 있음
IaC의 핵심 가치(왜 코드로 관리해야 하는가?)
- 버전 관리(Version Control) : 인프라의 모든 변경 사항(
누가, 언제, 무엇을, 왜)을 소스제어 시스템에 기록 ▶ 버그 수정 뿐 아니라, 이전의 정상 상태로 빠르게 되돌리는(Rollback) 토대로 작용
- 표준화 및 자동화 : 사람의 수작업으로 발생하는 실수 제거 및 동일한 템플릿 사용으로 인해 각 작업자의 환경에 대한 영향 최소화
- 가시성 및 협업 : 인프라가 텍스트 파일로 존재하여 팀원 누구나 코드를 보고 인프라 구성을 파악하고 코드 리뷰(Pull Request)를 통해 변경 사항 검증 가능
기술적 특징
- 선언적(Declarative) 관리 :
어떻게가 아닌 무엇에 대해 정의 ▶ 인프라가 해당 상태를 벗어나면 IaC 도구가 자동으로 수정
- 반복 가능성(Repeatability) : 한 번 작성한 코드는 수천 번을 실행해도 항상 동일한 결과
- CI/CD 통합 : 인프라 구성도 애플리케싱션 빌드/배포 과정과 통합하여, 코드 커밋 한 번으로 인프라와 애플리케이션이 동시에 배포되는 환경 구축 가능