IaC와 Terraform
코드형 인프라 Infrastructure as code (IaC)는 영문 그대로 ‘코드로서의 인프라’ 의미를 가지고 있습니다.
콘솔에서 UI를 통해 조작하는것이 아닌 코드로 대상을 관리합니다.
인프라 자동화와 성숙도
- 매뉴얼
- 인프라 관련 모든 정보와 구성 ,변경, 기존 아키텍처에 대한 모든 내용을 문서로 관리
- 현재도 엑셀 시트를 이용해서 IP, ID, Service등에 대해 관리하는 곳 존재
- 즉시 확인 가능하지만 실제 작업을 위한 명령어와 구성 파일은 별도로 준비
- 스크립트
- 반복되는 작업은 작업자가 스크립트로 작성하고 경험적인 노하우를 통해 스크립트를 작성
- 한 번 잘 만들면 편함
- 코드 양이 많아지면 고려사항이 많아짐
- 가상 머신(VM)
- 가상화 솔루션을 통해 이미지 템플릿화 가능해짐
- 필요한 패키지와 솔루션을 미리 설치하여 반복적으로 활용 가능
- 클라우드 인프라
- 클라우드 리소스를 원격으로 관리할 수 있음
- 빠른 인프라 시작과 구성이 가능하고 확장성이 뛰어남
- 컨테이너
- 운영체제를 가상화한 환경을 제공하기 때문에 빠른 서비스 개발을 할 수 있음
- 데브옵스 흐름에 맞춰서 빠르게 성장
- 컨테이너 관리와 배포를 위한 제어 시스템을 구축하고 모니터링에 쏟는 노력이 상다적으로 커지고 있음
- 전문 인력이 기술 기반에 비해 부족
IaC의 이해
코드를 통해 인프라를 관리한다는 것은 쉽게 변경하고 환경을 이해 그리고 반복적으로 동일한 상태를 만들 수 있다는 말입니다.
- 좋은 코드의 특징
-
정상적으로 동작
-
읽기 쉬움
-
모듈화됨
-
테스트가 가능함
-
우아함
-
관리가 쉬움
-
변경이 쉬움
-
간결
-
효율

IaC 도입의 긍정적인 측면
- 속도와 효율성
- 수동으로 작업업할 때보다 신속하고 불필요한 인프라 구성 방지
- 코드를 변경하여 적용하면 인프라도 변경하여 기존 방식보다 변경 속도가 빠름
- 버전 관리
- 코드 형태로 관리하기 때문에 VCS 툴과 연계 가능
- 변경 내용을 추적하고 이전 코드로 롤백하거나 비교 가능
- 협업
- 파일 형태로 되어 있어 쉬운 공유 가능하고 공동 작업을 위한 환경 구축 가능
- 재사용성
- 주요 코드 반복 또는 표준화된 구성을 패키징하면 매번 새로 코드를 구성하지 않고 기존 모듈로 배포 가능