컨테이너 기술과 가상화 기술의 주요한 차이점
가상화 기술은 하이퍼바이저를 통해 하드웨어를 에뮬레이션하여 가상 이미지 마다 게스트OS를 설치하여 사용합니다.
컨테이너 기술은 애플리케이션 수준으로 구성되며 호스트 OS 의 커널를 공유하여 OS를 가상화하기 때문에 OS 설치가 필요없어 이미지 크기가 작고, 고속으로 시작과 정지를 할 수 있습니다.
그 차이점을 보다 구체적으로 알아보겠습니다.
컨테이너 기술 관련 발표 자료 다운로드 하기
유튜브 동영상 보기
간단하게 표로 정리한 가상화 기술과 컨테이너기술 비교
|
하이퍼 바이저 형 가상화 |
컨테이너 형 가상화 |
---|---|---|
시작 시간 |
몇 분 |
몇 초 |
이미지 크기 |
수 GB ~ 수백 GB OS를 포함하여 애플리케이션과 필요한 런타임 소프트웨어 |
~ 수백 MB 애플리케이션과 런타임 소프트웨어만 |
Guest OS |
Windows/Linux 등 다양한 선택 가능 |
호스트 OS 와 동일한 OS |
이식성 |
대부분 가상 이미지에 대한 변환이 필요함 |
컨테이너 이미지 그대로 사용 가능 |
데이터 관리 |
VM 내부또는 연결된 스토리지에 저장 |
컨테이너 내부에 있는 데이터는 종료시 소멸되며, 필요에 따라 스토리지를 이용하여 저장 |
Guest OS 와의 관계 |
Guest OS는 하드웨어(가상)로 인식 |
Host OS를 커널 수준으로 분리하여 OS를 가상화 형태로 사용하여 필요에 따라 호스트와 리소스 공유 가능 |
발표 슬라이드의 내용을 각각 살펴 보겠습니다.
가상화기술 vs 컨테이너기술
오랫동안 운영해 오던 가상 서버들의 문제점들이 컨테이너기술을 통해 어떻게 해결될 수 있는 지 확인해 보겠습니다.
상태를 가지고 있는 가상화 기술과 상태가 없는 컨테이너기술이 어떤 장단점이 있는지도 함께 설명 드립니다.
Infrastructure Architectures의 진화
IT 인프라스럭처와 아키텍처는 베어 메탈에서 가상화를 거쳐 최근에는 컨테이너 기술로 발전하고 있습니다.
LXC 는 리눅스 컨테이너의 약자로서 일반적으로 컨테이너라고 불리고 있습니다.
각 기술들의 가장 큰 차이점은 보시는 것처럼 집적도에 있습니다.
유튜브 동영상 – 가상머신 vs 컨테이너
동일한 서버 스펙에서 가상화 기술과 컨테이너 기술을 비교해 보겠습니다.
가상머신에는 게스트OS가 반드시 있어야 합니다.
가상머신에 자원이 필요하면 CPU/Memroy/ Disk 를 스케일업해야 합니다.
컨테이너 기술에서는 자원이 필요하면 컨테이너를 자동으로 스케일 아웃합니다.
가상머신과 달리 게스트OS도 없고, 유휴자원도 사용할 수 있어 효율성이 매우 높습니다.
물리서버와 가상서버 비교 – 물리서버
물리머신은 베어메탈 장비에 호스트 OS 를 하나 설치합니다.
그리고 그 위에 여러 개의 WAS 인스턴스를 설치하여 운영합니다.
CPU 나 Memory 같은 하드웨어 자원들을 격리할 수 없으며, 어쩔 수 없이 확장이 어렵습니다.
물리서버와 가상서버 비교 – 가상서버
가상서버는 하이퍼바이저라는 하드웨어에뮬레이터를 이용하여 가상하드웨어를 제공합니다.
가상하드웨어에 Guest OS를 설치하고, 그 위에 애플리케이션이 필요한 WAS 인스턴스를 올립니다.
가상화 제품에 따라 이미지에 대한 호환성 문제와 하이퍼바이저와 Guest OS 에 대한 오버헤드가 있습니다.
물리서버 vs 가상서버 vs 컨테이너
컨테이너 기술은 리눅스에서 제공하는 프로세스 격리방법을 이용하여 가상 OS 형태로 분리하는 방법입니다.
호스트 OS 로 부터 프로세스 형태로 분리되기 때문에 오버헤드가 거의 없으며, 부팅 시간이 필요 없습니다.
컨테이너 기술은 자동확장과 자동복구 그리고 하이브리드 클라우드 를 지원하여 Poratabiltiy (이식성) 을 제공합니다.
시작 시간의 차이
가상서버는 호스트OS를 부팅하고, 하이퍼바이저를 동작 시키고, 게스트 OS가 부팅 된 후 애플리케이션을 초기화한 후 실제 서비스 동작 됩니다.
컨테이너는 Guest OS 가 없기 때문에 호스트OS 부팅 후에 바로 프로세스로 분리되어, 부팅없이 애플리케이션 실행이 가능합니다.
그래서 컨테이너는 가볍고 빠르기 때문에 갑작스런 사용자 폭증 즉 버스팅 이벤트에 더욱 적합합니다.
가상서버의 고질적 문제점
가상화 기술은 가상화 제품 별로 가상 이미지 포맷에 다를 수 뿐이 없기 때문에 호환성에 이슈가 있습니다.
또한 게스트OS를 설치하고 지속적으로 데이터를 저장하는 구조이기 때문에 경우에 따라 이미지가 몇 테라 씩 될 때가 있고, 이러 인해 이식성과 관리가 힘듭니다.
하이퍼바이저와 Guest OS때문에 부팅시간이 느리고, 가상서버을 운영하면 각각의 상태가 달라지는 Configuration Drift 현상도 발생됩니다.
컨테이너를 통해 가상서버 문제점 해결
컨테이너는 레이어드형태 즉 필요한 파일들을 차곡차곡 쌓기 때문에 단일 이미지의 사이즈는 당연히 작습니다.
또한 Guest OS 를 설치하지 않기 때문에 OS 설치공간이나 OS 부팅시간이 필요없습니다.
컨테이너로 패키징되면 어디든지 배포될수 있어 하이브리드 클라우드를 자연스럽게 지원하게 됩니다.
집적도 비교
같은 사양의 서버에서 가상서버와 컨테이너로 톰캣을 운영할 때 집적도가 어떻게 다른지 보여주는 데모 아키텍처 입니다.
컨테이너 환경에서 톰캣 인스턴스가 수배 이상 많아 집적도가 높다는 것을 알 수 있습니다.
해당 페이지는 비교 테스트에 대한 결과입니다.
가상머신 환경에서는 16개의 톰캣 인스턴스를 띄우는 것이 가능했고,
컨테이너 환경에서는, 40개의 톰캣 인스턴스를 띄우는 것이 가능했습니다.
영상을 통해 테스트의 과정을 살펴보도록 하겠습니다.
References & Related Links
- 컨테이너기술의 장점 – http://www.opennaru.com/openshift/container/benefits-of-container/
- 컨테이너기술과 가상화 기술 비교 – http://www.opennaru.com/cloud/virtualization-vs-container/
- 물리서버 , 가상화 , 컨테이너기술 진화의 역사 – http://www.opennaru.com/cloud/physical-server-virtualization-container/
OpenShift 자료 다운로드
/in Container, Kubernetes, OpenShift, 발표자료/by 실장 님컨테이너 기술과 개발자
/in Kubernetes, 분류되지 않음/by 실장 님DevOps 발표 자료 다운로드
/in Kubernetes, OpenShift, 분류되지 않음/by 실장 님