최지웅 오픈소스컨설팅 이사


자동화는 IT 인프라가 복잡해지면서 등장한 오래된 과제이지만, 클라우드와 소프트웨어 정의 데이터센터(Software Defined Data Center)에서는 필수 요소가 되면서 자동화에 대한 중요성이 점점 더 커지고 있다. 자동화의 이점은 IT 서비스의 품질 향상과 운영 생산성부터 비용 절감과 컴플라이언스까지 광범위하지만, 자동화 환경은 솔루션 도입을 넘어서 적지 않은 기술적이고 조직적인 자원을 필요로 한다는 것이다.


가트너 발표에서도 올해 전세계 엔터프라이즈 소프트웨어 시장이 지난 해 2016년 5.3%의 성장률에서 올해 7.6%로 증가하면서 매서운 성장세를 나타낼 것이라고 전망했는데, 더 많은 기업이 소프트웨어 어플리케이션을 통해 디지털 비즈니스 채널로부터 수익을 창출하게 되면서,새로운 어플리케이션 및 기능을 더욱 신속하게 자동화할 필요가 있다고 언급하고 있다.



자동화의 의미


다양한 컨퍼런스 사례에서 나온 경우를 발표를 살펴보면 구글, 페이스북의 경우 엔지니어 한 명이 평균 20,000대의 서버를 관리한다고 발표하고 있는데 해당 엔지니어가 그 수많은 서버를 관리하는 것이 개별적으로 결코 이루어질 수 없을 것이다. 이러한 관리는 자동화를 기반으로 하고 있다고 보는 것이 맞을 것이다. 즉 자동화란 기반이 없으면, 실질적으로 클라우드 서비스를 제공하는 것 자체 가 불가능하기 때문에 클라우드 환경에서 자동화는 필수 요소이다.


또한 소프트웨어 정의 데이터센터(Software Defined Data Center)로 패러다임이 변화하면서 모든 인프라에 대한 소프트웨어 방식의 제어, 애플리케이션에 대한 지속적인 통합(Continuous Integration)과 배포(Continuous Deployment)에 대한 영역으로 자연스럽게 그 관심이 이동되고 있는 상황이다.


클라우드 자동화에 있어서 고려해야 할 사항은 다음과 같다.




  • 자동화할 인프라의 구성
  • 자동화 대상의 범위
  • 자동화를 위한 핵심 기술 세트
  • 자동화에 대한 구현

또한 자동화 대상에 따라 인프라, 빌드 배포, 백업 및 복구, 시스템 설정, 소프트웨어 구성, 자동 확장 등 다양한 영역에서 자동화에 대한 고려와 도입을 준비하고 있는 상태이다.


클라우드 환경의 시스템에 대한 라이프사이클에 있어서 고민해야 할 영역은 아래의 그림과 같다.




[그림 1] 데이터 센터 운영 관리 라이프 사이클


클라우드 데이터센터는 초기 설치, 시스템 구성, 소프트웨어 설치, 운영 패치, 설정 변경 등의 다양한 작업이 이루어지고, OS 설치부터 패치, 자동화 관리까지 다양한 영역에서 많은 작업이 진행된다. 요즘은 오픈소스 기반 자동화 배포 솔루션을 통해 데이터 센터 및 가상화 환경에서 운영되고 있는 시스템들을 단일화된 관리 시스템을 이용하여 효율적으로 관리 하는데 초점을 맞추고 있는 상태이다.


위와 같은 시스템에 대한 라이프사이클을 관리하기 위해서는 클라우드 컨트롤 서버, 배포, 패치, 소프트웨어 관리, 관제, ITSM, 인벤토리 등을 유기적으로 연계하는 오케스트레이션의 부분도 상당히 중요하다.




[그림 2] 클라우드 프로비저닝 구조


위의 그림에서 보여지는 바와 같이 핵심적으로 작동해야 하는 영역은 자동화 제어를 위한 오케스트레이션 영역과 각 시스템에 대한 설정을 포함하는 배포서버이다.


프라이빗 클라우드이든 퍼블릭 클라우드이든 비즈니스 환경에서 있어 빠른 IT 서비스 제공을 목표로 삼고 있지만, 실제 환경은 서버, 스토리지, 네트워크의 인프라 계층부터 가상화와 클라우드 플랫폼으로 이루어진 제어 계층, 그리고 마지막 관리 계층까지 너무도 많은 업체와 기술과 솔루션과 서비스가 엮여 있다


자동화를 위한 솔루션으로 IBM의 Tivoli, HPE CSA(Cloud Service Automation), BMC Server Automation 등의 상용 자동화 솔루션이 있으며, IaaS 인프라 서비스를 제공하는 Amazon AWS, Microsoft Azure, IBM Softlayer 등의 서비스에서는 자체적인 자동화 서비스를, 그리고 오픈소스 진영의 Ansible, Teraform, Chef, Puppet 등의 자동화를 위한 다양한 도구들이 존재한다.


현재 국내에서 가장 많은 관심을 가지고 있는 영역은 단연 Ansible 도구이다. 클라우드 환경하의 컨테이너 기반으로 아키텍처가 변화해 가면서 많은 기업과 엔지니어들이 자동화와 DevOps 기반으로 시스템을 구성할 수 있는 효과적인 솔루션을 찾게 되었으며, 다양한 자동화 도구들이 사용되고 있거나 개발되고 있는 상태이다.







자동화를 위한 도구


우선 본 편에서는 인프라스트럭처를 코드 수준에서 제어할 수 있는 가장 관심있는 자동화 도구를 살펴본다.



Ansible


Ansible은 회사 이름(Ansible inc)으로 Ansible이라는 이름의 오픈소스를 기반으로 Ansible tower를 판매하고 있었으며 2015년 10월에 레드햇에 인수되었다. Ansible tower 는 ansible을 쉽게 사용할 수 있도록 UI 버전과 LDAP을 지원하고 있다. Ansible provision 툴 은 현재 Atlassian, Twitter, VeriSign, EA, Evernote, Nasa, Gopro, rackspace, juniper, mapr 등 해외 유명 업체에서 사용하고 있다. ansible은 application과 시스템을 쉽게 배포할 수 있도록 한 간단한 IT 자동화 플랫폼이다. application을 배포, 업데이트할 때마다 매번 서버에 접속 해서 들어가서 스크립트를 실행하지 않아도 자동화된 형태의 언어로 agent 없는 리모트 환경에서 ssh를 통해 접근하여 작업할 수 있어 손쉽게 배울 수 있다는 장점도 가지고 있다.



Terraform


Terraform은 Cloud 를 포함한 다양한 리소스에 대한 생성, 변경 및 삭제 등에 대한 관리를 코드화 시키는 ‘Infrastructure as a Code’ 개념으로 인프라스트럭처 자동화를 위한 도구로 많이 사용되고 있다. 좀더 구체적으로 설명하자면, 클라우드 리소스의 양식이 되는 템플릿 코드를 만들고 그것을 사용하여 쉽게 Cloud 서버의 생성, 수정 및 삭제 등을 손쉽게 관리할 수 있는 도구이다.


Terraform은 Infrastructure as Code, Execution Plans, Resource Graph, Change Automation 와 같은 기능을 제공한다. 이 기능을 이용해서 인프라스트럭처를 관리할 수 있는데 사용할 수 있는 인프라를?Provider라고 부릅니다. Terraform이 지원하는 Provider는 베어메탈 서버, Amazon AWS, BitBucket, Chef, CloudFlare, Consul, DigitalOcean, Docker, GitHub, Google Cloud, Grafana, InfluxDB, Heroku, Microsoft Azure, MySQL, PostgreSQL 등 개발에서 보통 사용하는 솔루션을 프로비저닝의 대상으로 포함할 수 있다.


Terraform을 사용하면 서로 다른 Cloud를 하나의 툴을 사용하여 관리 가능하여, 다양한 클라우드 환경과 Bare Metal 모두를 하나의 툴로 관리 가능하다는 장점을 가지고 있다.


현재 인프라스트럭처 자동화에서 가장 많이 사용되고 있는 두 가지 솔루션에 이외에 기존의 자동화 도구인 Chef, Puppet, SaltStack에 대한 비교표는 아래의 그림과 같다.




[그림 3] 인프라스트럭처 자동화 도구 비교


* 출처: https://blog.gruntwork.io


클라우드 시대에 있어 자동화의 중요한 변화 중 하나는 개방성이다. 기존의 벤더의 상용 자동화 솔루션은 대부분 해당 업체의 제품만을 자동화할 수 있었다. 하지만 클라우드 시대의 자동화는 전체를 아우르는 하이브리드 개념이 기본이 되고 있으며, 데이터센터, 프라이빗/퍼블릭 클라우드 모두 아우르고 하위의 인프라부터 상위의 애플리케이션, 장애/복구에 대한 자동까지도 고민을 하고 있는 상황이다.


실제로 서버 자동화만으로도 눈에 띄는 효율성을 얻을 수 있지만, 기업 내의 프로세스 표준화 등에 대한 운영 프로세스의 자동화 또한 반드시 고민해야 할 영역이다. 기업의 경쟁 환경은 빠르게 변화하고 있고, IT 인프라가 갖춰야 할 민첩성과 효율성의 요구가 높아짐에 따라 자동화는 현재에 만족할 수 없는 과제가 된다. IT 인프라가 클라우드를 지향점으로 진화하고 있는 지금은 모든 기업이 데이터센터, 클라우드에 대한 자동화와 이후 고도화를 위한 단계적 접근을 시도해야 할 때이다.







참고자료


1 클라우드 시대 데이터센터를 완성하는 3단계 자동화 전략 ? IDG 2017


2 클라우드 자동화와 운영효율화 방안 ? 오픈소스컨설팅 2016


3 Terraform을 사용하는 이유 - https://blog.gruntwork.io/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c


4 소프트웨어 공학 트렌드: Vagrant 와 Ansible을 이용한 개발 환경 구축 Part 2 : Ansible의 이해