Openstack apache License 기반의 IaaS(Infrastructure as a service) 서비스를 제공하는 오픈소스 클라우드 OS이다. 말이 굉장히 어려운데 쉽게 풀어보면 AWS(Amazon Web Service) 같은 클라우드 서비스를 제공할 있는 플랫폼이다. 필요한 만큼 Computing, Storage 등의 자원을 제공 받고, 사용중인 자원이 부족하면 수용 가능토록 자원을 늘려주고 트래픽을 분배하는 클라우드 서비스에 필수적인 기능을 제공한다.

또한, 이러한 SW 오픈소스로 제공되면서 전세계의 수많은 회사들이 Openstack 활용한 사업들을 활발히 진행 중이며 벤더의 막대한 투자와 2만명이 넘는 개발자들의 관심 속에 가파르게 성장하고 있다.


“어떻게 Openstack이 시작되었을까? “

물음에 대한 답은 바로 NASA(The National Aeronautics and Space Administration, 미항공우주국)에 있다. NASA는 매년 새로이 진행하는 project의 개발 리소스를 줄이기 위해 PaaS 개발을 시작하였다. 그러나 PaaS 구동을 위해 필요한 IaaS가 없다는 것을 뒤늦게 깨닫고 Rackspace와 함께 nebula라는 이름의 IaaS 개발 프로젝트를 진행하게 되었다.

nebula 프로젝트는 당초 예상보다 긴 5년이라는 시간이 걸려 끝마쳤으나 그렇게 완성도가 높지 않았다. 2010년 Rackspace와 NASA는 nebula의 안정화 및 기능 개선에 직접 투자하지 않고 Openstack이라는 이름으로 오픈소스화하였다. 공개 후 클라우드의 바람을 타고 AWS의 대항마로 주목을 받으며 수많은 개발자들과 벤더들의 폭발적인 관심하에 기능 확장 및 안정화가 진행되고 있으며 2012년 Openstack Foundation이 설립되어 SW의 개발 및 커뮤니티를 관리하고 있다.  

2010년 10월 Austin을 시작으로 6개월 주기로 공식 Release가 되며 최근 12번째 버전인 Liberty를 발표하였다.


“ Openstack의 기본 구조는?“

Openstack은 기본적으로 9개의 개별 Project인 Nova(computing), Glance(Image 관리), Neutron(Networking), Keystone(인증), Horizon(Dashboard), Cinder(Block Storage), Swift(Object Storage), Heat(orchestration), Ceilometer(metering)를 주축으로 클라우드 서비스를 제공한다.

Project 단위로 개발 되었기에 수동 설치가 비교적 어렵지만 모듈 독립성과 코드 간결성이 좋은 편이며 RESTful API를 기반으로 독립된 Project 간에 통신이 이루어진다. 또한 Python으로 작성되어 있으며 대부분의 Project Client들은 WSGI(Web Server Gateway Interface)로 구현되어 비슷한 소스 구조를 가지고 있다.


[그림-2 Openstack 구성도]


“ Openstack이 가진 특징?“

첫째, Openstack을 이용하면 On-Premise Private Cloud를 구축할 수 있다.
기존에 가상화를 통해 Computing 자원의 사용율을 극대화 했다면 Openstack의 등장으로 가상화된 자원의 효율적인 관리뿐만 아니라 네트워크, 스토리지 등의 인프라 전반의 효율적 관리가 가능해진 결과라 보여진다.

둘째, 사용자의 필요에 따라 유연하고 다양한 클라우드 환경 구성이 가능하다.
왜냐하면, 각 Project의 Backend를 Pluggable 형태로 구성할 수 있기 때문이다. 예를 들어, Hypervisor로는 VMware, Redhat KVM, Open Source KVM, Xen 등을 선택하여 구성할 수 있고, 네트워크의 Backend로는 Linux Bridge, OpenVswitch, 네트워크 Vendor 제품 등 SW 뿐만 아니라 HW 장비의 결합으로 구성할 수도 있다. 또한 Project 중 많은 Load가 걸리는 부분에 대해 별도 서버로 분리도 가능하다.

셋째, Auto Scaling 기능을 활용하여 필요 시 자동으로 자원의 증감이 가능하다. 
Auto Scaling은 computing 자원 사용량을 예측하기 어렵고 탄력적으로 자원을 필요로 하는 환경에서 요구된다. 트래픽이 증가할 때 자원이 늘어나고 트래픽이 감소하면 늘어났던 자원이 감소하는 기능으로 computing 자원에 대한 비용적 부담을 줄이고 서비스의 수준을 향상 시킬 수 있는 효과를 제공한다. 그렇다면 openstack에서는 어떤 방식으로 기능을 지원하는가?

Heat(Orchestration) Project를 통해 script 기반으로 제공한다. 미리 scale in/out에 대한 기준 및 동작을 script로 작성하여 Heat에 등록하면 자원의 사용량을 Metering하여 기준에 부합 시 Nova(computing), Neutron(Networking) 등의 Project와 연계하여 Heat-Engine의 제어 하에 복제 VM를 생성하고 Load Balancer를 붙이는 일련의 작업을 진행한다. 반대로 트래픽이 감소하면 늘렸던 자원을 회수해 자원 활용의 효율성을 극대화한다.

넷째, 하나의 물리자원을 공유하는 개별 사용자의 독립성을 보장하기 위한 Multi-Tenancy를 제공한다.
Neutron Project(Networking)에서 기능을 제공하며 Linux Container기반의 Namespace 기술을 활용하여 다른 Tenant의 간섭으로부터 보호하고 논리적으로 자원을 분리한다. 이로 인해 하나의 물리 자원을 공유하면서도, Tenant들은 자신만의 자원을 가질 수 있게 되고 다른 Tenant 자원에 접근이 불가능하다.


“ Openstack은 어떻게 변해왔는가? “

Openstack이 처음 공개될 당시에는 computing 기능을 하는 Nova와 Object Storage 기능을 하는 Swift만으로 구성되었지만 현재는 클라우드 서비스를 제공할 수 있는 수준까지 개발 및 안정화가 되었다.

[그림-3 Openstack Release 이력]

그리고 발표되는 Release 내에는 새로운 Project의 공개뿐만 아니라 내부적인 구조의 변경 또는 기존 Project의 기능 확장도 포함되어있다. Control 역할을 하는 서버의 부하 분산을 위해 DVR 기능을 도입하여 Data Traffic이 network Control 노드를 거치지 않고 Hypervisor에서 직접 처리하도록 구조를 변경하는가 하면, Resource Utility를 높이기 위해 Magnum이라는 Incubator Project로 Docker 지원을 준비하고 있다.

이와 더불어 현재는 조금 부족한 편의성 및 UI에 좀더 투자를 아끼지 않았으면 하는 바람이며 클라우드를 바탕으로 서비스할 수 있는 다양한 분야로 확장을 기대해본다.

끝으로, Openstack은 매년 4월과 10월에 “Openstack Summit”을 개최하여 다양한 정보를 소개하고 공유하는 행사를 진행하고 있다. 가장 최근에 발표한 Liberty에 대한 Summit은 옆나라 일본에서 열렸고 나날이 그 참여 인원이 증가하고 있는 것으로 보아 인기를 실감할 수 있을 것 같다. 언젠가는 한국에서도 Summit을 개최하는 날을 기대해본다.

Openstack에 관심이 가고 궁금하다면 공식 홈페이지(https://www.openstack.org)를 통해 더욱 많은 정보를 얻길 바라며 한국도 공식 커뮤니티(openstack.or.kr)를 운영 중이고 매년 “Openstack Day”를 개최하고 있으니 참석하여 성장하는 모습을 보는 것도 좋을 것 같다.

♣ 글 : Cloud사업 T.F 이형준 대리