[IaC] Infrastructure as code (IaC) | Terraform, AWS Cloudformation, AWS CDK, Ansible, Chef

dyomi·2024년 9월 16일

Infrastructure as code, IaC란?

코드형 인프라는 인프라스트럭처를 코드로 정의하고 관리하는 방식을 의미한다.

모든 애플리케이션 환경에는 운영체제, 데이터베이스 연결, 스토리지 등의 많은 인프라 구성 요소가 필요하다. 이러한 인프라 관리는 수동으로 작업하면 시간이 많이 걸리고 오류가 발생하기 쉽다. 하지만, 코드형 인프라는 인프라 관리를 코드로 자동화해서 환경을 생성하기 때문에 빠르게 환경을 구축하고, 오류를 줄일 수 있다. 또한, 동일한 환경을 다른 위치의 다른 시스템에 쉽게 배포가 가능하디.

선언적 IaC와 명령형 IaC

보통 선언적 IaC와 명령형 IaC로 구분되는데, 선언적 IaC는 개발자가 원하는 시스템의 최종 상태를 구성하는 리소스와 설정을 말하며, 명령적 IaC는 원하는 시스템과 실행 상태에 도달하는 모든 단계를 설명하는 것을 말한다.

필요한 구성 요소와 설정을 알고 있으면 선언적 IaC를 쉽게 사용할 수 있고, 명령적 IaC는 선언적 IaC만큼 간단하지 않지만, 복잡한 인프라 배포나 이벤트 순서가 중요한 경우 필요할 수 있다.

주요 IaC도구로는 클라우드 인프라를 코드로 정의할 수 있는 Terraform과 AWS 전용 IaC 도구인 AWS CloudFormation, AWS 리소스를 프로그래밍 언어로 정의할 수 있는 AWS CDK, 그외 Ansible, Chef 등이 있다.

IaC도구별 차이

Ansible이나 Chef 같은 도구들은 서버가 이미 설치된 상태에서 추가적인 설정 작업을 자동화하는 데 주로 사용되지만, 서버 생성(프로비저닝) 작업도 가능하다.

반면, Terraform은 클라우드 환경에서 서버 생성부터 네트워크 설정, 사용자 관리 등 인프라 전반을 코드로 정의하고 관리할 수 있는 도구로, 프로젝트에 필요한 클라우드 인프라를 자동으로 구축하고 관리할 수 있습니다.



🌟 참고 자료
코드형 인프라란 무엇인가요?

profile
기록하는 습관

0개의 댓글