source : https://www.openmaru.io/?p=3076
가상화 기술은 하이퍼바이저를 통해 하드웨어를 에뮬레이션하여 가상 이미지 마다 게스트 운영 체제를 사용합니다.
컨테이너 는 애플리케이션 수준으로 구성되며 커널 하나를 공유하는 여러 OS 가상화하기 때문에 OS가 포함되지 않아 크기가 작고, 고속으로 시작과 정지 합니다.
그 차이점을 보다 구체적으로 알아보겠습니다.
4. • 자원 효율성, 자원 격리, 호환성, Auto Scaling, DevOps, MSA, 관리 편의성에서 비교
물리서버와 가상서버 비교 - 물리서버
5. • 자원 효율성, 자원 격리, 호환성, Auto Scaling, DevOps, MSA, 관리 편의성에서 비교
물리서버와 가상서버 비교 - 가상서버
6. • 자원 효율성, 자원 격리, 호환성, Auto Scaling, DevOps, MSA, 관리 편의성에서 비교
물리서버 vs 가상서버 vs 컨테이너 비교
7. • 하드웨어 가상화는 CPU, 메모리, 하드 디스크 등의 하드웨어를 가상화하고 있기 때문에
하드웨어와 OS 부팅이 필요 ( 부팅에 분 단위 시간 소요 )
• 컨테이너 형 가상화에서는 컨테이너 부팅 시 OS가 이미 시작된 상태
(프로세스 시작에 필요한 초 단위 시간 소요)
시작 시간 - Containers vs. VMs
오랫 동안 운영해 오던 가상서버들의 문제점들이 , 컨테이너 기술을 통해 어떻게 해결될 수 있는 지 확인해 보겠습니다.
상태를 가지고 있는 가상화 기술과 상태가 없는 컨테이너 기술이 어떤 장단점이 있는지도 함께 설명 드립니다.
IT 인프라스럭처와 아키텍처는 베어 메탈에서 가상화를 거쳐 최근에는 컨테이너 기술로 발전하고 있습니다.
LXC 는 리눅스 컨테이너의 약자로서 일반적으로 컨테이너라고 불리고 있습니다.
각 기술들의 가장 큰 차이점은 보시는 것처럼 집적도에 있습니다.
동일한 서버 사양에서 가상화 기술과 컨테이너 기술을 비교합니다.
가상머신에는 게스트OS가 반드시 있어야 합니다.
가상머신에 자원이 필요하면 스케일업해야 합니다.
컨테이너는 자원이 필요하면 컨테이너를 자동으로 스케일 아웃합니다.
컨테이너는 가상머신과 달리 게스트OS도 없고, 유휴자원도 사용할 수 있어 효율성이 매우 높습니다.
물리머신은 베어메탈 장비에 오에쓰를 하나만 설치합니다.
그리고 그 위에 여러 와쓰 인스턴스를 설치하여 운영합니다.
씨퓨유나 메모리 같은 하드웨어자원을 격리할 수 없으며, 확장이 어렵습니다.
가상서버는 하이퍼바이저라는 하드웨어에뮬레이터를 이용하여 가상하드웨어를 제공합니다.
가상하드웨어에 게스트오에쓰를 설치하고, 그 위에 애플리케이션이 필요한 와쓰인스턴스를 올립니다.
가상화 제품에 따라 이미지에 대한 호환성 문제와 하이퍼바이저와 게스트오에쓰에 대한 오버헤드가 있습니다.
컨테이너 기술은 리눅스에서 제공하는 프로세스 격리방법을 이용하여 가상 오에쓰로 분리하는 방법입니다.
호스트오에쓰에서 프로세쓰로 분리되기 때문에 오버헤드가 거의 없으며, 부팅 시간이 없습니다.
컨테이너 기술은 자동확장과 자동복구 그리고 클라우드 이식성을 제공합니다.
가상서버는 호스트 오에쓰를 부팅하고, 하이퍼바이저를 동작 시키고, 게스트 오에쓰가 부팅되어야 합니다.
컨테이너는 게스트오에쓰없이 호스트오에쓰에서 프로세스로 분리되어, 부팅없이 바로 실행 가능합니다.
그래서 컨테이너는 갑작스런 사용자 폭증 즉 버스팅 이벤트에 적합합니다.
가상화 제품 별로 가상이미지에 대한 호환성 이슈가 있습니다.
게스트오에쓰를 포함한 거대한 이미지는 몇 테라씩될 때가 있고, 이식성도 매우 떨어집니다.
하이퍼바이저와 게스트오에쓰때문에 부팅시간이 느리고, 가상서버 불일치 즉 컨퓨그레이션 디리푸트 현상도 있습니다.
컨테이너는 레이어드형태 즉 필요한 파일들을 차곡차곡 쌓기 때문에 단일 이미지사이즈가 작습니다.
게스트오에쓰가 없어서 오에쓰 설치공간이나 오에쓰 부팅시간이 필요없습니다.
컨테이너로 패키징되면 어디든지 배포될수 있어 하이브리드 클라우드를 지원합니다.
같은 사양의 서버에서 가상서버와 컨테이너로 톰캣을 운영할 때 집적도가 어떻게 다른지 보여주는 데모아키텍처 입니다.
컨테이너 환경에서 톰캣 인스턴스가 수배 이상 많아 집적도가 높다는 것을 알 수 있습니다.
해당 페이지는 비교 테스트에 대한 결과입니다.
가상머신 환경에서는 16개의 톰캣 인스턴스를 띄우는 것이 가능했고,
컨테이너 환경에서는, 40개의 톰캣 인스턴스를 띄우는 것이 가능했습니다.
영상을 통해 테스트의 과정을 살펴보도록 하겠습니다.