로그인 / 등록 Account

자동화

코드형 인프라(IaC)란?

Jump to section

코드형 인프라(Infrastructure as Code, IaC)는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말합니다.

IaC를 사용하면 인프라 사양을 담은 구성 파일이 생성되므로 구성을 편집하고 배포하기가 더 쉬워집니다. 또한 IaC는 매번 동일한 환경을 프로비저닝하도록 보장합니다.

IaC는 구성 사양을 코드화하고 문서화함으로써 구성 관리를 지원하며, 따라서 구성 변경 사항을 문서화하지 않고 임시로 변경하는 일을 막을 수 있습니다.

버전 제어는 IaC의 중요한 부분입니다. 다른 소프트웨어 소스 코드 파일과 마찬가지로 구성 파일도 소스 제어가 필요합니다. 

코드로 인프라를 배포한다는 것은 인프라를 모듈식 구성 요소로 분할하고 자동화를 통해 다양한 방식으로 결합할 수 있다는 뜻이기도 합니다.

 

IaC로 인프라 프로비저닝을 자동화하면 애플리케이션을 개발하거나 배포할 때마다 개발자가 직접 서버, 운영 체제, 스토리지, 기타 인프라 구성 요소를 수동으로 프로비저닝하고 관리할 필요가 없어집니다. 

인프라를 코드화하여 템플릿을 만들고 프로비저닝할 때 이 템플릿을 사용하면 됩니다. 이러한 작업은 수동으로 진행할 수도 있고 Red Hat Ansible Automation Platform과 같은 자동화 툴을 사용할 수도 있습니다. 

Ansible Automation Platform에서는 플레이북을 사용하여 원하는 인프라 상태를 설명하고, 그런 다음 툴을 사용하여 프로비저닝할 수 있습니다. 또한 구성 관리에도 Ansible Automation Platform을 사용해 시스템을 원하는 상태로 유지관리할 수 있습니다.

 

IaC에 대한 선언적 접근과 명령형 접근 방식 비교

IaC에 대한 접근 방식에는 선언적 방식과 명령형 방식 두 가지가 있습니다. 

선언적 접근 방식에서는 필요한 리소스와 리소스의 속성 등 바람직한 시스템 상태를 정의하면 IaC 툴이 바람직한 상태로 구성해 줍니다. 

또한 선언적 접근 방식에서는 시스템 오브젝트의 현재 상태 목록을 유지하며, 이를 통해 인프라를 더 쉽게 관리할 수 있습니다.

한편 명령적 접근 방식에서는 바람직한 구성을 얻기 위한 특정 명령을 정의하며, 정의된 명령을 올바른 순서로 실행해야 합니다. 

많은 IaC 툴이 선언적 접근 방식에 따라 원하는 인프라를 자동으로 프로비저닝합니다. 원하는 상태를 변경하면 선언적 IaC 툴은 그러한 변경 사항을 적용합니다. 명령형 접근 방식의 툴을 사용하려면 변경 사항을 어떻게 적용하는지 이해해야 합니다.

보통 IaC 툴은 두 가지 방식을 모두 사용하지만, 둘 중 하나를 더 선호하는 경향이 있습니다.

 

IaC의 이점

원래 인프라 프로비저닝은 시간과 비용이 많이 드는 수동 프로세스였습니다. 하지만 이제 데이터 센터의 물리적 하드웨어(조직에서 여전히 물리적 하드웨어를 사용할 수도 있음)가 아니라 가상화컨테이너, 클라우드 컴퓨팅을 이용하여 인프라 관리를 하게 되었습니다. 

클라우드 컴퓨팅이 등장하면서 인프라 구성 요소의 수가 늘어났고, 날마다 더 많은 애플리케이션이 프로덕션 환경에 릴리스되고 있습니다. 이에 따라 더 잦은 빈도로 가동하고, 중지하고, 확장할 수 있는 인프라가 필요해졌습니다. IaC 이용 사례를 확립하지 않으면 현재 인프라의 규모를 관리하기가 갈수록 어려워질 것입니다.

조직은 IaC를 이용해 IT 인프라 요구 사항을 관리함과 동시에 일관성을 높이고 오류 및 수동 구성을 줄일 수 있습니다.

이점:

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

IaC 구현에 서버 자동화 및 구성 관리 툴을 사용할 수 있는 경우가 많습니다. IaC에 특화된 솔루션도 있습니다. 

몇 가지 널리 사용되는 툴을 소개합니다.

  • Chef
  • Puppet
  • Red Hat Ansible Automation Platform
  • Saltstack
  • Terraform 
  • AWS CloudFormation

운영 체제 및 네트워크 장치를 프로비저닝하고, 애플리케이션을 배포하고, 구성을 관리하기 위해 Ansible을 사용하는 방법을 알아보세요.

 

IaC가 DevOps에 중요한 이유

IaC는 DevOps 사례 및 지속적 통합/지속적 제공(CI/CD)에서 중요한 부분을 차지합니다. 개발자가 하던 프로비저닝 작업을 대부분 IaC로 처리하고 개발자는 스크립트를 실행하여 인프라를 준비할 수 있습니다.  

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

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

환경을 자동화하려면 환경에 일관성이 있어야 합니다. 개발 팀의 애플리케이션 배포 또는 환경 구성 방식이 운영 팀의 배포 및 구성 방식과 다른 경우 애플리케이션 배포 자동화는 효과가 없습니다.

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

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

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

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

DevOps 모범 사례는 IaC 내 인프라에도 적용됩니다. 소프트웨어 개발 과정에서 애플리케이션과 동일한 CI/CD 파이프라인을 인프라에도 적용함으로써 동일한 테스트 및 버전 제어를 인프라 코드에 반영할 수 있습니다.

 

Red Hat의 자동화를 선택해야 하는 이유

전사적 자동화 접근 방식을 통해 IT 프로세스는 물론 전체 기술, 팀, 조직까지 자동화할 수 있습니다. 

Red Hat Ansible Automation Platform에는 플레이북, 시각적 대시보드, 분석 등 전사적 자동화를 구현하는 데 필요한 모든 툴이 포함되어 있습니다.

YAML로 작성된 Ansible Playbook에는 바람직한 시스템 상태가 기술되어 있습니다. 일반적으로 소스 제어를 통해 이러한 상태를 유지하지만 Red Hat Ansible Automation Platform은 시스템의 현재 상태와 관계없이 바람직한 상태로 만들어 줍니다. 

Ansible Automation Platform을 이용해 설치, 업그레이드, 일상적인 관리를 안정적으로 반복할 수 있습니다.

또한, Red Hat Ansible Automation Platform은 2020년 3분기 Forrester Wave™: 인프라 자동화 플랫폼 부문에서 Forrester Research로부터 리더로 선정된 제품입니다.

효과적인 자동화 솔루션으로 새로운 애플리케이션과 서비스를 더 신속하게 배포하고, IT 인프라를 더 효율적으로 관리하고, 애플리케이션 개발의 생산성을 높여 보세요.

자동화를 위해 필요한 플랫폼

Red Hat Ansible Automation Platform

대규모 IT 자동화를 구축할 수 있는 간편한 에이전트리스 플랫폼입니다. 시각적 대시보드, 역할 기반 액세스 제어 등을 통해 IT 인프라를 중앙에서 관리하고 제어합니다.

자동화의 더 큰 가능성을 살펴보세요