코드형 인프라스트럭처
IT 위키
더 많은 작업
- IaC; Infrastructure as Code; 코드형 인프라
- 서버, 네트워크, 저장소 같은 인프라를 사람이 콘솔에서 직접 만들지 않고 코드로 기술해 자동으로 만들고 바꾸는 방식
수작업으로 인프라를 구성하면 같은 절차를 되풀이해도 결과가 조금씩 달라진다. 이렇게 환경마다 설정이 미묘하게 어긋나는 것을 구성 드리프트라 하고, 개발 환경에서는 되는데 운영에서는 안 되는 문제의 흔한 원인이다. 인프라를 코드로 두면 형상 관리 도구로 이력을 남기고 코드 리뷰를 거칠 수 있다.
- 버전 관리 — 인프라 변경도 형상 관리 대상이 된다. 누가 언제 무엇을 바꿨는지 남고 되돌릴 수 있다
- 멱등성(Idempotence) — 같은 코드를 여러 번 적용해도 결과 상태가 같다.
"만들어라"가 아니라 "이런 상태여야 한다"를 기술하는 선언형 방식이 이를 가능하게 한다
- 재현성 — 개발·검증·운영에 같은 코드를 적용해 동일한 환경을 만든다
- 불변 인프라 — 고쳐 쓰지 않고 새로 만들어 교체한다
- 선언형(Declarative) — 원하는 최종 상태를 적으면 도구가 현재 상태와 비교해 차이만 적용한다. Terraform 이 대표적이다
- 명령형(Imperative) — 수행할 절차를 순서대로 적는다. 셸 스크립트에 가깝다
- 인프라 프로비저닝 — Terraform, AWS CloudFormation
- 구성 관리 — Ansible, Chef, Puppet
- 컨테이너 오케스트레이션 — 쿠버네티스 매니페스트