1. 가상화
2010년도 초중반 즈음 기존의 Bare-metal에서 단일 서버의 리소스 사용 효율 형상과 비용 절감, HA등을 위해 Hypervisor기반의 가상화과 등장하였습니다. 그러나 Guest의 Image에 따라 Provisioning과 Booting에 수분의 시간의 소요되었고, 각 VM마다 OS를 구동하기 위한 하드웨어 리소스를 필요로 하였습니다. 또한, 전가상화, 반가상화 등의 방식에 따라 차이는 있겠지만, Guest에서는 Hypervisor를 통하여 H/W 리소스에 접근해야하기 때문에 Bare-metal에 비해 상대적으로 느릴 수 밖에 없었습니다.
2. Docker와 Container - Mircoservice
Docker는 Linux cgroups과 namespace, chroot에서 발전한 컨테이너를 통해 Host에서 Application을 분할하고 격리하여 패키징•구동하는 플랫폼이다.
- namespace : System Resource를 Process Level에서 격리하고 프로세스간 통신을 가능하게 한다.
- chroot : 특정 디렉토리를 Root 디렉토리화 하여 하위에서 상위로 접근을 제어한다.
- cgroup
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
'System Engineering > Kubernetes' 카테고리의 다른 글
6. K8s Volume (0) | 2021.04.05 |
---|---|
5. K8s Lifecycle / Configmap (0) | 2021.04.02 |
4. K8s Service / Ingress (0) | 2021.03.30 |
3. K8s Controller (0) | 2021.03.25 |
2. Kubernetes Architecture (1) | 2021.02.23 |