KubeCon + CloudNativeCon North America 2019 참가기
2019.11.19(화) ~ 2019.11.22(금) 4일간 미국 San Diego에서 열린 KubeCon + CloudNativeCon North America 2019 컨퍼런스를 웹서비스 부문 정문석 부문장, 이병욱 팀장, 박승필 팀장이 다녀 왔습니다. 북미 지역의 관련 업체, 업계 종사자들간의 정보 교환/세미나 등을 통한 교류의 장이었습니다.
CNCF와 Kubecon Cloudnativecon North America 2019 행사 개요
행사를 주관한 CNCF(Cloud Native Computiong Foundation)는 2015년에 공개 소스 컨테이너 클러스터 관리를 하는 Kubernetes 1.0을 시드 기술로 Google이 참여하여 설립되었습니다. (2018 년 8 월 Google은 프로젝트의 운영권을 커뮤니티 일임합니다.) “지속 가능한 생태계를 구축하고 커뮤니티를 육성하여 클라우드 네이티브 오픈 소스 소프트웨어의 성장과 건강을 지원합니다.”라고 사이트에 홍보하고 있습니다.
CNCF는 이름 그대로 클라우드 기술과 관련된 표준을 개발하려는 단체입니다.
세계 각 지역에서 Kubernetes와 CloudNative와 관련된 컨퍼런스를 개최하며, 저희가 참석한 이번 컨퍼런스는 미국 San Diego에서 약 1만 2천명이 참석한 가운데 11/19~22 4일간 열렸습니다.
해당 컨퍼런스 사이트에는 이런 문구가 걸려 있습니다.
명확한 결론 : 엔터프라이즈 IT 인프라에 관심이 있다면 Kubernetes를 선택해야합니다. KubeCon을 선택하십시오.”– SiliconANGLE, Jason Bloomberg”
행사의 CO-CHAIRS를 맡은 두사람입니다.
cloud native echosystem에 12,000 명 이상의 참석자와 100여 개의 벤더가 참석한 업계 최대의 모임입니다.
Cloud Native Computing Foundation은 오픈소스 프로젝트의 관리로 구성됩니다. CNCF가 주도하는 가장 주목할만한 프로젝트는 Kubernetes입니다.
20 개가 넘는 프로젝트, 500 개 회원사 및 100 개 회사를 보유한 CNCF는 업계에서 가장 활발한 커뮤니티 및 생태계 중 하나이며, 2019 년에 205 명의 신입 회원이 회원 수를 두 배로, KubeCon 행사도 작년 시애틀 행사와 비교하여 출석률이 50% 증가했다고 합니다.
올해 KubeCon은 CloudNative에 100 개가 넘는 발표를 했습니다. 그중에 흥미로운 발표는 아래와 같습니다. 자세한 내용은 아래 링크에서 보실 수 있습니다.
- Helm 3 is Launched
- AWS, Intuit and WeaveWorks Collaborate on Argo Flux
- Confidential Computing for Kubernetes from Microsoft
- Red Hat Launches CodeReady Workspaces 2.0
- Mirantis Launches Kubernetes as a Service (KaaS)
- O’Reilly Acquires Katacoda
- Portworx Launches PX-Autopilot
- Diamanti Announces Spektra Hybrid Cloud Solution
- Buoyant Announces Dive, a SaaS Control Plane for Kubernetes
- Rancher Extends Kubernetes to the Edge
상세내용에 관심 있으신 분들은 아래 웹사이트를 통하여 많은 정보를 얻으실 수 있습니다. 특히 Youtube에는 모든 섹션의 영상을 시청 하실 수 있습니다.
Event Movie https://www.youtube.com/playlist?list=PLj6h78yzYM2NDs-iu8WU5fMxINxHXlien
CNCF Project https://www.cncf.io/projects/
Event Photos https://www.flickr.com/photos/143247548@N03/sets/72157704599428714
Kubernetes와 Cloud Native 란?
본격적인 컨퍼런스 참관기에 앞서 이번 컨퍼런스의 2가지 주제에 대해서 기초적인 내용을 설명을 드려야 될 것 같습니다.
위키피디아에는 Kubernetes 에 대해 “자동으로 어플리케이션 배포/스케일링/관리를 하는, 오픈소스 컨테이너 오케스트레이션 시스템” 으로 정의하고 있습니다.
(Kubernetes (commonly stylized as k8s[3]) is an open-source container-orchestration system for automating application deployment, scaling, and management.[4] It was originally designed by Google, and is now maintained by the Cloud Native Computing Foundation. It aims to provide a “platform for automating deployment, scaling, and operations of application containers across clusters of hosts”.[3] It works with a range of container tools, including Docker.[5] Many cloud services offer a Kubernetes-based platform or infrastructure as a service (PaaS or IaaS) on which Kubernetes can be deployed as a platform-providing service. Many vendors also provide their own branded Kubernetes distributions.)
Kubernetes를 K8s라고도 쓰는데, K와 마지막 s사이의 8음절을 줄여서 K8s라고 줄여 쓰기도 한답니다. Megazone은 M6e라고 쓸 수 있겠네요 ^^
컨테이너 오케스트레이션 시스템
은 무엇을 뜻하는 것일까요?
일단 컨테이너의 개념을 컨테이너의 한 제품인 Docker를 기준으로 쉽게 설명된 자료로 설명 드리겠습니다.
Docker 란?
Docker Container란 Linux Container를 기반으로 한 가상화 시스템의 일종입니다. 가상화란 기존에 사용하고 있는 호스트 운영체제 위에 다른 운영체제의 이미지를 올려 사용하는 기술입니다. 기존에는 이를 위해 주로 가상 머신을 활용 하였는데, 아래 왼쪽 그림과 같이 호스트 운영체제 위에 Hypervisor를 올리고 그 위에서 다른 운영체제를 수행하는 방식입니다. 흔히 포켓몬 게임을 하기 위해 사용하는 에뮬레이터나 Virtual Box, VMware 등이 가상 머신의 예입니다.
그런데 이 가상머신은 호스트 운영체제의 리소스를 효율적으로 활용하지 못한다는 단점이 있습니다. Hypervisor 위에서 운영체제가 동작하여야 하기 때문에, 게스트 운영체제의 속도가 호스트 운영체제에 비해 느려지게 됩니다. 이 때문에 Virtual Box에서 Ubuntu를 동작시킬 때, 무거운 프로그램을 실행시키면 컴퓨터가 매우 느려지는 것을 경험 하실 수 있습니다. 이를 해결하기 위해 Hypervisor를 CPU에 내장하는 반가상화 기술도 개발되었지만, 여전히 느렸습니다.
Docker에서는 이를 해결하기 위해 Hypervisor 없이 직접 호스트 운영체제의 리소스를 사용하는 가상화 기술을 개발했습니다. Docker Container를 Docker Engine 위에서 실행시키면, 호스트 운영체제의 커널 레이어(직접적으로 메모리, CPU 등의 리소스를 제어하는 부분)과 직접 연결시켜 더 빠르게 게스트 운영체제를 실행 시킬 수 있게 하였습니다. 즉, 게스트 운영체제의 프로그램을 가상머신 위에서 수행시키지 않고, 호스트 운영체제 상에서 수행되게 만드는 것입니다. 실제로 Docker Engine을 사용하게 되면 호스트 운영체제에서 프로그램을 수행하는 것과 거의 같은 속도로 프로그램을 실행시킬 수 있습니다.
Docker에서는 이렇게 Docker Engine위에서 동작하는 게스트 운영체제를 Container라고 하고 있습니다. 그리고 이런 Container의 이미지를 공유할 수 있도록 github와 같은 커뮤니티를 만들어 놓았습니다. (이미지는 Container가 실행되지 않은 상태를 의미합니다. 프로세스-프로그램의 차이와 비슷합니다.) 회사의 이름도 이런 Container를 실고 다닌다고 해서 부두 노동자를 뜻하는 Docker로 지었다고 합니다.
요약하면, 도커의 핵심은 언제 어디서든 동일한 어플리케이션 동작을 보장하고, 빠른 구동을 할 수 있게 캡슐레이션 된 가상화 기술이라고 할 수 있습니다.
컨테이너 오케스트레이션
그럼 컨테이너 오케스트레이션 은 무엇일까요?
Docker와 같은 가상화 기술은 호스트 운영체제가 하나일 경우에는 쉽게 사용할 수 있지만, 호스트가 여러개 있는 데이터 센터 관리에는 적용하기가 어렵습니다. 이렇게 여러 개의 호스트가 있을 때, 이를 하나의 호스트에서 돌아가는 것처럼 관리해주는 툴이 Container Orchestration 툴입니다. 서버의 초기화 셋팅부터, 스케쥴링, 상태 업데이트, 모니터링 등의 기능을 제공하여 쉽게 서버를 관리할 수 있게 도와주는 제품입니다.
Kubernetes는 그리스어로 키잡이 또는 조타수를 뜻하며, 2014년 구글에서 처음 개발되었습니다. 이 당시에는 호스트 운영체제의 커널 레이어에서 게스트 운영체제인 가상화 시스템을 돌릴 수 있는 Docker 시스템이 한창 유행하고 있었습니다. 하지만, 도커로 만들어진 Container(컨테이너란 docker engine 위에서 실행되는 게스트 운영체제를 의미합니다) 여러 개를 한 번에 관리할 수 있는 방안은 도커를 사용하는 개발자들 사이에서도 한창 논쟁 중에 있었습니다. 컨테이너 여러 개를 한 번에 관리하는 이 기술은 Container Orchestration이라고 명명되었습니다.
당시에는 이 표준이 정해져 있지 않았기 때문에, Docker Swarm, Borg(당시 구글의 Repository 관리 시스템), CentOS fleet, Kubernetes 등 여러 가지 소프트웨어가 난무하고 있는 상황이었습니다. Kubernetes의 개발자 중 한명인 McLuckie는 이런 상황에서 Kubernetes가 Container Orchestration의 표준으로 다가설 수 있었던 이유가 CNCF(Cloud Native Computing Foundation: 클라우드 네이티브 컴퓨팅 재단)를 결성하였기 때문이라고 말합니다.
CNCF는 이름 그대로 클라우드 기술과 관련된 표준형을 개발하려는 재단입니다. McLukie 는 개발한 Kubernetes 를 세상에 공개할 당시 여러 가지 선택지가 있었다고 말합니다. 선택지 중에는 Kubernetes 를 자체 프레임워크로 독자 개발하거나, 구글 클라우드에 귀속시켜 상품화 시키는 방안, 혹은 오픈 소스로 배포하는 등이 있었습니다. 하지만 McLukie 를 비롯한 Kubernetes 개발자들은 Kubernetes가 궁극적으로 클라우드 서비스의 새로운 프레임워크를 제공할 것이라 믿었고, 이에 따라 CNCF 재단을 창설하여 Kubernetes를 CNCF 재단의 중심 프로젝트로 편성하였습니다. (구글 내에서 Kubernetes의 개발 과정을 보려면 이 논문을 참고하세요. https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf )
그 결과 최근 몇 년간 Kubernetes는 Container Orchestration의 표준으로 우뚝 솟아올랐고, AWS, Oracle, Microsoft, VMware 등 주요 클라우드 개발 업체들도 CNCF 에 가입하기에 이르렀습니다. 각 클라우드 개발 업체들은 서버 및 클라우드 컴퓨팅에 있어 container 를 자유자재로 다루고자 하였고, CNCF 휘하의 Kubernetes 가 큰 관성으로 업계 표준화되면서 자연스레 CNCF에 동참하게 된 것입니다.
요약하면, 컨테이너 오케스트레이션 이란 컨테이너가 여러 개 있을 경우, 이를 관리하기가 쉽지 않은데 이를 쉽게 관리하고 모니터링 하는 등의 역할을 하는 제품을 말하는 것이고, 비슷한 제품군들이 난립하던 춘추전국 시대을 재패한 제품이 K8s고 CNCF의 설립이 큰 도움이 되었다 정도로 이해 하면 될 것 같습니다.
Cloud Native란?
출처 : https://pivotal.io/kr/cloud-native
클라우드 네이티브는 클라우드 컴퓨팅 모델의 장점을 모두 활용하는 애플리케이션을 개발하고 실행하기 위한 접근 방식입니다.
Pivotal에서 CloudNative를 설명하는 글에 있는 그림입니다.
유연한 클라우드 하드웨어와 조직에는 DevOps 개념, 지속적인 전달, 마이크로서비스, 컨테이너를 자동화하고 통합할 클라우드 네이티브 애플리케이션과 서비스를 구축하고 운영할 플랫폼이 필요하다고 설명하고 있습니다.
요약하자면, 클라우드 환경에서 DevOps, CD, MicroServices, Containers 등의 기술과 방식을 이용하여 서비스를 구축하고 운영하는 것이라고 할 수 있겠네요.
기본개념에 대한 설명은 이만하고, 컨퍼런스에 대한 이야기를 해 보겠습니다. 출처 웹페이지에 자세한 설명들이 나와 있으니 한 번 읽어 보시길 권해드립니다.