가상머신과 도커의 차이: 성능의 가벼움

도커 자체를 사용하는 입장에서는 그렇게 어렵게 사용하진 않습니다. vmware, kvm, virtualbox, hyper-v 등의 가상 머신을 써왔다면 충분히 쓸 수 있습니다. 구조 또한 비슷합니다. 가상 머신을 만들어서 리눅스를 설치하고, 각종 프로그램과 DB를 설치 후 개발한 프로그램을 올리고 서비스를 실행했습니다. 그리고 이 가상 머신을 여러 서버에 복사해서 실행하면 이 가상 머신 하나로 여러 서버를 계속 만들어냅니다. 도커 또한 마찬가지입니다. 이미지를 만들고, 각종 프로그램과 DB를 설치 후 개발한 프로그램을 올리고 서비스를 똑같이 실행합니다.

가상 머신 서버를 독자적으로 운영하거나 클라우드에서 서비스 형태로 운영되는 PaaS에서도 가상 머신을 이용한 서버 구성을 할 수 있게 되었는데, 이 가상머신으로의 작업은 편하고 이해하기 쉽지만 성능이 좋지 못한 단점이 있습니다. 가상화를 한 CPU나 디스크의 속도는 실제 머신에 비해 훨씬 느리기 때문입니다.

클라우드에서 쓰이는 가상화 환경들은 기존에 데스크톱에서 다른 머신들을 가상화하기 위해 쓰이던 전가상화 (full virtualization) 방식이 아닌 반가상화(para virtualization)을 이용하는 방식으로 구성되었고, 현재도 널리 쓰이지만 실제 머신에 직접 이용되기에는 아직 성능적으로 부족한 부분이 있는 것이 사실입니다.

1introduction-to-virtualization-27-638.jpg

전가상화와 반가상화는 이 그림이면 설명이 될 거 같군요. 사실 가상화 이론 자체에는 이것 외에도 여러 이론들이 있습니다만, 우선은 이정도만 보면 되겠습니다. 가상 머신 자체에는 게스트 운영체제, 즉 항상 그 안에도 운영체제를 설치해야 합니다. 그러나 도커의 컨테이너 이미지에는 운영체제가 포함되지 않습니다. 그렇기 때문에 가상머신에 비해 훨씬 가벼운 상태가 됩니다. 또한 가상머신 이미지를 여러 서버에 옮겨가는 작업은 네트워크로 이루어지게 될 텐데, 네트워크 속도가 아무리 빨라졌다고 하더라도 운영체제가 설치된 이미지 자체의 용량을 생각하면 결코 적은 용량이 아니게 됩니다. 따라서 배포에 대해서도 부담이 되게 됩니다. 반면에 도커는 게스트 운영체제를 설치하지 않고 이미지에 서버 운영을 위한 프로그램과 라이브러리만 특정하게 격리해서 설치할 수 있고(샌드박스 상태라고 보시면 됩니다.), 운영체제의 자원은 호스트의 자원을 그대로 이용합니다. 이렇게 되면 이미지 용량 자체가 크게 줄어들게 되니 배포에도 부담이 없게 됩니다.

가상 머신과 비교되는 구조입니다. 한 눈에 봐도 도커를 이용한 시스템은 호스트와 그대로 작업이 처리되는데 반해 가상 머신을 이용한 쪽은 중간에 있는 게스트 운영체제에 의해 또 다시 제어되는 걸 볼 수 있습니다.

하드웨어를 가상화하고 운영체제를 가상화 하는 곳 자체가 없기 때문에 메모리 접근 속도, 파일시스템 사용 속도, 네트워크 속도 등에서 가상머신에 비해 월등히 빠른 속도를 가집니다. 도커에서 동작하는 속도를 측정한 표가 검색해서 나왔길래 같이 보도록 하죠. Linpick이라는 테스트 툴을 이용하여 호스트, kvm(가상머신), 도커를 비교한 표입니다.

어떤 상태에서는 도커가 호스트보다 빠를 때도 있지만, 대게 호각이거나 거의 차이가 나지 않을 정도라 해도 될 정도로 미미한 차이가 발생하는 수준이군요. 그에 비하면 가상머신인 kvm의 속도는 확실히 차이가 납니다.

이러한 도커는 관리 몇에 있어서도 이미지 생성과 배포 자체에 특화된 관리 기능을 가지고 있습니다. 앞의 글에서도 도커는 파일 형태로 되어 있으며, 소스 코드 버전 관리처럼 관리할 수 있다고 했는데, 실제로 도커 이미지는 소스 관리하듯 관리할 수 있습니다. 또한 중앙에서 이미지를 올리고 받을 수 있는데, git에서 소스코드 올리고 받는 기능과 같다고 보면 됩니다. (push/pull 기능) github와 같은 기능을 하는 Docker hub(유료)도 존재합니다. 또한 API를 다양하게 지원하기 때문에 원하는 만큼 자동화도 할 수 있습니다. 따라서 개발 및 운용에서도 유용하게 할 수 있습니다.

“가상머신과 도커의 차이: 성능의 가벼움”의 3개의 생각

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.