'도커'에 개발·운영이 함께 흥분한 이유

레진코믹스 김영찬 개발자, 관리 편의성 강조

일반입력 :2014/07/21 10:53    수정: 2014/07/21 13:14

리눅스 컨테이너 가상화 패키지 기술 ‘도커(Docker)’에 대한 관심이 고조되고 있다.

도커는 리눅스컨테이너가상화(LXC) 기술을 활용해 애플리케이션 컨테이너를 자동 생성하는 기술이다. 리눅스 커널 위에 CPU, 메모리, 스토리지, 네트워크 등의 자원을 애플리케이션마다 별도로 격리된 가상공간으로 할당한다. 하이퍼바이저와 달리 게스트OS란 계층이 없기 때문에 더 가볍고, 빠른 성능을 보여준다.

VM웨어 등이 제공하는 서버 가상화 기술은 서버 한대를 여러대처럼 쓸 수 있게 해줘 IT효율성을 끌어 올려주는 기술인 반면 도커와 같은 컨테이너 가상화 기술은 특정 애플리케이션에 최적화된 가상 공간을 만들어주는 개념으로 보면 된다.

도커는 최근 구글의 강력한 지원사격에 힘입어 갈수록 세가 터지는 모습이다. 구글이 자신들의 모든 서비스에 도커와 컨테이너 기술을 활용하고 있다고 밝히면서, 도커는 일약 엔터프라이즈급 기술로 받아들여지고 있다. 때를 맞춰 도커 개발을 주도해온 닷클라우드가 회사명을 ‘도커’로 바꾸고, 도커1.0 패키지와 엔터프라이즈 기술지원서비스도 발표했다.

우분투, 레드햇부터 IBM, 마이크로소프트 등 대형 IT벤더들이 경쟁적으로 도커에 대한 지지의사를 밝히는 상황이다.

지난해 네이버 데뷰2013에서 도커 활용사례를 발표했던 레진코믹스의 김영찬 개발자는 “도커는 OS 부팅시간이 없어서 아파치웹서버를 띄울 때 1~2초밖에 걸리지 않는다”며 “VM을 가볍고 쉽게 관리할 수 있다는 것도 큰 장점”이라고 말했다.

리눅스 컨테이너 가상화(LXC)는 이미 존재했던 기능이다. 솔라리스를 비롯한 유닉스 OS에서 제공했던 컨테이너 기능을 리눅스에서도 활용하게 하는 것이다. 그러나 LXC는 리눅스의 여러 요소를 조합해야 사용할 수 있는 기능이다. 이 조합 자체가 매우 복잡해 쉽게 시도하기 어려웠다.

그는 “도커는 복잡하고 까다로운 LXC 활용을 쉽게 해주는 API의 덩어리라 볼 수 있다”며 “요소를 조합하는 과정을 API로 만들어 사용하기 쉽게 만든 것”이라고 설명했다.

그에 따르면, 도커는 LXC를 쉽게 활용하게 해준 것을 넘어 이제 컨테이너 최적화 기술로 거듭나고 있다. LXC 외에 리브컨테이너(libcontainer)란 별도의 드라이버를 만들었고, 특정 우분투 버전 외에 다양한 리눅스를 지원하게 됐으며, 맥OS나 윈도서도 사용할 수 있는 길이 열리고 있다. 리눅스란 틀을 깨는 상황이 벌어지고 있는 것이다.

그렇다면 도커는 누구에게 매력적인 툴일까. 개발자, IT운영자 모두에게 매력적일 수 있다는 게 김영찬씨의 생각이다.

그는 “일반적인 활용사례를 보면 데브옵스(DevOps)에 특화되고 있다”며 “도커 컨테이너는 내가 개발한 소스를 여러 IT스탬과 SW환경의 다양한 조건에 맞춰 일일이 개발하지 않아도 되기 때문이다”고 말했다.

SW는 다양한 변수를 감안해 개발돼야 한다. SW를 작동시키는 기반 하드웨어와 SW환경의 조합이 너무 다양한 탓이다. 개발자가 사용한 IT환경이 실제 운영환경과 다를 수 있고, OS의 미세한 차이 때문에 오류를 일으키는 게 다반사다. 때문에 개발과 테스트를 거쳐 실제 운영환경에 들어가기 전 스테이지 서버란 단계를 둬 최종으로 점검하게 된다.

그는 “내가 짠 코드가 우분투에선 되는데 센트OS에서 반드시 돌아간다는 보장을 못한다”며 “이런 환경을 소스와 패키지 안에 포함시킨다면 환경 때문에 생기는 이슈는 없어질 것이다”고 설명했다.

컨테이너는 IT환경에 대한 제어를 포함한다. 앱을 만든다면, 개발 환경으로 설정한 환경을 실제 운영 환경에서도 그대로 유지할 수 있다. 그는 “내가 개발할 때 썼던 OS환경, 웹서버 버전 같은게 다 설정돼서 소스와 패키징해서 그대로 받으니, 도커를 구동하는 환경만 달라지지 않으면 이슈 생길 부분이 없다”며 “하드웨어 부분도 네트워크 설정 정도만 달라지니 자동화 관리가 가능하다”고 강조했다.

도커 컨테이너는 특정 앱이 하드웨어와 SW스택을 어떻게 활용하겠다는 설정까지 포함한 이미지 형태다. 이미지를 복제해서 그대로 다른 인프라에 올리면 바로 사용할 수 있다는 얘기다. 시스템 업데이트나 교체, 기능개선, 롤백 등의 작업도 간편하다.

그는 “특히 서버 솔루션 업체 입장에서 가장 어려운 게 테스팅이다”며 “도커를 쓰면 이미지 만들고 소스 갖다 놓고 이미지 만들고. 다른 OS나 라이브러리, JVM 버전 다 달리 해서 이미지를 만들어 놓고, 마운트한 걸 컨테이너 만들어 테스팅하면 된다”고 설명했다.

그는 “내 로컬 컴퓨터에서 그 기능 테스트를 다 할 수 있다”며 “자원을 공유하니. 로컬 머신이 상대적으로 스펙이 낮아도 충분히 할 수 있게 되는 것이다”고 덧붙였다.

도커를 사용하면 개발과 운영의 시스템적 이질성이 사라진다. 호환성 이슈가 줄어드니 새로 개발된 앱을 운영 쪽에서 마다할 이유가 줄어든다. 개발과 운영 모두 흥분한 주된 이유다.

그러나 도커도 명확한 단점이 존재한다. 일단 도커 컨테이너 생성을 위해 기반 기술에 대한 어느정도의 이해가 필요하다.

관련기사

김영찬씨는 “도커는 개발자가 어떤 이미지를 머리속으로 상상해 만들어야 한다”며 “직접 셸에 들어가서 명령어를 쳐가며 VM에 들어간 형태로 구성해가야 하기 때문에 한번에 정확히 플랜을 세워서 하지 않으면 작업이 까다로워진다”고 말했다.

그는 또한 “퍼포먼스 측면에서 보면 프로세스가 많이 필요한 대규모 조직의 경우 도커 활용 가능성이 높지만, 일반적 회사에선 아직까진 쉽지 않다”고 덧붙였다.