IaC

오늘은 코드 기반 인프라, IaC(Infrastructure as Code)에 대해서 공유해 드리겠습니다.

기존 IT 환경에서 클라우드 환경으로 변화하면서 중요해진 개념 중 하나가 바로 IaC라는 생각이 듭니다.

기존 IT 환경에서는 서버를 증설하려면 서버 전문 업체에서 서버를 구매한 후 서버실에 서버를 추가하는 물리적인 프로세스가 있었기에 IT 인프라를 코드로서 관리하는 것은 쉽지 않았을 것입니다.

하지만, 클라우드 환경은 논리적인 구성이기에 이를 Terraform이나 CloudFormation과 같은 툴을 사용하여 코드 형태로 인프라를 구성할 수 있게 된 것입니다.

그리고 이런 방식으로 인프라를 구성함으로써 인프라 변경에 대해 증가하는 요구 사항을 충족시킬 수 있고, 확장 가능하고 추적 가능한 인프라의 관리가 가능해 지는 것입니다.

코드 기반 인프라(IaC)란?

코드 기반 인프라란 수동으로 작업하는 것 대신 코드를 통해 정의된 인프라를 프로비저닝하고 관리하는 것을 말합니다.

인프라가 코드로 정의되므로 원하는 인프라의 상태가 보장된 상태에서 구성을 쉽게 편집하고 배포할 수 있습니다. 그리고 기존의 인프라 구성을 쉽게 재활용할 수 있게 되는 것입니다.

그리고 코드 기반 인프라를 통해 다음도 가능합니다.

  • 인프라의 버전을 관리하여 쉽게 통합할 수 있고, 추적이 가능하며, 감사가 가능한 인프라 변경 사항을 생성할 수도 있습니다. 그리고 이것은 거버넌스에도 도움이 됩니다.
  • 인프라 관리에 광범위한 자동화를 도입할 수 있습니다.
  • 인프라의 수동 관리 부분을 줄이고 업무를 최적화함으로써 관리 효율성이 높아집니다.

코드 기반 인프라(IaC)의 장점?

코드 기반 인프라를 사용하게 되면 다음과 같은 장점들이 있습니다.

  • 조직 내 “섀도우 IT(Shadow IT)”를 줄이고 애플리케이션 개발과 동시에 수행이 가능하며 적시에 효율적인 인프라 변경이 가능합니다.
  • CI/CD 플랫폼과 직접 통합이 가능합니다.
  • 버전 관리가 가능한 인프라와 추적 가능한 설정 변경 관리가 가능합니다. 그리고 이를 통해 거버넌스 관리에 도움을 줄 수 있습니다.
  • 재사용 가능한 구성으로 인프라를 손쉽게 표준화할 수 있습니다.
  • 인프라의 효과적 관리 및 원하는 상태로의 인프라 구성이 가능합니다.
  • 관리 비용을 크게 늘리지 않고도 인프라 관리를 쉽게 확장할 수 있습니다. 그리고 IaC를 사용한 자동화를 통해 불필요한 수동 작업을 최소화할 수 있습니다.

* 섀도우 IT(Shadow IT): 기업 및 조직에서 공식적으로 허가받지 않았거나 관리되지 않은 다양한 IT 자산을 뜻함

코드 기반 인프라(IaC)용 툴!

IaC를 위한 툴 중에는 인프라 관리에서 구성 관리에 이르기까지, 오픈 소스 툴에서 플랫폼별 툴에 이르기까지 다양한 종류의 툴이 있습니다.

Terraform, Pulumi, AWS CloudFormation, Azure Resource Templates, Ansible, Chef, Puppet, CFEngine 등 말이죠.

여기서는 이런 툴 중에서 몇 가지만 소개해 드리겠습니다.

Terraform
Terraform(테라폼)은 HashiCorp에서 개발한 오픈 소스 툴입니다. AWS, Azure, GCP, Oracle Cloud, Alibaba Cloud, Kubernetes 및 Heroku와 같은 다양한 플랫폼에서 인프라 관리에 적합한 IaC 툴입니다.
플랫폼에 구애받지 않는 툴인 Terraform은 구성 전반에 걸쳐 원하는 상태를 보장하면서 다양한 플랫폼 및 공급자 전반에 걸쳐 인프라 프로비저닝 및 관리에 사용할 수 있습니다.

Ansible
Ansible은 인프라 프로비저닝, 관리와 SW 구축 및 배포의 자동화에 많이 사용되는 툴입니다. Ansible을 사용하여 어려운 수동 반복 작업을 자동화할 수 있고 오류에 덜 취약하게 할 수 있습니다.

Pulumi
Pulumi는 클라우드 인프라에서 리소스를 설계, 배포 및 관리하기 위한 오픈 소스 IaC 툴입니다.
AWS, Azure, Google Cloud, Kubernetes, phoenixNAP Bare Metal Cloud 및 OpenStack과 같은 수많은 퍼블릭, 프라이빗 및 하이브리드 클라우드 공급자를 지원합니다. 그리고 컨테이너, 클러스터 및 서버리스 기능을 포함한 최신 클라우드 구성 요소에도 사용됩니다.

Chef
Chef는 루비(Ruby)와 얼랭(Erlang)으로 작성된 형상 관리 툴이자 회사 이름이기도 합니다.
Chef는 오픈소스 시스템 통합 프레임워크로 다양한 설정 관리 툴을 제공하며 클라우드 기반 플랫폼들과 통합하여 자동으로 새로운 머신을 프로비저닝하고 구성할 수 있습니다.

Puppet
Puppet은 루비(Ruby)로 만들어진 형상 관리 툴입니다. 주로 설정, 관리, 배포, 오케스트레이션과 같은 작업에 사용됩니다.

CFEngine
CFEngine은 서버, 시스템, 사용자, 임베디드 네트워크 장치, 모바일 장치 및 시스템의 통합 관리를 포함하여 방대한 컴퓨터 시스템에 대한 자동화 구성을 제공하는 구성 관리 툴입니다.

AWS CloudFormation
AWS에 구축한 구성을 템플릿화하여 재사용하기 쉽게 해 주는 서비스입니다.

Azure Resource Manager Templates
Azure에 구축한 구성을 템플릿화하여 재사용하기 쉽게 해 주는 서비스입니다.

이런 IaC에 도움을 줄 수 있는 도구가 OpsNow에도 있습니다.

바로 “OpsNow Dev OS”입니다.

OpsNow Dev OS에 대해서는 아래의 링크를 참조하시기 바랍니다.

 단일 인터페이스 DevOps 플랫폼, OpsNow Dev OS

 

클라우드나 SaaS와 관련하여 다른 궁금한 점이 있으시면 언제든지 저희에게 문의해 주세요.

저희에게는 클라우드에 대한 다양한 정보와 경험, 그리고 도구가 있습니다.

 OpsNow에 문의하기