다시 선택하기

IaC

IaC (Infrastructure as Code) 란?

Infrastructure as Code의 약자로, 인프라를 코드로 관리하는 것이다.

동일한 인프라 재사용에 용이하며, 수작업이 없어 빠른 자동화가 가능하다.




선언형 & 명령형

IaC 도구는 접근 방식에 따라 선언형과 명령형이 존재한다.

  • 선언형 : 구성하려는 최종 리소스와 설정을 선언해서 생성, 수정, 삭제
  • 명령형 : CLI를 통한 작업으로서 옵션에 따라 원하는 대로 생성, 수정 삭제

선언형과 명령어 IaC 도구의 예시는 다음과 같다.

AWS CDK (선언형)

Cloud Development Kit의 약자로, 프로그래밍 언어들을 통한 정의로 IaC를 더 쉽고 효과적으로 할 수 있도록 도와주는 툴

AWS CLI (명령형)

명령어를 입력해 AWS 리소스를 직접 조작하는 명령형 도구


Terraform (선언형)

HCL(HashiCorp Configuration Language)이라는 선언형 문법을 통해 인프라를 프로비저닝하는 언어

Ansible(명령형)

여러 서버에 원하는 작업을 순서대로 실행(명령)하는 자동화 도구


선언형 언어를 사용하는 경우가 많은데, 이는 명령형 언어의 경우 현재의 상황을 반영하지 않는다는 단점이 존재하기 때문이다.




DevOps에 IaC가 필요한 이유

  • 일관성과 자동화 : 코드로서 동일한 환경을 재현 가능하고 일관되게 보장
  • 신속성 : 개발환경부터 프로덕션까지 동일한 형태로 빠르게 프로비저닝
  • 효율성과 확장성 : 코드로 관리되기 때문에 여러 번 고칠 필요가 없고, 쉽게 확장 가능
  • 투명성 : Git 등의 환경에서 코드를 공유하고 변경하기 때문에 변경사항을 투명하게 검토할 수 있게 되어 히스토리 파악에 용이