뭐라도 끄적이는 BLOG

IaC (Infrastructure as Code) 본문

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로 처리하고 개발자는 스크립트를 실행하여 인프라를 준비할 수 있습니다.
  • 인프라 준비를 기다리는 동안 애플리케이션 배포를 보류할 필요가 없으며, 시스템 관리자는 시간이 많이 소요되는 수동 프로세스를 관리하지 않아도 됩니다.

 

반응형