IaC(Infra as Code)란?
코드를 사용하여 인프라의 생성, 변경, 삭제, 모니터링 등을 자동화 할 수 있는 기술로 서버나 네트워크 같은 컴퓨터 시스템을 자동으로 설정하기 위해 소스코드나 파일을 사용하여 설명하고 관리하는 것
기존에는 서버를 구축하기 위해서는 정해진 절차를 따라야 했지만, 이는 전문적인 지식이 필요하고 대량의 서버를 구축하는 데 많은 시간이 걸렸다.
→ 하지만 Iac를 사용하면 이 작업을 프로그램으로 자동화하여 누구나 실수 없이 서버를 구축할 수 있게 된다.
💡 요약하자면, IaC를 사용하면 인프라를 쉽고 빠르게 설정하고 관리할 수 있고 코드를 통해 인프라를 자동으로 구축하여 변경할 수 있으므로 전문 지식이 없어도 인프라를 구축하고 관리할 수 있다!
IaC를 사용하는 이유
- 빠르고 쉬운 시스템 구축
- IaC를 사용하면 설계도를 작성하고 실행함으로써 시스템을 빠르게 만들 수 있다.
- 코드를 통해 자동화되기 때문에 일일히 수동으로 설정할 필요가 없다.
- 일관성과 정확성
- 설계도에 따라 자동으로 서버가 생성되기 때문에 일관성을 유지할 수 있다.
- 이는 실수를 줄이고 일관성 있는 서버 환경을 유지할 수 있는 장점을 제공하며, 사람의 실수로 인한 오류를 방지할 수 있다.
- 변경 추적과 롤백
- 각 서버의 상태 및 구성 변경 내역을 기록하고 관리할 수 있다.
- 이는 문제 발생 시 쉽게 롤백할 수 있고, 변경 이력을 추적하고 관리함으로써 시스템의 안정성과 신뢰성을 향상시킬 수 있다.
- 협업과 공유
- 코드기반으로 시스템을 구축하므로, 팀원들은 코드 저장소를 통해 코드를 공유하고 관리할 수 있다.
IaC에 대한 두가지 접근 방식
IaC에 대한 접근방식에는 두가지 방식이 있다
선언적 접근 방식
- 필요한 리소스와 리소스의 속성 등 바람직한 시스템 상태를 정의하면 IaC 툴이 바람직한 상태로 구성해준다.
- 시스템 오브젝트의 현재 상태 목록을 유지하며, 이를 통해 인프라를 더 쉽게 관리할 수 있다.
- 명령적 방식보다 멱등성이 뛰어남.
명령적 접근 방식
- 바람직한 구성을 얻기 위한 특정 명령을 정의하고, 정의된 명령을 올바른 순서로 실행해야 한다.
- 명령적 도구 사용시, 사용자는 자동화 플랫폼에 수행할 작업을 지시하기 위해서 충분한 지식을 갖추고 있어야함.
선언적 접근 방식 vs 명령적 접근 방식
선언적 방식은 최종 솔루션 상태를 정의하고 자동화 플랫폼이 이 상태를 달성하는 방식이고
명령적 방식은 원하는 인프라를 갖추기 위해서 단계적으로 명령을 내리는 방식이다.
IaC의 장점
- 비용절감
- 배포속도 향상
- 오류감소
- 인프라 일관성 향상
- 구성 변동 제거
- 코드로써의 장점을 가짐(작성 용이성, 재사용성, 유지보수)