본문 바로가기
Study/Knowledge

[Infra] IaC의 개념과 종류 - 앤서블, Terraform,Puppet...

정의

인프라 구축도 이제 프로그래밍 시대가 되었다.

"프로그래밍형 인프라"라고도 하는 iac (Infrastructure as Code)는 인프라 구성을 마치 소프트웨어를 프로그래밍하는 것처럼 처리하는 방식이다.

결과적으로 애플리케이션을 작성하는 작업과 애플리케이션이 실행되는 환경을 구현하는 작업 사이의 경계가 모호해지기 시작했습니다.

애플리케이션은 자체적으로 VM(가상 시스템)을 생성하고 오케스트레이션하는 스크립트를 포함할 수 있습니다.

이는 클라우드 컴퓨팅의 기본적인 부분으로, DevOps에 반드시 필요한 요소입니다

장점

  • 비용 절감
  • 배포 속도 향상
  • 오류 감소 
  • 인프라 일관성 향상
  • 구성 변동 제거

Infrastructure as Code 는 가상 시스템에 대한 프로그래밍 방식의 관리를 지원하기 때문에

개별 하드웨어를 수동으로 구성하고 업데이트할 필요가 없어집니다.

이는 인프라에 "유연성”, 즉 반복성과 확장성을 부여하게 됩니다.

운영자 한 명이 동일한 코드를 사용하여 1대 또는 1,000대의 시스템을 구축하고 관리할 수 있습니다.

Infrastructure as Code는 빠른 속도, 비용 절감, 리스크 감소와 같은 장점을 제공합니다.

 

Infrastructure as Code라는 개념은 DevOps가 부상하게 된 토대가 되었습니다.

애플리케이션 실행을 위한 코드와 인프라 구성을 위한 코드 사이의 경계가 허물어짐에 따라

개발자운영 담당자의 공동 업무가 늘어나게 되었습니다.

 

iac 툴

 

 

IaC가 DevOps에 중요한 이유

IaC는 DevOps 사례 및 지속적 통합/지속적 제공(CI/CD)에서 중요한 부분을 차지합니다. 

개발자가 하던 프로비저닝(인프라 구축) 작업을 대부분 IaC로 처리하고 개발자는 스크립트를 실행하여 인프라를 준비할 수 있습니다.  

따라서 인프라 준비를 기다리는 동안 애플리케이션 배포를 보류할 필요가 없으며, 시스템 관리자는 시간이 많이 소요되는 수동 프로세스를 관리하지 않아도 됩니다. 

 

CI/CD는 통합 및 테스트에서 제공 및 배포에 이르는 애플리케이션 라이프사이클 전반에 걸쳐 지속적인 자동화와 지속적인 모니터링에 의존합니다. 

환경을 자동화하려면 환경에 일관성이 있어야 합니다.

개발 팀의 애플리케이션 배포 또는 환경 구성 방식이 운영 팀의 배포 및 구성 방식과 다른 경우 애플리케이션 배포 자동화는 효과가 없습니다.

DevOps 접근 방식을 통해 개발 팀과 운영 팀의 방식을 서로 일치시키면 오류, 수동 배포, 비일관성 문제가 줄어듭니다. 

두 팀이 동일한 설명에 따라 애플리케이션을 배포할 수 있으므로 IaC는 개발과 운영을 조율하는 데 도움이 되고, 따라서 DevOps 접근 방식을 지원합니다.

다시 말해 프로덕션 환경을 비롯한 모든 환경에서 동일한 배포 프로세스를 사용해야 합니다.

IaC는 사용될 때마다 동일한 환경을 생성합니다.

또한 IaC는 자동으로 다시 생성할 수 없고 고유한 구성을 지닌 개별 배포 환경을 유지관리할 필요가 없으므로 프로덕션 환경의 일관성이 보장됩니다.