[실용주의 클라우드 컴퓨팅]컨테이너의 시대 주역 '도커' 인기비결은

컨테이너가 '핫'하다. 최근 많은 기업이 내부 배포를 도커로 바꾸고 있고, 깃허브·깃랩 등 도구에서도 CI/CD(Continuous Integration/Continuous Delivery)로 컨테이너 배포를 지원하고 있다. 컨테이너 전환은 점점 더 가속화할 전망이다. 쿠버네티스는 학습에 시간이 좀 걸리긴 하지만 컨테이너 오케스트레이션의 업계 표준이나 마찬가지다. 컨테이너 솔루션은 기술 중심의 '테크 자이언트'들이 나서서 빠르게 도입하고 있다. 기술력이 충분하지 않은 중소기업 역시 시간문제일 뿐 확산일로에 있다고 볼 수 있다.

[실용주의 클라우드 컴퓨팅]컨테이너의 시대 주역 '도커' 인기비결은

사실 컨테이너 개념 자체는 1960년에 나왔다. 이 기술의 최초 구현체를 2000년에 나왔던 FreeBSD의 자일(Jail)이라고 본다면 벌써 20년이나 됐다. 그동안 OpenVZ, LXC 같은 컨테이너 솔루션이 없지는 않았지만 대중화되지 못했다. 지금처럼 컨테이너를 각광받게 한 주역은 역시 도커이다.

도커는 다른 솔루션과 어떤 차이가 있기에 이렇게까지 인기를 끌게 된 것일까. 그 이유는 여러 가지가 있다. 도커가 막 출시되었을 때 업계에선 좀 더 가벼운 가상화 솔루션을 찾고 있었기 때문에 흐름이 잘 맞아 떨어졌다. 커널 외에는 어떤 것도 공유하지 않는 구조 역시 기존과 차이가 있다. 도커와 유사한 솔루션인 OpenVZ는 초기화 프로세스부터 다시 시작하는 것으로, 가상 머신을 경량화한 형태에 가까웠다.

클라우드와 컨테이너 개념도
클라우드와 컨테이너 개념도

하지만 도커는 프로세스와 라이브러리를 묶은 것 같은 형태이기 때문에 훨씬 가볍고 제약이 적었다. 또한 만들어진 이미지는 도커 허브를 통해 공유할 수 있어 설치가 간편하고 수정된 이미지는 UFS(Union File System)를 통해 업데이트할 수 있다. 기능은 강력하지만 사용법은 직관적이고 간단해 접근이 쉽다는 것도 장점이다.

물론 도커만으로는 현대적 SW 개발과 운영에 필요한 기능을 모두 수용하지 못한다. 도커 컴포즈나 도커 스웜, 쿠버네티스 등 주변 생태계가 풍부하게 성장한 것 역시 도커 확산에 영향을 미쳤다.

그러나 무엇보다도 기존 컨테이너 솔루션과 도커를 구분하는 핵심 요소는 운영방식이다. 기존 컨테이너 기술인 OpenVZ, LXC, Proxmox 등 목표는 모두 경량의 VM을 제공하는 것이었다. VM의 효용은 모두 공감하지만 가상화를 위한 HW 지원이 필요할 뿐만 아니라 실제 OS 부트 업 과정이 있어야 한다. 필요할 때 바로 쓰기에는 너무 컸다. 기존 기술들은 이러한 문제를 해소하기 위해 아주 가벼운 운영환경을 분리, HW 부팅 없이 초기화 프로세스부터 시작할 수 있다.

따라서 컨테이너란 VM처럼 접속해 프로그램을 설치할 수 있고 VM처럼 관리하는 것이었다. 물리 서버에서 VM으로, 그리고 다시 컨테이너로 환경이 바뀌었으나 운영방식은 물리 서버를 사용할 때와 다르지 않았다.

하지만 도커는 하나의 '애플리케이션'을 패키징한 형태다. 불필요한 프로세스는 존재하지 않는다. 오로지 애플리케이션을 실행하기 위한 라이브러리만 같이 묶는다. 애플리케이션을 실행하지만 개별 애플리케이션에 필요한 환경은 완전히 독립돼 있다. 각 컨테이너가 공유하는 것은 커널뿐이다. 이렇게 애플리케이션을 배포하면 호스트 환경과 관계없이 애플리케이션 실행이 보장된다. 커널에 대한 호환성 등 최소한의 조건만 유지된다면 컨테이너는 어디서든 옮겨가면서 실행될 수 있게 된 것이다.

즉, 도커가 탄생하고 난 후에야 비로소 패키징한 애플리케이션의 실행 독립성이 보장됐다고 말할 수 있다. 이것의 의미는 매우 크다. 서버 사양이 달라서, 커널 버전이 달라서, 설치된 라이브러리가 맞지 않아서 등 정상적으로 작동하던 애플리케이션이 다른 곳에서 제대로 작동하지 않는 이유는 너무 많았다. 하지만 이제는 검증된 하나의 이미지만 있으면 어디서든 애플리케이션을 자유롭게 실행할 수 있다. 이로써 개발자들은 운영환경과 관계없이 애플리케이션을 실행할 자유를 얻게 되었고, 이로부터 CI/CD라 일컬어지는 개발·배포 방식의 변화가 빠르게 확산하기 시작했다. 이는 다시 마이크로서비스로의 이전을 가속한다. 세간에서 말하는 클라우드 네이티브의 요체가 바로 이것이다.

<자료제공:클라우드 전문기업 케이아이엔엑스(KINX)> 노규남 클라우드사업담당 이사 bardroh@kinx.net