리눅스 진영의 양대산맥인 레드햇과 우분투 두 진영은 기술적 부분에서 여러차례 엇갈리는 선택을 해왔다. 그러나 최근 두 진영 모두 채택한 기술이 있다. 바로 '도커(Docker)'다.
21일(현지시간) 미국 지디넷은 레드햇과 우분투가 도커 를 채택하면서 컨테이너 가상화 기술이 주류 리눅스 배포판의 핵심요소로 부상하고 있다고 평가했다.
리눅스는 커널기반가상화머신(KVM)이란 하이퍼바이저를 이미 갖고 있다. 젠(Xen) 역시 리눅스 환경을 위한 가상화 기술로 많이 쓰인다. 이런 가운데, 리눅스 진영은 또 다른 가상화 개념을 고민하는 모습이다.KVM이나 젠, ESX 같은 전통적인 하이퍼바이저는 CPU, 메모리, 스토리지 등 모든 컴퓨팅 스택을 가상화한다. 하이퍼바이저는 여러 하드웨어를 추상화하고 거대한 자원으로 만든 뒤 사후에 용도별로 공간을 쪼갠다.
컨테이너 가상화는 전통적인 하이퍼바이저와 다르다. 컨테이너 가상화는 운영체제 커널 공유가 기본이다. OS 상에 올라가는 컨테이너는 CPU, 메모리, 스토리지, 네트워크 등의 자원을 가상으로 할당받는데, 이는 다른 컨테이너에 할당된 자원과 철저히 격리된다. OS 상에 특정 앱만을 위한 별도의 공간을 만든다고 볼 수 있다.
이 방식은 새로운 게 아니다. 컨테이너 가상화는 'OS레벨 가상화'란 개념으로 유닉스 때부터 이미 존재했다.
제임스 보텀리 패러렐즈 서버가상화 최고기술책임자(CTO) 겸 리눅스 커널 개발자는 하드웨어를 가상화하는 대신 컨테이너는 단일 리눅스 인스턴스 상위에 위치한다며 쓸모없는 VM 정크의 99.9%를 뒤로 하고, 사용자 애플리케이션을 작고 균형잡힌 캡슐에 담는 것이라고 설명했다.
컨테이너 가상화의 목적은 단일 서버에 어떤 가상화 기술보다 더 많은 애플리케이션을 구동하자는 것이다. 무한정 하드웨어 증설로 나아가기보다 비용 한계 속에서 최대한 자원을 활용하자는 차원에서 나온 해법이다.
리눅스는 자신들의 컨테이너 가상화를 리눅스컨테이너(LXC)로 부른다. LXC는 리눅스 커널 격리 기능을 위한 사용자공간 인터페이스로 정의된다. 리눅스 사용자가 시스템이나 애플리케이션 컨테이너를 생성하고 관리하기 위한 API도 포함한다.도커는 이런 LXC를 위한 패키징 시스템으로 생각하면 된다. 리눅스 배포판에서 컨테이너 애플리케이션의 배포를 단순화해주는 기술이다. 작년 처음 소개된 이래 레드햇이 레드햇엔터프라이즈리눅스(RHEL) 7에, 우분투가 우분투서버 14.04 LTS에 집어넣었다.
브라이언 스티븐스 레드햇 CTO는 도커 기술은 엔터프라이즈가 컨테이너 기술을 채택하는 장벽을 제거하는데 도움이 된다며 컨테이너 기술은 사용하기 쉽고, 애플리케이션 패키징과 인프라 통합을 쉽게 한다고 밝혔다.
그는 레드햇과 도커 기술의 통합은 강력한 개발자 기능을 제공하고, 업계 전반의 엔터프라이즈 워크로드를 위한 경량 애플리케이션 패키징 시도를 제공한다고 강조했다.
우분투를 제공하는 캐노니컬도 레드햇과 동일한 이유로 도커를 채택했다. 마크 셔틀워스 캐노니컬 창업자는 자신의 구글플러스를 통해 LXC와 도커는 KVM보다 훨씬 더 빠르고 가볍다고 적었다.
더스틴 커크랜드 캐노니컬 클라우드솔루션 프로덕트매니저는 도커는 벌집 같은 디자인 패턴이라며 이 패턴은 가장 우아하고 인상적인 솔루션이 매우 직관적일 때 종종 자연에서 발견된다고 소감을 밝혔다.
그는 이어 나에게 도커는 게임을 바꾸는 방법이고, 핵심에서 하이퍼 이노베이티브한 기술로 똑바르며, 아름받고 명백해보인다며 훌륭하지만 단순하다고 강조했다.
그러나 도커와 컨테이너에 대해 모든 이가 낙관적인 것은 아니다.
델의 롭 허시필드 클라우드솔루션 수석아키텍트는 도커를 위한 다수의 훌륭한 활용사례가 있다며 하지만 아키텍처 계층에서 '클라우드', '어메이징', '레볼루셔너리' 같은 것의 대용어로서 마키텍처 같은 느낌이다고 지적했다. 마키텍처는 과장광고를 지칭하는 IT업계 은어다.
그는 도커가 효과적이고 파괴적이란 점엔 동의했다. 개발, 테스트, 딜리버리 등의 환경을 이동가능하고 일관되게 한다는 점, 리눅스 배포판의 사용자 공간을 파괴하지 않고 커널 업데이트를 유지하게 해준다는 점, 테넌트 격리에 대한 가상화 간접비용을 감소시킨다는 점, 데브옵스 개발자가 멀티노드 배포를 테스트하는데 가상화 간접비용을 감소시킨다는 점 등을 들었다.
그러나 우리가 너무 많은 은빛 탄환을 기대하고 있다는 점을 우려한다며 비판적 시각에 방점을 찍었다.
세부적으로는 까다로운 패키징을 지적했다. 그는 잠겨진 박스를 생성하는 것은 다운스트림 문제를 해결하는 것이지 업스트림 문제를 해결하는 게 아니다고 적었다. 알고 있는 문제를 해결하지만, 무엇이 필요한지 모르는 부분은 해결하지 못한다는 것이다.
컨테이너의 산발적인 확장(스프롤) 문제도 언급했다. 더 많은 기능을 잘게 쪼개 배포하게 되면서, 관리해야할 대상도 많아진다는 설명이다.
서비스로서의 플랫폼(PaaS) 채택에 대한 부분도 거론했다. 도커가 PaaS에 도움을 주긴 하지만, PaaS를 위한 앱을 모델링 한다거나 PaaS가 확장성있는 데이터 서비스를 필요로 한다는 등의 문제를 해결해주지 않는다고 적었다.
리눅스 진영은 확실히 도커와 LXC에 대해 적은 하드웨어로 더 많은 애플리케이션을 구동할 수 있으며, 그 방법까지 쉬워지고 있다고 강조한다.
관련기사
- 우분투 리눅스 LTS 새버전, 무엇이 달라졌나2014.04.22
- 레드햇, 엔터프라이즈 리눅스 7 RC버전 공개2014.04.22
- 구글↔아마존↔MS…클라우드 가격전쟁2014.04.22
- 2014 오픈소스SW, 10가지 관전포인트2014.04.22
미국 지디넷의 스티븐 보간니콜스는 도커와 컨테이너가 가상화와 클라우드에서 다음의 대혁명일 것인가, 비용과 전투중인 클라우드 아키텍트들을 위한 또 다른 방식으로 입증될 것인가라는 질문을 던지며 그 답은 올해 나올 듯하다고 밝혔다.
이어 그러나 만약 당신이 데이터센터나 클라우드에서 일한다면, 스스로 컨테이너 가상화가 당신의 계획에 적합한지 살펴보는 일을 시작해야 할 때라고 강조했다.