System Engineering/Kubernetes

1. 가상화와 Container의 차이

Hopulence 2021. 2. 20. 18:41
반응형

 

1. 가상화

 

 2010년도 초중반 즈음 기존의 Bare-metal에서 단일 서버의 리소스 사용 효율 형상과 비용 절감, HA등을 위해 Hypervisor기반의 가상화과 등장하였습니다. 그러나 Guest의 Image에 따라 Provisioning과 Booting에 수분의 시간의 소요되었고, 각 VM마다 OS를 구동하기 위한 하드웨어 리소스를 필요로 하였습니다. 또한, 전가상화, 반가상화 등의 방식에 따라 차이는 있겠지만, Guest에서는 Hypervisor를 통하여 H/W 리소스에 접근해야하기 때문에 Bare-metal에 비해 상대적으로 느릴 수 밖에 없었습니다.

 

 

Vitualization VS Container

 

 

초당 부동소수점 연산 회수로 가상화보다 컨테이너가 2배이상 빠르다.

 

2. Docker와 Container - Mircoservice

 

  Docker는 Linux cgroups과 namespace, chroot에서 발전한 컨테이너를 통해 Host에서 Application을 분할하고 격리하여 패키징•구동하는 플랫폼이다.

 

  • namespace : System Resource를 Process Level에서 격리하고 프로세스간 통신을 가능하게 한다.
  • chroot : 특정 디렉토리를 Root 디렉토리화 하여 하위에서 상위로 접근을 제어한다.

  • cgroup 

User Group에 따라 CPU/Memory/Network Bandwidth 등이 할당되고 Access가 제한된다.

 

3. MSA(MicroService Architecture)

 VM의 GuestOS가 사라져 경량화 되면서 Provisioning과 Booting 시간이 단축되었다.

  Virtual Machine Container
Weight 중량 경량
Performance <
Virtualization H/W 레벨 가상화 OS 레벨 가상화
Startup Time 수분 이내 수초 이내
Isolation 완전 격리 Process 레벨 격리
Resource Demand >

 

 그리고 Application이 컨테이너로 분할되고 분산되면서 컨테이너 간 Full-Mesh의 형태를 띄게 되었고, 이러한 아키텍쳐가 Microservice이다. 컨테이너로 가볍고 빠른 서비스가 가능해졌지만, 그만큼 관리해야 될 Node의 수가 많아졌고 복잡해졌다.

 * Microservice는 속도를 요구하는 시스템에서는 적합하지만, Life Cycle이 긴 시스템에서는 독이 될 수 있다.

 

 

4. Reference

서비스 경량화를 위한 MSA 설계 시 고려사항
Do Not Use MSA - 마이크로서비스 아키텍처가 꼭 필요한가요?
흔들리는 도커(Docker)의 위상: OCI와 CRI 중심으로 재편되는 컨테이너 생태계
SECURITY QUEENS
How I Used CGroups to Manage System Resources
반응형