티스토리 뷰

뉴스

웹호스팅계의 혁신, Docker

ETI 2016. 9. 29. 15:17

기존의 가상머신보다 더 빠르게 가상화를 제공하는 Docker Engine이 공식적으로 Windows Server에 사용되기 시작했습니다.



지난 주 마이크로소프트에서는 Windows Server 2016을 출시하며, 10월 1일부터 판매될 예정이라고 발표했습니다. Windows Server 2016에서는 보안 강화, 네트워킹 툴 업그레이드, Nano 옵션(최적화를 통해 OS를 최소한으로 줄이는 옵션) 등이 추가 되었지만, 이와 함께 Docker Container 지원이 추가 되었습니다. 마이크로소프트는 예전부터 Docker Engine을 Windows Server에 내장할 예정이라고 밝혀왔습니다. 하지만, 이번에는 Docker와의 협업을 통해 상업용 Docker Engine까지 무료로 내장 시키기로 했다고 합니다. 이와 함께 Docker의 Data Center 솔루션도 지원하여 이를 이용해 Windows 보안 강화를 할 수 있다고 밝혔습니다.


Docker1


Docker 란?


최근 수많은 클라우드 서비스들이 Docker Container를 지원하기 시작했습니다. 그리고 이젠 대부분의 개발자들이 Docker에 대해 한 쯤은 들어보게 되었습니다. Docker Container란 Linux Container를 기반으로 한 가상화 시스템의 일종입니다. 가상화란 기존에 사용하고 있는 호스트 운영체제 위에 다른 운영체제의 이미지를 올려 사용하는 기술입니다. 기존에는 이를 위해 주로 가상 머신을 활용 하였는데, 아래 왼쪽 그림과 같이 호스트 운영체제 위에 Hypervisor를 올리고 그 위에서 다른 운영체제를 수행하는 방식입니다. 흔히 포켓몬 게임을 하기 위해 사용하는 에뮬레이터나 Virtual Box, VMware 등이 가상 머신의 예입니다.

Docker2

그런데 이 가상머신은 호스트 운영체제의 리소스를 효율적으로 활용하지 못한다는 단점이 있습니다. Hypervisor 위에서 운영체제가 동작하여야 하기 때문에, 게스트 운영체제의 속도가 호스트 운영체제에 비해 느려지게 됩니다. 이 때문에 Virtual Box에서 Ubuntu를 동작시킬 때, 무거운 프로그램을 실행시키면 컴퓨터가 매우 느려지는 것을 경혐하실 수 있습니다. 이를 해결하기 위해 Hypervisor를 CPU에 내장하는 반가상화 기술도 개발되었지만, 여전히 느렸습니다.

Docker에서는 이를 해결하기 위해 Hypervisor 없이 직접 호스트 운영체제의 리소스를 사용하는 가상화 기술을 개발했습니다. Docker Container를 Docker Engine 위에서 실행시키면, 호스트 운영체제의 커널 레이어(직접적으로 메모리, CPU 등의 리소스를 제어하는 부분)과 직접 연결시켜 더 빠르게 게스트 운영체제를 실행 시킬 수 있게 하였습니다. 즉, 게스트 운영체제의 프로그램을 가상머신 위에서 수행시키지 않고, 호스트 운영체제 상에서 수행되게 만드는 것입니다. 실제로 Docker Engine을 사용하게 되면 호스트 운영체제에서 프로그램을 수행하는 것과 거의 같은 속도로 프로그램을 실행시킬 수 있습니다.

Docker3

Docker에서는 이렇게 Docker Engine위에서 동작하는 게스트 운영체제를 Container라고 하고 있습니다. 그리고 이런 Container의 이미지를 공유할 수 있도록 github와 같은 커뮤니티를 만들어 놓았습니다. (이미지는 Container가 실행되지 않은 상태를 의미합니다. 프로세스-프로그램의 차이와 비슷합니다.) 회사의 이름도 이런 Container를 실고 다닌다고 해서 부두 노동자를 뜻하는 Docker로 지었다고 합니다. 


Docker4

2010년 창업한 Docker는 현재 시리즈 D 투자까지 받았으며, 여러 클라우드 서비스에 Docker Container 서비스를 제공하고 있습니다. 초기에는 버그가 많이 있어서 사용자가 그렇게 많지는 않았지만, 점점 더 안정화가 되며 지난 2년간 Docker container 사용자가 30배 증가하였다고 합니다. 특히 지난 6월에 진행된 DockerCon 2016(Docker 개발자 컨퍼런스)에서는 표가 조기 매진될 정도로 많은 개발자들이 관심을 가지고 있습니다.

Docker의 미래


지난 DockerCon 2016에서 Docker는 Docker Store 공개, Container Orchestration 기능 내장, 다른 플랫폼으로의 확대 등의 이슈를 발표했습니다. 먼저 Docker에서는 이미지를 다운 받을 수 있는 Docker Store를 개설해 기업들에서 이미지를 판매할 수 있게 하였습니다. 현재 Docker에서는 Chef, New Relic, Citrix, Splunk, Nginx 등의 서버 관리 기업들과 파트너십을 맺고 여러 이미지 어플리케이션을 스토어에 등록했습니다. 현재 베타테스트 중인 Docker Store에는 유료 및 무료 앱들이 460,000개 등록되어 있고, 앞으로 더욱 확대할 계획입니다.

Docker Store


한편 Docker와 같은 가상화 기술은 호스트 운영체제가 하나일 경우에는 쉽게 사용할 수 있지만, 호스트가 여러개 있는 데이터 센터 관리에는 적용하기가 어렵습니다. 이렇게 여러 개의 호스트가 있을 때, 이를 하나의 호스트에서 돌아가는 것처럼 관리해주는 툴이 Container Orchestration 툴입니다. 서버의 초기화 셋팅부터, 스케쥴링, 상태 업데이트, 모니터링 등의 기능을 제공하여 쉽게 서버를 관리할 수 있게 도와주는 제품입니다. 현재 많이 사용되는 Container Orchestration 툴은 크게 네가지로 Docker Swarm, CentOS Fleet, Google Kubernetes, Apache Mesos가 있습니다.


이중 Docker의 Swarm의 경우 Docker Container를 관리하는 데에 최적화되어 있고, 매우 간단하게 사용할 수 있지만, 복잡한 스케쥴링이 필요한 경우에는 부적합하다는 평을 받아왔습니다. 특히 Google의 Kubernetes나 Apache의 Mesos 같은 경우 사용하기엔 복잡하지만 기존에 개발되어 있는 것이 많고, 낮은 레벨의 수정이 가능해 복잡한 시스템에서 더 많이 사용되고 있었습니다. 이번 개발자 컨퍼런스에서 Docker는 이 Docker Swarm 툴을 Docker Engine에 내장시킴으로써 더 빠르게 멀티 호스트 환경을 세팅할 수 있게 하였습니다. 기존에도 사용하기 단순하던 툴을 아예 Docker Engine에 내장 시켜 별도의 설치가 필요없게 바꾸었습니다.




마지막으로 Docker에서는 다양한 시스템에 대한 지원을 하기 시작했습니다. 아직 클로즈 베타를 진행 중이지만, Microsoft Azure나 AWS에서도 동작이 간편하도록 플랫폼을 구축하였다고 합니다. AWS의 경우 AWS에서 제공하는 로드 밸런싱 (트래픽에 따라 라우터 용량 자동 조절)이나 오토 스케일링(서버 용량에 따라 용량 자동 스케일링) 기능을 최대한 반영한 플랫폼을 제공한다고 하고, Azure의 경우도 Azure 자체의 기능을 반영한 플랫폼을 제공한다고 합니다. 이외에도 기존에는 Linux 상에서만 동작되던 Docker의 OS X와 윈도우즈 용 베타버전을 출시했습니다. 덕분에 이제 윈도우즈나 OS X 상에서도 가상머신 없이 다른 이미지를 실행시킬 수 있게 되었습니다.


이제 Docker Container로 인해 서버 관리가 훨씬 더 수월해졌습니다. 이미지 자체를 쉽게 수정하고 배포할 수 있어서 서버 운영 시에 강력한 툴인 것 같습니다. 게다가 데이터 센터를 대상으로 하는 Docker Swarm 까지 Docker Engine 내장시키며 점점 더 완벽한 Docker Container 생태계를 구축하고 있는 것 같습니다.


참고자료

TechCrunch, “Windows Server 2016 will come with commercial support for Docker Engine”

TechCrunch, “Docker builds container orchestration right into its core Docker Engine”

긁적긁적님의 블로그, “Docker, 그것은 무엇이고, 설치는 어떻게 할까?”

이재홍님의 Slideshare, “Docker 무작정 따라하기

Radar, “Swarm vs Fleet vs Kubernetes vs Mesos”



에티 페이스북 페이지를 통해 에티의 다른 소식도 받아 보세요


인기 포스팅 보기

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함