인프라 관리 자동화, ‘IaC’로 구현한다

[아이티데일리] 기업들의 IT 인프라 환경이 복잡해지면서 인프라 관리를 자동화할 수 있도록 해주는 기술인 IaC(Infrastructure as Code)가 떠오르고 있다. 인프라 운영 관리 효율성을 높이고, 개발과 운영 프로세스를 자동화하는 등 유기적인 개발체계를 구현하기 위해 기업들이 IaC 솔루션에 관심을 갖기 시작한 것이다. 솔루션 공급 업체들 역시 이러한 시장 움직임에 적극 대응하고 있으며, 관련 시장 진출에 속도를 내고 있다. IaC 툴 가운데, 오픈소스인 ‘앤서블’이 특히 많은 관심을 받고 있다. IaC 기술과 솔루션에 대해 알아봤다.

[IT인프라 관리 자동화①] 파편화되고 있는 IT 인프라 환경
[IT인프라 관리 자동화②] 대세는 ‘앤서블’…‘테라폼’ 혼용 추세

인프라 관리 자동화 수요 증가

기업들의 IT 환경이 점차 파편화되고 있다. 새롭게 등장한 신기술 적용에 적합하다고 평가받는 클라우드 서비스, 활용 방법을 달리하며 등장한 멀티‧하이브리드 클라우드 등과 같은 인프라부터 그 위에서 구동되는 애플리케이션의 종류와 수가 늘어나면서 관리해야 할 접점이 빠르게 늘어나고 있다. 이런 상황에서 인프라 운영팀과 개발팀은 업무의 효율성을 높이고 보다 관리를 쉽게 하기 위해 관리 접점을 한 곳에 모으기 시작했다.

복잡해지는 기업의 IT 환경 (출처: 레드햇)
복잡해지는 기업의 IT 환경 (출처: 레드햇)

그러나 흩어진 인프라와 애플리케이션을 한 곳에서 관리한다는 것이 말처럼 쉬운 일이 아니다. 실제 기업의 IT 인프라 담당자들은 개발팀에서 요구하는 인프라 자원 배포 그리고 배포된 자원을 관리하는 기본적인 업무 이외에도 회사에서 운영 중인 각종 비즈니스 애플리케이션을 관리해야 하는 등 관리포인트가 늘어나고 있어 많은 어려움을 겪고 있다. 개발과 운영영역으로 나뉘어져 있는 기업들의 IT자원의 관리 포인트 증가는 앞으로도 계속 될 것이 확실시 돼 현재 상황에서는 해결하기 쉽지 않아 보인다.

이처럼 IT 인프라 환경이 복잡해지자 운영과 개발 영역을 결합하려는 움직임이 나타나고 있으며 이와 관련된 기술이 등장하고 있다. 바로 코딩 작업을 통해 인프라를 생성, 배치, 관리할 수 있는 기술인 IaC(Infrastructure as Code)다.

IaC를 이용할 경우 개발팀은 직접 작성한 코드로 인프라를 배포할 수 있고, 관리도 자동화할 수 있다. 짧아지는 애플리케이션 개발 주기에 적절히 대응할 수 있다는 것이다. IaC 솔루션을 활용해 게임 서비스를 개발‧운영한다고 가정할 경우, 주기가 짧은 게임 서비스를 빠르게 개발, 운영, 폐기할 수도 있어 변화하는 시장상황에 빠르게 대응할 수 있게 된다.

실제 개발팀은 게임에 필요한 인프라를 코드 작업으로 직접 배포할 수도 있고, 여러 대의 PC에 동일한 인프라를 한 번에 배포해 동시에 게임 개발 작업을 진행할 수도 있다. 게임 출시 후 인프라 관리도 간단하다. 게임이 흥행했을 경우 코드로 쉽게 인프라를 추가할 수 있고, 게임이 실패했을 경우 인프라를 빠르게 회수할 수도 있다. 물론 IaC 솔루션을 활용해 인프라를 자동으로 배포하고 회수하기 위해선 개발팀과 운영팀의 동시 참여가 반드시 필요하다.


인프라 설정부터 관리까지

IaC를 활용할 경우 개발팀은 인프라 설정에서 관리까지, 인프라 운영팀이 수행해야 하는 번거로운 작업을 쉽게 수행할 수 있다. 보통 개발자가 애플리케이션 개발을 위해 하는 첫 번째 작업은 운영팀과 협의해 인프라를 설치하는 것이다. 이 때 개발자는 개발에 필요한 인프라 자원을 운영팀에 요청한다. 운영팀은 서버, 라우팅 항목, 데이터베이스(DB) 구성 및 로드 밸런서를 일일이 개발 컴퓨터에 설치해야 한다.

IaC는 이러한 기존 개발환경이 갖는 일련의 프로세스를 간소화한다. IaC는 개발자에게 ▲IT 인프라 환경 자동 프로비저닝과 패치 자동화 ▲관리 용이성 ▲재해복구 환경 구축 등의 장점을 제공한다.

구체적으로 IaC는 먼저 IT 인프라 환경을 자동으로 배포해준다. 간단한 파일과 코드를 사용해 인프라 환경을 구축할 수 있다. 특히 부하 분산 검증을 비롯한 다양한 테스트 환경도 구축할 수 있다. 코드가 적힌 스크립트를 ‘깃(Git)’과 같은 저장소에 보관하는데, 이를 자동으로 불러내 테스트 환경을 배포할 수 있도록 한다. 일련의 테스트 환경 배포 과정을 대폭 단축시켜 작업을 최소화할 수 있도록 해주는 것이다.

코드로 배포된 인프라 수정 작업 역시 간편하게 할 수 있도록 해준다. IaC는 인프라에 대한 사양이 저장된 스크립트를 생성하기 때문에, 인프라를 구성하고 있는 정보를 코드 수정만으로 편집해 배포할 수 있다.

IaC는 인프라 규모에 제약이 없어 관리도 편리하다. 스크립트에 코드를 작성할 때 가상머신(VM)의 개수와 상관없이 필요한 만큼 생성할 수 있다. 인프라 사양이 저장된 구성요소를 세분화해 자동으로 결합할 수 있기 때문에, 개발자가 부분적으로 제어할 수도 있다. 특히 네트워크, 저장소, DB, 사용자 권한과 같이 인프라에 종속된 리소스를 쉽게 관리할 수 있다.

관리가 간편하다는 것은 혹시 모를 문제가 발생하더라도 빠른 대처가 가능하다는 의미이기도 하다. IaC는 기존 애플리케이션 인프라에 대한 구성 정보를 코드로 확인할 수 있기 때문에 문제가 발생하더라도 빠르게 조치를 취할 수 있다. 또 개발팀과 운영팀 모두가 스크립트를 검토할 수 있기 때문에 문제가 발생한 지점이 어느 곳인지 쉽게 확인이 가능하다. 어느 한 직원이 비즈니스에 타격을 주고자 인프라를 임의로 변경했다면, 인프라 구성정보가 담긴 스크립트에 변경한 내용이 드러나기 때문에 이를 빠르게 확인하고 해결할 수 있다는 것이다.

저작권자 © 아이티데일리 무단전재 및 재배포 금지