오픈스택(OpenStack) 이란?

클라우드라는 단어를 사용한 개발자라면 오픈스택이라는 단어를 최소 한 번은 들어보셨을 겁니다. 오픈스택은 Rackspace와 NASA에서 시작한 IaaS(Infrastructure As A Service) 를 구축할 수 있는 Software로 글로벌 IT 업체의 대부분이 참여하고 있는 오픈소스 프로젝트로 IaaS라는 단어에서 알 수 있듯이 클라우드 인프라에 필요한 서버 가상화, 스토리지 가상화, 네트워크 가상화 기술들을 종합적으로 구현하였습니다.

오픈스택의 시작

오픈스택은 2010년 7월 미국의 호스팅업체인 Rackspace와 NASA가 공동으로 개발하여 첫번째 릴리즈 버전 - 코드네임 - Austin 을 내놓으면서 시작되었습니다. 당시 Rackspace는 호스팅업체로서 아마존에 대응할 수 있는 클라우드 플랫폼이 필요했고, NASA 역시 내부의 많은 프로젝트에서 사용하는 인프라 리소스를 효과적으로 사용할 수 있는 플랫폼이 필요한 상태였습니다. 우연한 기회에 둘은 서로가 클라우드 플랫폼을 만들고 있다는 것을 알게되었고, NASA의 플랫폼 - NASA 내부적으로는 Nebula 라는 프로젝트를 진행- 과 Rackspace의 클라우드 파일 플랫폼을 합쳐 오픈스택을 내놓게 되었던 것입니다. (NASA가 해당 플랫폼을 오픈소스로 내놓게 된 숨겨진 이야기가 있습니다.) 오픈스택에서 NASA가 개발한 서버 가상화를 담당한 프로젝트는 Nova라는 이름으로, Rackspace가 개발한 클라우드 파일 시스템(오프젝트 스토리지)는 Swift라는 이름으로 발표되었습니다.

이후 오픈스택은 계속해서 알파벳순으로 이름을 붙혀 릴리즈 버전을 발표하였습니다. 두번째 버전은 Bexar, 세번째 버전은 Cactus 였는데 사실 Cactus 버전까지는 운영환경으로 사용하기에는 단일 네트워크 노드라는 치명적인 제약사항으로 불가능했었습니다. 하지만 Diablo버전 부터는 멀티노드 네트워크를 지원하면서 기능적으로 부족한 부분들은 있었으나, 운영환경에서 사용하기에 문제가 없을 정도로 발전하였습니다. (저는 Diablo 버전, 실제로는 Essex-1 버전부터 오픈스택을 적용하기 시작했습니다.)

이후 오픈스택은 오픈스택 파운데이션을 설립하여 독립적인 운영권을 갖게 되었으며, NASA는 오픈스택에서 탈퇴하였습니다.

오픈스택 릴리즈

오픈스택은 신규 버전은 6개월마다 릴리즈되고 있는데, 일반적으로 4월과 10월에 릴리즈되고 있습니다.

OpenStack_Release

현재는 2016년 4월 7일에 발표된 Mitaka가 최신 릴리즈 버전이며, 2016년 10월 6일에는 Newton 버전이 릴리즈될 예정입니다. 패치는 최신 릴리즈 버전에 대해서만 기능 버그 패치가 나오고 있으며, 최신 릴리즈 바로 직전 버전까지는 보안패치만 지원하고 있습니다. 지금은 Newton 버전을 개발하고 있으니 Mitaka 버전까지는 기능패치를 지원하고 Liberty버전까지는 보안패치까지 지원을 합니다. 그러므로 Kilo 버전은 EOL (End Of Line) 으로 현재는 패치가 지원되지 않습니다. 사실 최신버전이 릴리즈되고 두달안에 어느 정도 안정적인 기능패치가 나오므로 크게 문제될 것이 없으며, 릴리즈 시에도 서버관리, 스토리지 관리, 네트워크 관리 등과 같은 기본적인 기능에서 버그가 발생하는 경우는 거의 없습니다.

버전의 이름을 붙히는 방법은 한가지가 더 있는데 릴리즈 당해년도에 순서를 붙히기도 합니다. 예를 들어 Mitaka의 경우는 2016년에는 첫번째로 나온 릴리즈이므로 2016.1 로 나타내고 10월에 나올 Newton의 경우에는 2016.2 로 버저닝을 하기도 합니다. 또한 Mitaka의 첫번째 패치가 나오면 Mitak 버전인 2106.1에 1을 붙혀서 2016.1.1로 이름을 붙힙니다. https://wiki.openstack.org/wiki/Release_Naming

각 프로젝트마다는 각각의 버전을 가지고 있습니다. Nova 의 경우에는 Mitaka 릴리즈 버전이 13.0.0 이며, 이후 패치가 계속 나와 지금은 13.1.1이 최신 버전입니다. 프로젝트 버전의 경우에는 다음의 사이트에서 확인하실 수 있습니다. http://releases.openstack.org/mitaka/index.html

신규 버전이 릴리즈될 때 다음 버전에 대한 디자인 서밋(Design Summit) 을 개최합니다. 당연히 디자인 서밋도 6개월마다 개최되는데 디자인 서밋은 초기 순수 개발을 위한 설계로 진행이 되었지만, 지금은 3일간 유즈케이스 혹은 비지니스 발표와 2일간 설계로 진행되고 있습니다. 그래서 개발자를 위한 디자인 서밋만을 추가로 따로 자주 개최하자는 이야기가 나왔으며 내년부터 시행될 것으로 보입니다. 이번 Ocata 버전에 대한 디자인 서밋은 2016년 10월 25일 ~ 28일까지 스페인 바로셀로나에서 개최됩니다. 릴리즈 버전 이름은 보통 디자인 서밋 개최지의 지명이나 유의미한 이름으로 투표를 통해서 정하는데 Ocata는 바로셀로나에서 기차로 북쪽 20km 정도에 있는 해변의 이름입니다.

오픈스택 프로젝트 설명

Diablo 버전 까지 초기 오픈스택은 Nova, Swift, Glance 3개의 프로젝트만 가지고 있었습니다. 각각의 프로젝트의 기능은 다음과 같습니다.

  • Swift : 오브젝트 스토리지로 파일을 Rest API 를 통해서 관리할 수 있습니다. 아마존의 S3와 같다고 보시면 됩니다.
  • Glance : 서버 이미지를 관리합니다. PC에 윈도우를 설치하기 위해서는 윈도우 OS 디스크가 필요하듯이 가상화하여 서버 OS를 설치하기 위해서는 OS 이미지가 필요합니다. 이러한 OS 이미지를 Rest API 로 관리할 수 있습니다.
  • Nova : 서버 가상화를 지원합니다. 초기에는 Nova가 서버, 네트워크, 볼륨을 모두 관리하였습니다. 그래서 Nova 프로젝트에는 Nova API, Nova Scheduler, Nova Volume, Nova Network와 같이 Nova가 모든 기능을 가지면서 각각의 데몬이 뜨는 방식이었습니다.

지금은 Nova Volume 은 Cinder로, Nova Network 는 Neutron으로 프로젝트로 격상되어 관리됩니다. 이렇게 각 모듈이 프로젝트로 발전한 것이 오픈스택이 발전할 수 있는 방법이라고 생각이 듭니다. 예를 들어 Cinder 프로젝트는 스토리지 업체가 발전시켰는데 기본이 되는 기능은 추상적으로 정의되어 있고, 각 스토리지 업체마다 드라이버를 구현하여 제공함으로써 벤더의 참여가 적극적이었으며, 이를 통해 스토리지 생태계를 발전시켰습니다.  프라이빗 클라우드를 구축하는 곳에서 오픈스택을 사용하니 스토리지를 판매하기 위해서는 자사의 스토리지가 오픈스택을 지원하는 것이 중요해 졌으며, 업체가 자발적으로 드라이버를 만들어서 업스트림하는 방식으로 발전한 것입니다.

프로젝트가 다양하게 발전하면서 생겨난 프로젝트가 하나 있는데 그것은 바로 Keystone 입니다. 각각의 프로젝트간의 통신은 Rest API 를 통하는데 프로젝트마다 인증 기능을 구현하여 identity 에 대한 통합이 안되었던 것입니다. 그래서 identity 를 통합하여 인증 모듈을 구현하고 각 프로젝트마다 가지는 고유한 Rest API URL 관리를 하는 Keystone 프로젝트가 생겼습니다.

현재 오픈스택의 대표적인 프로젝트는 아래와 같습니다. https://governance.openstack.org/reference/projects/

  • Nova (Compute): 서버의 가상화를 지원
  • Swift (Object Storage): 오브젝트 스토리지로 Rest API 를 통해 파일을 관리
  • Glance (Image): Nova에서 서버를 가상화할 때 필요한 OS 이미지를 관리
  • Keystone (Identity): 모든 프로젝트의 인증을 통합 관리
  • Horizon (Dashboard): 웹 포탈
  • Neutron (Networking): SDN(Software Define Network)를 지원
  • Cinder (Block Storage): 블락 디바이스 볼륨을 관리, 아마존의 Elastic Block Store 로 이해
  • Telemetry (Telemetry): 자원 사용량을 관리
  • Heat (Orchestration): 자원을 생성하면서 필요한 s/w를 설치하는 오케스트레이션을 지원
  • Trove (Database): MySQL, Redis와 같은 데이터베이스를 관리
  • Sahara (Data Processing): Hadoop과 같은 빅데이터를 지원하는 클러스터 관리
  • Ironic (Bare metal): 가상화가 아닌 베어메탈에 서버 자원을 관리
  • Zaqar (Message) : Queue 클러스터 관리
  • Barbican (Key management): 키 관리
  • Designate (DNS): DNS 서비스 관리
  • Manila (Shared File System): NFS와 같은 공유 디스크 관리
  • Monasca (Monitoring): 자원 모니터링 지원

오픈스택의 다양한 프로젝트는 이전에 Integrated release model에서  Big Tent Model 방식으로 변경되어 관리됩니다. 이전 Integrated release model에서는 incubating 과정을 거쳐서 어느 정도 프로젝트가 성숙되면 투표를 통해서 integrated 프로젝트로 격상되는 과정을 거쳤습니다. 그러나 2015년 부터는 Big Tent model로 변경되면서 좀 더 쉽게 오픈스택의 프로젝트로 관리될 수 있고, 각 프로젝트의 협업이 좀 더 쉬워졌습니다. (물론 이 부분에 있어서는 프로젝트의 성숙도 때문에 아직도 이전 모델과 장단점을 비교하는 논쟁이 있습니다)


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.