OpenStack과 Container의 만남 - 1편

본 내용은 Thierry Carrez가 2017년 Openstack Boston Summit에서 발표한 내용을 요약한 것입니다.(글의 흐름을 위해 의역과 약간의 수정이 들어갔습니다.)

2.감상평

굉장히 좋은 동영상이라는 입소문을 듣고 찾아보게 되었습니다. 소문대로 OpenStack와 Container의 관계에 대해 명확하고 직관적으로 정리를 해 준것 같습니다.

아주 신선하게 다가왔던 부분은 발표자 분께서 주장하는 OpenStack의 정체성에 대한 정의였습니다.

OpenStack은 내일의 기술을 수용할 수 있는 integration engine 입니다.

많은 사람들이 OpenStack = vm 이라는 공식을 떠올리지만 OpenStack은 항상 그것보다는 큰 개념이었습니다.

발표자분의 시선으로 OpenStack을 바라보게 되면, container 기술은 더이상 OpenStack과 경쟁하는 기술이 아니며, container는 OpenStack을 대체하는 기술이 아닙니다.

3.내용요약

container 기술이 등장하고 많은 혼란이 생겨났습니다. "OpenStack이 container에서 동작해야 하나요?" "container가 OpenStack에서 동작해야 하나요?" 같은 질문들이 생겨났고, "왜 container 관련 행사에 OpenStack 부스가 있는겁니까?" 하는 질문을 하는 사람도 생겨났습니다.

3.1 Personas

Openstack과 container의 관계를 설명하기 위해서 우리는 3명의 인물을 설정해 보겠습니다.

3.1.1. Dinesh - Application Developer

첫번째 인물은 Dinesh 라는 이름을 가진 어플리케이션 개발자 입니다. Persona-Dinesh

어플리케이션 개발자인 Dinesh는 아래와 같은 특징을 가지고 있습니다.

  • 비지니스를 위한 어플리케이션을 만든다.
  • 속도에 민감하다 - 개발속도, 배포속도 등
  • 최신의 개발도구를 사용하고 싶어한다.
  • infrastructure에 대해서는 알고 싶어하지 않는다.
  • 비용이나 lock-in에 대해서는 신경 쓰지 않는다.
3.1.2. Bertram - Application Operator

Persona-Bertram Bertram은 어플리케이션 운영자 입니다. Bertram은 아래와 같이 정의 할 수 있습니다.

  • 조금은 Dinesh와 겹치는 부분이 있기도 하지만, 주로 application의 배포, 모니터링 및 스케일링을 담당.
  • 성능(performance)과 안정성(reliability)을 중요하게 생각한다.
  • (최신 기술 보다는) 검증된 안정적인 툴을 사용하고 싶어한다.
  • 인프라를 micromanage 하고 싶어하지 않는다.
  • lock-in에 대해서 신경을 쓴다.
3.1.3 Erlish - Infrastructure Provider

Persona-Erlish 누군가는 서버를 랙에 집어넣어야 합니다. 바로, Ernesh가 그런 역할을 담당합니다.

  • public 또는 private infrastructure을 운영합니다.
  • 특정 workload를 신경쓰지 않습니다. 범용적인 인프라를 제공하는것에 신경을 씁니다.
  • 비용, 향후 발전, 시스템의 변화에 대한 유연성을 중요시 합니다. 오늘날의 Bertram과 Dinesh는 물론, 내일의 Bertram과 Dinesh를 위한 인프라 제공에도 신경을 씁니다.

3.2.컨테이너

PPT-Slide-Container

  • a packaging format - 패키징 규격
  • convenient deployment tooling - 편리한 배포 도구
  • marketplace of packages - 패키지의 마켓플레이스

많은 회사들이 자신들의 application을 컨테이너 화 하여 application marketplace에 배포 하고 있습니다.

container 기술은 Dinesh에게 굉장히 매력적입니다. application과 dependencies를 쉽게 package 할 수 있고, container 기술이 제공하는 isolation은 production과 development 환경의 차이를 줄여줄 수 있기 때문입니다.

3.3 Kubernetes란?

PPT-Slide-Kubernetes

  • Deployment platform for containerized apps - container화 된 어플리케이션을 위한 배포 플랫폼
  • Designed around operational best practices - 운영에 있어 최고의 방법들에 기반하여 디자인 됨. Google이 축척한 운영 경험이 Kubernetes에 고스란히 녹아있음
  • Manages application lifecycle and scaling - 어플리케이션의 lifecycle과 scaling을 관리함

Kubernetes는 container 보다 한 단계 상위의 abstraction 레벨에 존재합니다. container group 이라는 개념을 사용하여 application을 정의하고, 어떻게 scale 할지를 규정합니다. 또한 자동으로 배포하고 운영합니다. Kubernetes는 Bertram에게 굉장히 매력적입니다.

3.4 Erlich는?

PPT-Slide-ErlichNeeds Erlich는 Dinesh와 Bertram에게 인프라에 대한 접근 권한을 주어야 합니다. Erlich는 프로그래밍이 가능한 인프라를 제공해야 합니다. 그렇다면, Erlich에게는 두 가지의 선택권이 있습니다: 특정 인프라, 또는 오픈 인프라 입니다.

만약 Bertram과 Dinesh가 필요한 것이 오직 Docker와 Kubernetes 뿐이라는것이 확실하다면, 그냥 서버에 그 두 개만 설치를 하고 그 위에 application을 올리면 됩니다. 이런 경우에는 굳이 openstack을 설치하고 그 위에 Docker와 Kubernetes를 올릴 필요가 없습니다.

그렇지 않은 경우라면, Erlich는 오픈 인프라를 선택해야 할 것입니다.

3.5 Open Infrastructure

PPT-Slide-OpenInfrastructure

  • Options - open infrastructure을 사용하면 docker와 kubernetes 뿐만 아니라 VM, mesosphere, docker swarm 등등 다양한 도구를 제공할 수 있습니다.
  • Shared Networking & Storage - 공유가 가능한 network와 storage도 제공할 수 있습니다.
  • Advanced Services - object storage, database-as-a-service 등 다양한 서비스를 제공할 수 있습니다.
  • Multi-tenancy - 필요에 따라 사용자들을 그룹으로 만들고 각각의 그룹을 분리시켜 관리할 수 있습니다.
  • Interoperability / Bursting - 한 회사의 특정한 솔루션에 묶여있지 않습니다. 만약 특정한 시기에 리소스가 많이 필요한 경우 public cloud와 연동하여 일시적으로 더 많은 자원을 확보할 수 있습니다.
  • Scaling - 몇백만 core로 인프라를 확장 할 수 있습니다.
  • Seamless Operations - 규격화된 로그파일 포멧, 규격화된 설정파일(config) 포멧을 사용하여 운영이 가능합니다.
  • Whatever Comes Next - 우리는 미래 기술을 수용하는 능력을 필요로 합니다.

3.6 OpenStack

PPT-Slide-Openstack 많은 사람들이 openstack = vm이라는 공식을 떠올리지만 openstack은 항상 그 이상이었습니다. OpenStack의 목표는 어플리케이션 운영자와 어플리케이션 개발자의 필요를 충족시키는 인프라를 제공하는 것이었습니다.

OpenStack이 제공하는 것은

  • Programmable Infrastructure - 프로그래밍으로 제어가 가능한 인프라.
  • Open Infrastructure - 여러분의 환경에 따라서 필요로 하는 기술을 plugin 형태로 연결하여 사용할 수 있는 기능.
  • Interoperable Infrastructure - 다른 클라우드와의 호환성을 유지하여 "burst"를 할 수 있는 기능.
  • Future-proof Infrastructure - 미래에 나올, 우리가 아직 모르는 기술들까지도 수용하여 사용할 수 있는 디자인.

오늘날의 기술은 container와 Kubernetes 지만 몇 년뒤에는 무엇이 될지 모릅니다. OpenStack은 오늘날의 기술을 통합하는 integration engine 입니다.

3.7 실질적인 예제들

현재 OpenStack에서 진행하는 container 관련 project들을 하나하나 설명하면서 Openstack과 container를 어떻게 하나의 서비스로 묶어내는지를 설명합니다. 2부에서 다루도록 하겠습니다.

4. 용어설명

혹시나 처음 접하시는 분들이 잘 이해 하시지 못할 수도 있는 단어를 제 나름대로 최대한 풀어보겠습니다. (지적 및 의견 환영합니다!)

lock-in : 하나의 제품 혹은 특정 회사의 생태계에 묶이게 되는 현상을 의미합니다. 예를 들어, iPhone을 사서 오랫동안 쓰게 되면 어플을 구매하는데 돈을 투자하게 되고, 악세서리를 사는데 돈을 투자하게 되어서 안드로이드 폰으로 쉽게 옮기지 못하는 상황을 lock-in 이라고 합니다.

micromanage: 세세한 부분까지 직접 관리를 하는것을 말합니다. 인프라의 경우를 예로 들면, 네트워크 장비의 설정값을 하나하나 세세히 관리를 하거나, 운영체제의 세팅값을 일일히 관심을 가지고 조정해 나가는 것을 의미합니다. 팀장이 부하들을 micromanage 하게 되면 자료 작성할때도 일일히 단어 하나까지 관여 하거나, 부하들의 일 세세한 부분까지 관여 하는것을 의미합니다.

scaling: 확장을 의미합니다. 예를 들어, 어떤 웹사이트의 접속자가 100명에서 10,000명으로 증가하게 되면 그에 맞춰서 제반 장비 및 시스템 증설해야 합니다.

application lifecycle: 어플리케이션의 생성, 시작, 동작, 종료, 삭제라는 application의 일생(?)을 뜻합니다.