Offcanvas

개발자 / 서버 / 클라우드

인프라 자동화 접근법··· ‘코드형 인프라(IaC)’란?

2021.12.16 Scott Carey  |  InfoWorld
컴퓨팅 인프라를 코드로 취급하는 것은 클라우드에서 소프트웨어를 프로비저닝하는 스마트하고 현대적인 방법이다. 여기서는 ‘코드형 인프라(IaC)’란 무엇인지 그리고 이것이 왜 좋은지를 살펴본다. 

점점 더 많은 기업이 클라우드로 이동하면서, 물리적 서버를 프로비저닝하고 구성하는 방법은 최신 소프트웨어를 구축하고 구현하는 방법과 관련성이 적어지고 있다. 

컴퓨팅 인프라가 보이지도 들리지도 않는 오늘날의 복잡한 소프트웨어 중심 세계에서 웹의 규모에 맞게 애플리케이션을 실행하려면 수동 구성이나 스크립트보다는 선언적 코드를 사용하여 인프라를 프로비저닝하고 관리할 수 있어야 한다.
 
ⓒGetty Images

코드형 인프라(IaC)의 역사 
시스템 관리자들은 1990년대부터 스크립트를 사용하여 인프라를 관리해 왔지만 IaC 관행은 2000년대 말까지 완전히 통합되지 않았다. 그리고 이때부터 데브옵스의 선구자 앤드류 클레이 세퍼, 셰프(Chef)의 공동 창업자 아담 제이콥, 퍼펫(Puppet)의 설립자 루크 케이니스 등이 이 용어를 사용하기 시작했다.

분산 애플리케이션의 세계에서는 수동으로 조정되는 서버는 확장이 불가능했고, 스크립팅 자체로는 한계가 있었다. 따라서 클라우드 초기에는 인프라 프로비저닝을 자동화하는 것이 많은 선발 주자(first mover)의 핵심 니즈였다. 

오늘날에는 기본 인프라가 코드로 프로비저닝되는 일이 흔하다. 셰프, 퍼펫, 솔트스택, 앤서블 등 오늘날 이 분야에서 널리 사용되는 도구들 덕분이다.

하지만 기술은 빠르게 움직이고, 그 이후로 모든 것이 발전했다. 여기서는 IaC의 정의와 이것이 오늘날 최신 소프트웨어 개발 관행의 기반을 이루는 이유를 소개한다.

코드형 인프라(IaC)의 정의
‘코드형 인프라: 클라우드 시대의 역동적인 시스템(Infrastructure as Code: Dynamic Systems for the Cloud Age)’이라는 책에서 저자 키에프 모리스는 코드형 인프라가 3가지 핵심 관행으로 요약된다면서, “이는 ▲모든 것을 코드로 정의하고, ▲작업하면서 모든 것을 지속적으로 테스트 및 딜리버리하며, ▲작고 느슨하게 결합된 조각으로 시스템을 구축한다”라고 설명했다. 

이어서 모리스는 작동 정의(working definition) 측면에서 IaC가 “소프트웨어 개발 관행을 기반으로 한 인프라 자동화 접근법”이라고 말했다. 그는 “시스템과 해당 구성을 프로비저닝하고 변경하기 위한 일관되고 반복 가능한 루틴”이라고 강조했다. 

실제로 데브옵스 팀은 일반적으로 JSON 또는 YAML 등의 잘 문서화된 언어를 사용하여 환경 설명과 구성 모델 버전을 변경할 수 있다. 해당 환경이 구성되면 대상이 아닌 소스를 변경할 수 있으므로 훨씬 더 큰 규모의 인프라를 안전하고 정기적으로 변경할 수 있다.

‘코드형 인프라(IaC)’와 ‘데브옵스’가 만나는 지점 
초기 구성 및 후속 변경을 자동화하는 방법으로써 IaC는 소프트웨어를 빠르게 그리고 자주 배포하기 위해 개발자와 운영자가 협력하는 데브옵스 관행의 핵심 부분이다. 

IaC 도구는 인프라 구축을 자동화하고 버전화해 애플리케이션 개발자가 가장 잘 하는 일에 집중할 수 있도록 하고, 시스템 관리자가 수동 프로세스로 고생하지 않도록 한다. 

코드를 사용해 인프라를 프로비저닝하고 유지 관리하면 개발자와 운영자가 소프트웨어 개발 라이프사이클에 더 가까이 있을 수 있고, 운영에 소프트웨어 개발 원칙, 명확성, 반복성을 주입할 수 있다. 자동화 및 협업이 데브옵스 관행의 핵심 신조가 되면서 IaC 도구는 팀으로 하여금 효과적으로 협력하는 방법에 관한 중심 허브도 됐다. 

이점  
IaC의 주요 이점은 수동 프로세스에서 벗어나 자동화가 데브옵스 팀에 제공하는 자유로움에 달려 있다. 따라서 (이를 통해) 어느 정도의 비용 절감을 얻을 수 있으며, 데브옵스 팀이 애플리케이션에 변경사항을 안전하게 전달할 수 있는 속도도 높일 수 있다.

심플 스레드(Simple Thread)의 공동 창업자 저스틴 이더레지는 지난 2020년 블로그에 “IaC는 복구할 수 없는 상태에 처하게 될 두려움 없이 변경할 수 있는 자유를 준다. 또 환경이 어떻게 지금처럼 됐는지 더욱더 잘 이해할 수 있기 때문에 필요한 변경을 자신 있게 수행할 수 있다”라고 전했다. 

모리스가 저서에서 밝힌 기존 프로비저닝 방법에 비해 IaC가 가지는 주요 장점 7가지를 다음과 같이 간략히 정리했다. 

• IT 인프라를 신속한 가치 전달을 위한 조력자로 활용할 수 있다. 
• 인프라 변경에 따르는 리소스 및 위험이 감소한다.  
• 인프라 사용자가 필요할 때 필요한 리소스를 확보할 수 있다. 
• 개발 및 운영 전반에 걸쳐 공통의 도구를 제공할 수 있다.  
• 신뢰할 수 있고, 안정적이며, 비용 효율적인 시스템을 구축할 수 있다.  
• 거버넌스, 보안, 컴플라이언스 통제를 가시화할 수 있다.  
• 문제 및 장애 해결 속도가 향상된다. 


코드형 인프라(IaC) 도구 
IaC를 구축하는 데 필요한 도구는 크게 두 가지로 나뉜다. 구성 오케스트레이션과 구성 관리다. 가장 인기 있는 오케스트레이션 도구는 AWS 클라우드포메이션(AWS CloudFormation), 구글 클라우드 배포 관리자(Google Cloud Deployment Manager), 해시코프 테라폼(HashiCorp Terraform), 마이크로소프트 애저 리소스 관리자(Microsoft Azure Resource Manager) 등으로, 이는 개발자가 인프라 배포를 다양하게 자동화할 수 있도록 지원한다. 

구성 관리 분야에서 앤서블, 셰프, 퍼펫, 솔트스택 등의 서드파티 도구는 가상 서버 환경의 빌드를 구성, 저장, 자동화하는 데 여전히 널리 사용되는 방식이지만 컨테이너 이미지에 도커(Docker)를 사용하는 개발자도 많다. 

앤서블, 셰프, 퍼펫, 솔트스택 등의 도구는 이미 존재하는 인프라의 구성 관리에 중점을 두는 반면, 테라폼 등의 프로비저닝 도구는 해당 인프라 계층을 추상화하기 때문에 이러한 도구 중 다수를 함께 사용할 수 있다. 
 
코드형 인프라(IaC) 시작하기 
IaC 채택은 클라우드 및 데브옵스 관행을 향한 광범위한 조직적 변화의 일부다. 이러한 변화가 겁날 수 있지만 IaC 구현은 소프트웨어 개발 및 실행 접근법을 현대화하는 데 있어 매우 중요하다. 

이더레지는 “IaC로 변경하는데 다소 시간이 오래 걸릴 수 있다”라면서, “하지만 이는 속도를 높이기 위해 속도를 줄여야 하는 상황이라고 할 수 있다. 스크립트를 통해 변경하면 운영이 중단됐을 때 혹은 문제를 해결할 때 확실히 수많은 시간을 절약할 수 있다. 또 운영 환경에서 업데이트를 바로 실행하는 대신 테스트 환경에서 변경사항을 테스트할 수 있기 때문에 변경에 훨씬 더 확신을 가질 수 있다. 소규모 환경에서도 엄청난 성과를 거둘 수 있다”라고 전했다. 

또한 모리스는 다음과 같이 말했다. “인프라 자동화에는 노력이 따른다. 특히 어떻게 하는지 알아야 할 때 더욱더 그러하다. 하지만 그렇게 하면(자동화하면) 첫 시스템 구축부터 시작해 변경사항 적용까지 다양한 영역에서 도움이 된다. ciokr@idg.co.kr

 
추천 테크라이브러리

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.