- IaC(Infrastructure as Code)란 네트워크, 로드밸런서, 저장소, 서버 등의 인프라 자원을 수동 설정이 아닌 코드를 이용하여 프로비저닝하고 관리하는 것을 뜻한다. 대표적인 IaC도구로 Terrform, CloudFormation, Pulumi, Azure ARM Template 등이 있다. 주로 형상관리와 비교되기도 한다.
- 형상관리(Configuration Management)란 서버 운영체제 상에서 필요한 소프트웨어를 설치하고 원하는 설정으로 관리하는 것으로 CaC(Configuration as Code)라고도 불린다. 대표적인 형상관리 도구로 Ansible, Puppet, Chef, Salt Stack 등이 있다.
- 현재는 IaC와 형상관리간 엄청나게 큰 차이는 없다. 원래는 Terraform 같은 IaC 도구는 원래 인프라 관리를 코드하기 위해 나온 것이고, Ansible같은 형상관리 도구는 운영체제 상에 필요한 설정들을 코드로 관리하기 위해 나온 것이다. 하지만 여러 add-on 등이 추가되고 기능 개선이 되면서 비슷한 형상을 띄게 되었다. 두 가지 모두 유사한 기능을 할 수 있지만, 문제를 해결하고자 하는 도메인이 다르다고 생각하면 될 것 같다.
- 인프라를 코드로 관리를 하는 것은 휴먼 에러 방지, 재사용성, 일관성에서 이점이 있다. 또한 소프트웨어 개발 처럼 버전 관리 시스템(VCS)를 활용할 수 있어서 코드리뷰, 버전관리, 협업 등을 수행할 수 있다.
- 인프라 설정에는 선언형 설정(Declarative Configuration)과 절차형 설정(Imperative Configuration)이 있다. 선언형 설정은 말 그대로 선언으로 인프라 정의가 되는 것이고, 절차형 설정은 패키지 업데이트 -> nginx 설치 -> 방화벽 설정과 같이 순차적으로 명령어를 수행해야 하는 것이다. Terraform이 선언형 설정을 사용하는 대표적인 예이고 Ansible, 쉘 스크립트 등이 선언형 설정의 대표적인 예이다.
ref)
https://www.linkedin.com/pulse/qa-configuration-management-tools-vs-infrastructure-code-jenkins
'IaC' 카테고리의 다른 글
코드를 통한 인프라 관리 #4 (0) | 2023.06.01 |
---|---|
코드를 통한 인프라 관리 #3 (0) | 2023.05.31 |
코드를 통한 인프라 관리 #2 (0) | 2023.05.27 |