전사적으로 관련 기술에 대해 발표를 한 뒤 잊지 말자는 차원에서 간단하게 기록합니다.

먼저 최대한 쉽게 설명을 드리고 다음으로 실제로 도커 컨테이너 활용 사례를 말씀드리겠습니다.

도커 컨테이너란?

가상머신보다 빠르고 가벼운 독립적인 가상화 공간입니다.

프로젝트 규모가 커짐에 따라 확장성과 유지 보수의 용이성을 위해 서비스 단위를 나눌 필요가 있습니다.

각각의 서비스를 아래의 사진 중 애플리케이션이라고 전제하에 말씀드리도록 하겠습니다.

가상화는 두 가지로 분류되는데요 먼저 컨테이너 방식과 가상머신 방식이 있습니다.

가상머신 방식에서 또 두 가지로 나눈다면 Host OS가 없는 베어메탈 방식과 Host OS가 있는 방식으로 나눌 수 있는데 일반적으로 VMware을 사용해 봤을 거라 생각하기에 Host OS가 있는 방식으로 사진을 첨부하였습니다.

가상머신은 위의 사진과 같이 각각의 애플리케이션마다 필연적으로 GuestOS가 필요로 합니다.

이 Guest OS는 우리가 흔히 생각하는 윈도우 리눅스 등과 같은 OS이므로 굉장히 사이즈가 큽니다. 그에 따라 많은 리소스 낭비와 서비스를 추가적으로 두기에도 많이 제약이 따릅니다.

반면에 컨테이너는 하나의 Host OS의 커널을 각각의 애플리케이션이 공유를 합니다.

Host OS의 커널이 namespace, cgroups, chroot 등의 기술로 각각의 애플리케이션을 독립적인 가상화 공간을 만들어 각각의 애플리케이션이 실행할 수 있는 최소한의 실행환경을 제공해 줍니다. 이에 따라 가상머신과는 달리 애플리케이션마다 Guest OS를 가질 필요가 없으므로 실행 단위가 굉장히 가볍고 그렇기 때문에 여러 개의 애플리케이션 즉 많은 서비스 마이크로 서비스하기에 적절합니다.

또한 HostOS에서 다수의 Guest OS를 두기 위한 하이퍼바이저를 사용하는 것이 아니라 하나의 Host OS의 커널을 공유하기 때문에 가상화 기술을 쓰지 않았을 때와 성능 차이가 1%밖에 나지 않습니다.

커널은 운영체제의 모든 것을 메모리에 적재한 것이 아니라 핵심 부분을 메모리에 적재한 것을 커널이라고 합니다.

컨테이너의 시초는 리눅스 컨테이너지만 이를 활용하여 컨테이너를 다양하게 활용할 수 있도록 기능을 추가하고 확장하여 자체적인 엔진을 만든 것이 도 커집니다.

이렇게 빠르고 가벼운 컨테이너를 실제로 어떻게 서비스를 할까요?

도커 컨테이너 활용 사례

도커 컨테이너 활용 사례 중 하나인 구름 ide입니다.

차후에 설명드리겠지만 구름 ide는 웹페이지에서 개발이 가능한 통합개발 환경입니다.

간단하게 설명드리자면 구름 ide는 웹에서 사용자에게 컨테이너라는 독립적인 가상화 공간을 제공해 주고, 이 공간에 사용자가 개발하고 싶은 소프트웨어 스택을 선택한 다음 개발을 할 수 있도록 환경을 제공해 줍니다.

컨테이너에서 생성할 수 있는 소프트웨어 스택은 다음과 같습니다.

프리미엄 쿠폰을 제공받았을 때 한 사용 자당 20개의 컨테이너를 생성할 수 있습니다. 만약 가상머신 방식이라면 한 사용자에게 이렇게 많은 독립적인 가상화 공간을 제공해 줄 수 있을까요?

구름 ide 같은 경우는 처음에는 qemu라는 가상머신 방식을 사용하고 그다음 리눅스 컨테이너 방식 그리고 도커 컨테이너 방식으로 발전해 왔고 현재 도커 컨테이너로 계속해서 서비스 중입니다.

컨테이너가 빠르고 가벼운 건 사실이지만 가상머신과 비교해 봤을 때 각각의 장단점은 존재합니다.

각각의 서비스가 서로 다른 운영체제에서 실행이 되어야 한다면 가상머신 방식을 사용해야 합니다. 컨테이너는 하나의 Host OS의 커널을 공유하기 때문에 여러 개의 OS를 가지지 못합니다. 하지만 여러 개의 운영체제가 필요 없다면 당연히 컨테이너 방식을 가는 게 맞는다고 생각합니다.

감사합니다.

댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday