2016.01.27

도커, 유니커널 혁신에 도전… 더 가벼운 앱 환경 나올까

Serdar Yegulalp | InfoWorld
도커(Docker)가 지금까지와는 완전히 다른 방식으로 컨테이너를 병합할 준비를 하고 있다. 바로 유니커널(Unikernel)이다.

이를 위해 도커가 가장 먼저 한 일은 오랜 기간 관련 작업을 이어온 영국의 신생업체 유니커널 시스템즈(Unikernel Systems)를 인수하는 것이었다. 도커의 목표는 도커 워크플로우를 이용해 특정 애플리케이션을 구동하기에 충분한 기능성을 갖추고, 소형 IoT 방식 기기에서 데이터센터 서버까지의 모든 분야에서 동작할 수 있는 최소한의 빌트 온 디맨드(built-on-demand) 운영체제를 만드는 것이다.

도커는 보도자료를 통해 “고객들에게 친숙한 도커의 툴과 이식성을 차세대 유니커널 기술이 제공하는 효율성, 전문성과 결합함으로써 인프라스트럭처의 제약에서 벗어나 분산형 애플리케이션을 구축, 출하, 구동할 수 있는 탄력적인 플랫폼이 완성됐다”라고 설명했다.

더 적지만 더 낫다
유니커널의 근간을 이루는 아이디어는 단순하다. 어떤 애플리케이션이 만들어 내는 OS 요청을 살펴보고, 앱과 그것이 필요로 하는 최소한의 OS 부분만을 하나의 통합된 커널로 컴파일한다는 것이다.

유니커널을 조합하는 것은 분명 쉬운 과정이 아니지만, 그 결과로 창출되는 2진 이미지는 앱과 전체 OS를 패키징하는 것에 비해 상당한 용량 효율성을 보장한다. 또한 내부의 이동 요소가 적다는 특성은 해커들의 공격이나 오류 발생의 가능성 역시 줄여주는 역할을 한다.

컨테이너가 도커의 손을 거쳐 시장의 지지를 얻기 이전부터 존재해 온 기술이듯, 유니커널 역시 완전히 새로운 개념의 기술은 아니다. 최근에는 젠 프로젝트(Xen Project)가 오캄(OCaml) 언어로 작성된 커스텀 애플리케이션과 OS 스택을 갖춘 유니커널 시스템인 젠 미라지(Xen Mirage)를 출시한 바 있으며, 또 다른 유니커널 프로젝트인 인클루드OS(IncludeOS)의 경우에는 OS의 서비스를 라이브러리로 처리해 C++ 애플리케이션 안에 포함될 수 있도록 하는 기능을 제공한다.


유니커널은 애플리케이션 코드를 해당 애플리케이션 구동에 필요한 최소한의 운영체제 요소와 결합함으로써 용량(과 공격 표면)을 크게 줄인 단일 고속부팅 바이너리를 생성한다.

보다 쉬운 구축법
그렇다면 도커는 이 아이디어를 어떤 방향으로 이용할 생각인 것일까? 요약해 설명하자면, 이미 도커를 지원해 온 플랫폼이라면 어디에서나 기존 툴셋을 적용해 애플리케이션들을 유니커널로 패키징하는 작업을 쉽게 할 수 있도록 하는 것이 도커의 목표이다.

도커 마케팅 담당 부사장 데이빗 메시나는 이런 방식이 유니커널 생태계를 ‘민주화’할 것이라 이야기한다. 메시나는 “도커의 보편적인 툴과 워크플로우(유니커널) 구축 과정에 적용됨으로써, 유니커널이 도커 기반 개발을 진행해온 수많은 기업과 조직이 더 쉽게 다가갈 길이 열릴 것”이라고 설명했다.

유니커널 시스템즈의 CTO 아닐 마드하바페디의 설명에 따르면, 도커의 워크플로우는 애플리케이션 및 구성 파일을 포함하는 컨테이너와 관계하며, 이어 개발자의 참여 없이도 유니커널을 구축한다. 빌드의 세부 사항은 사용되는 프로그래밍 언어에 따라 구별되며, C로 작성된 애플리케이션은 자바나 오캄으로 작성된 앱과는 다른 서브셋을 가지게 된다. 이를 위해 현재 중심적으로 이뤄지고 있는 활동 가운데 하나는 워크플로우를 최대한 단일화해 x86과 ARM 컴필레이션을 동일 파이프라인 안에서 수행하는 등의 작업을 가능케 하는 것이다.

향후 과제
마드하바페디는 도커의 접근법은 기존의 ‘값비싼 수작업' 유니커널 시스템(넷앱의 온탭이나 시스코의 IOS 등) 구축 방법론과는 다르다고 강조한다. “우리는 전문성 구현에 많은 노력을 기울였다. 이제 개발자들은 그들이 현재 이용하고 있는 상위 레벨 API를 이용해 하위 레벨 컴포넌트도 구축할 수 있게 될 것이다. 유니커널은 여러 안정적인 빌딩 블록을 보유하고 있지만, 지금까지는 그것을 한데 결합하는 과정에 어려움이 있었다”라고 설명했다.

도커의 제안은 “컨테이너를 운영하기에 딱 충분한 OS”라는 개념이 코어OS같은 것들에 의해 확산되고 난 바로 다음 단계라 할 수 있다. 하지만 유니커널 방식이 컨테이너를 완전히 대체할 가능성은 크지 않다. 컨테이너가 VM을 대체하지 못했듯이 말이다.

만약 유니커널이 컨테이너 앱을 만드는 데 드는 것보다 약간 더 많은 노력으로 만들어 질 수 있다면 엄청난 가능성의 문이 열릴 것이라는 데 의문을 제기하는 이는 없다. 서버 상에서 더 높은 앱 집적도를 구현할 수 있는 등 여러 가지 장점이 있다.

그렇지만 이는 또한 도커가 지원하는 마이크로 서비스 애플리케이션 모델이 지금까지는 별로 실용적이지 못해서 적용되지 않았던 곳에도 적용될 수 있음을 의미하기도 한다. 예를 들어 IoT 기기와 같이 자원이 제한적인 클라이언트 환경 같은 곳이 대표적인 예가 될 것이다.  editor@itworld.co.kr



2016.01.27

도커, 유니커널 혁신에 도전… 더 가벼운 앱 환경 나올까

Serdar Yegulalp | InfoWorld
도커(Docker)가 지금까지와는 완전히 다른 방식으로 컨테이너를 병합할 준비를 하고 있다. 바로 유니커널(Unikernel)이다.

이를 위해 도커가 가장 먼저 한 일은 오랜 기간 관련 작업을 이어온 영국의 신생업체 유니커널 시스템즈(Unikernel Systems)를 인수하는 것이었다. 도커의 목표는 도커 워크플로우를 이용해 특정 애플리케이션을 구동하기에 충분한 기능성을 갖추고, 소형 IoT 방식 기기에서 데이터센터 서버까지의 모든 분야에서 동작할 수 있는 최소한의 빌트 온 디맨드(built-on-demand) 운영체제를 만드는 것이다.

도커는 보도자료를 통해 “고객들에게 친숙한 도커의 툴과 이식성을 차세대 유니커널 기술이 제공하는 효율성, 전문성과 결합함으로써 인프라스트럭처의 제약에서 벗어나 분산형 애플리케이션을 구축, 출하, 구동할 수 있는 탄력적인 플랫폼이 완성됐다”라고 설명했다.

더 적지만 더 낫다
유니커널의 근간을 이루는 아이디어는 단순하다. 어떤 애플리케이션이 만들어 내는 OS 요청을 살펴보고, 앱과 그것이 필요로 하는 최소한의 OS 부분만을 하나의 통합된 커널로 컴파일한다는 것이다.

유니커널을 조합하는 것은 분명 쉬운 과정이 아니지만, 그 결과로 창출되는 2진 이미지는 앱과 전체 OS를 패키징하는 것에 비해 상당한 용량 효율성을 보장한다. 또한 내부의 이동 요소가 적다는 특성은 해커들의 공격이나 오류 발생의 가능성 역시 줄여주는 역할을 한다.

컨테이너가 도커의 손을 거쳐 시장의 지지를 얻기 이전부터 존재해 온 기술이듯, 유니커널 역시 완전히 새로운 개념의 기술은 아니다. 최근에는 젠 프로젝트(Xen Project)가 오캄(OCaml) 언어로 작성된 커스텀 애플리케이션과 OS 스택을 갖춘 유니커널 시스템인 젠 미라지(Xen Mirage)를 출시한 바 있으며, 또 다른 유니커널 프로젝트인 인클루드OS(IncludeOS)의 경우에는 OS의 서비스를 라이브러리로 처리해 C++ 애플리케이션 안에 포함될 수 있도록 하는 기능을 제공한다.


유니커널은 애플리케이션 코드를 해당 애플리케이션 구동에 필요한 최소한의 운영체제 요소와 결합함으로써 용량(과 공격 표면)을 크게 줄인 단일 고속부팅 바이너리를 생성한다.

보다 쉬운 구축법
그렇다면 도커는 이 아이디어를 어떤 방향으로 이용할 생각인 것일까? 요약해 설명하자면, 이미 도커를 지원해 온 플랫폼이라면 어디에서나 기존 툴셋을 적용해 애플리케이션들을 유니커널로 패키징하는 작업을 쉽게 할 수 있도록 하는 것이 도커의 목표이다.

도커 마케팅 담당 부사장 데이빗 메시나는 이런 방식이 유니커널 생태계를 ‘민주화’할 것이라 이야기한다. 메시나는 “도커의 보편적인 툴과 워크플로우(유니커널) 구축 과정에 적용됨으로써, 유니커널이 도커 기반 개발을 진행해온 수많은 기업과 조직이 더 쉽게 다가갈 길이 열릴 것”이라고 설명했다.

유니커널 시스템즈의 CTO 아닐 마드하바페디의 설명에 따르면, 도커의 워크플로우는 애플리케이션 및 구성 파일을 포함하는 컨테이너와 관계하며, 이어 개발자의 참여 없이도 유니커널을 구축한다. 빌드의 세부 사항은 사용되는 프로그래밍 언어에 따라 구별되며, C로 작성된 애플리케이션은 자바나 오캄으로 작성된 앱과는 다른 서브셋을 가지게 된다. 이를 위해 현재 중심적으로 이뤄지고 있는 활동 가운데 하나는 워크플로우를 최대한 단일화해 x86과 ARM 컴필레이션을 동일 파이프라인 안에서 수행하는 등의 작업을 가능케 하는 것이다.

향후 과제
마드하바페디는 도커의 접근법은 기존의 ‘값비싼 수작업' 유니커널 시스템(넷앱의 온탭이나 시스코의 IOS 등) 구축 방법론과는 다르다고 강조한다. “우리는 전문성 구현에 많은 노력을 기울였다. 이제 개발자들은 그들이 현재 이용하고 있는 상위 레벨 API를 이용해 하위 레벨 컴포넌트도 구축할 수 있게 될 것이다. 유니커널은 여러 안정적인 빌딩 블록을 보유하고 있지만, 지금까지는 그것을 한데 결합하는 과정에 어려움이 있었다”라고 설명했다.

도커의 제안은 “컨테이너를 운영하기에 딱 충분한 OS”라는 개념이 코어OS같은 것들에 의해 확산되고 난 바로 다음 단계라 할 수 있다. 하지만 유니커널 방식이 컨테이너를 완전히 대체할 가능성은 크지 않다. 컨테이너가 VM을 대체하지 못했듯이 말이다.

만약 유니커널이 컨테이너 앱을 만드는 데 드는 것보다 약간 더 많은 노력으로 만들어 질 수 있다면 엄청난 가능성의 문이 열릴 것이라는 데 의문을 제기하는 이는 없다. 서버 상에서 더 높은 앱 집적도를 구현할 수 있는 등 여러 가지 장점이 있다.

그렇지만 이는 또한 도커가 지원하는 마이크로 서비스 애플리케이션 모델이 지금까지는 별로 실용적이지 못해서 적용되지 않았던 곳에도 적용될 수 있음을 의미하기도 한다. 예를 들어 IoT 기기와 같이 자원이 제한적인 클라이언트 환경 같은 곳이 대표적인 예가 될 것이다.  editor@itworld.co.kr

X