Infra
IaC (Infrastructure as Code)
Drawhale
2023. 6. 27. 10:03
IaC란
IaC는 인프라를 웹 인터페이스 및 대화형식의 도구를 사용해 수동적으로 인프라를 구성하는 것이 아닌, 시스템이 읽을 수 있는 인프라 정의 파일을 통해 인프라의 구성 관리 및 배포를 자동화 하는 것이다. IaC를 사용하면 버전화, 재사용 및 공유할 수 있는 리소스 구성을 정의하여 안전하고 일관되며 반복 가능한 방식으로 인프라를 구축, 변경 및 관리할 수 있다. 인프라는 물리적 하드웨어 뿐만 아니라 가상 컴퓨터, 클라우드 등 관련 리소스를 IaC를 통해 구성 관리 및 배포할 수 있다.
IaC는 폭발적으로 확장되는 컴퓨팅과 차세대 웹 프레임워크와 같은 새로운 기술을 구현하고 구성하는 어려움에 대한 해결책으로 발전하게 되었고, 기업들은 이런 기술을 통해 스케일링 및 확장문제도 해결할 수 있다.
IaC의 장점
- 비용절감: 사람의 노력적인 측면에서 인프라 관리를 수동적으로 하지 않음으로 다른 생상적인 작업에 노력을 집중할 수 있다.
- 빠른 속도: 인프라 구성 관리 및 배포를 자동화 함으로 신속한 실행을 가능하게 하고, 효율적으로 작업할 수 있는 가시성을 제공한다.
- 안정성: 수동으로 구성할 때와 같은 사람의 실수와 관련 위험을 제거할 수 있다.
- 코드화 및 버전 관리: 표준화된 포맷과 규칙으로 작성된 코드 문서를 통해 누구나 읽을 수 잇고 확인할 수 있다. 또한 코드는 변경 사항 이력을 남길 수 있어 추후 문제 발생 시 어떤 부분이 변경되어 발생한 문제인지 확인하기 쉽니다.
- 재사용성: 인프라를 코드화 하고 관련 리소스를 그룹 및 모듈화 해서 필요시 필요한 부분을 재사용할 수 있다.
IaC 종류
구성관리
- 물리(Baremetal)시스템, 가상 컴퓨터 및 클라우드 인스턴스 내에서 패키지 설치, 애플리케이션 구성, 운영체제 관련 구성 및 구성 변경을 관리하는 도구들이다.
- Ansible, Chef, Puppet, SaltStack등
배포
- 새로운 인프라 리소스를 배포하고 이미 배포된 인프라 리소스의 생명 주기를 관리하는 도구이다.
- AWS CloudFormation, OpenStack Heat, Terraform등
용어 정리
가변 인프라 / 불변 인프라
가변 인프라
- 여러 관리 대상 인프라가 독립적으로 관리되며 별도의 변경사항을 가지는 형태
불변 인프라
- 클라우드 인스턴스의 이미지나 컨테이너의 이미지와 같이 변하지 않는 이미지를 배포하는 것과 같이 인프라가 배포된 후 절대로 변하지 않는 인프라
절차적/ 선언적 언어
절차적 인어
- 원하는 최종 상태에 도달하기 위해 코드가 단계별로 정의되고 실행되는 형태
선언적 언어
- 최종적으로 원하는 형태를 정의만 하면 필요한 절차는 내부적으로 알아서 진행되는 형태
마스터 및 에이전트 유무
마스터
- 인프라의 정보와 구성 관리 및 배포를 위한 정보를 가지고 있음
- 장점: 중앙 집중화 된 관리 및 모니터링이 가능
- 단점: 추가적인 리소스의 필요, 마스터의 관리, 장애 등이 존재
에이전트
- 서버가 관리할 인프라에 에이전트 소프트웨어가 설치되어 있음
IaC와 DevOps
- IaC는 DevOps사례 및 CI/CD에서 중요한 부분을 차지합니다. 개발자가 하던 프로비저닝 작업을 대부분 IaC로 처리하고 개발자는 스크립트를 실행하여 인프라를 준비할 수 있습니다.
- 인프라 준비를 기다리는 동안 애플리케이션 배포를 보류할 필요가 없으며, 시스템 관리자는 시간이 많이 소요되는 수동 프로세스를 관리하지 않아도 됩니다.
반응형