1. 서버 가상화와 컨테이너
서버 가상화
• 서버 가상화란 하이퍼바이저를 이용해 CPU와 메모리, 저장소 등의 HW 자원을 에뮬레이트해 여러 OS를 하나의 HW에서 실행하는 기술
• 게스트 OS별로 커널을 점유하는 구조 (게스트 OS = 가상 머신에서 동작하는 OS)
• 주요 가상화 소프트웨어로는 VMware, VirtualBox Hyper-V, KVM 등이 있습니다.
컨테이너
• 컨테이너는 애플리케이션을 패키지화하고 실행하는 데 사용되는 경량화된 가상화 기술
• 다른 프로세스와 격리된 상태로 OS에서 SW를 실행하는 기술
• OS와 커널을 공유하고, 프로세스를 분리하는 구조
• 주요 컨테이너 솔루션으로는 Docker, Kubernetes, Podman 등이 있습니다.
2. 서버 가상화 VS 컨테이너
서버 가상화 : 게스트 OS별로 커널을 점유하는 구조
→ 서버 가상화에서 커널 점유는 하이퍼바이저가 물리적 서버의 커널을 직접 제어하고 관리하는 것을 의미
[장점]
성능 : 하이퍼바이저는 커널을 직접 제어하여 VM 간의 낮은 지연 시간과 높은 성능을 제공
보안 : 하이퍼바이저는 커널을 직접 제어하여 VM 간의 강력한 격리를 제공
관리 : 하이퍼바이저는 커널을 직접 제어하여 VM을 쉽게 생성, 복제, 삭제하고 관리할 수 있음
[단점]
복잡성 : 하이퍼바이저는 커널을 직접 제어하기 때문에 개발 및 유지 관리가 더 복잡합니다.
호환성 : 하이퍼바이저는 특정 운영 체제와 호환되어야 하며, 모든 운영 체제를 지원하지 않을 수 있습니다.
보안 위험 : 하이퍼바이저는 특정 운영 체제와 호환되어야 하며, 모든 운영 체제를 지원하지 않을 수 있습니다.
성능 저하 : 하드웨어 가상화의 오버헤드로 인해 실제 하드웨어에서 실행하는 것보다 성능이 낮을 수 있습니다.
컨테이너 : OS와 커널을 공유하고, 프로세스를 분리하는 구조
→ 커널 공유 : 컨테이너는 호스트 시스템의 커널을 공유하여 오버헤드를 줄이고 가벼운 환경을 제공
→ 프로세스 분리 : 하나의 컨테이너 내에서 여러 개의 프로세스가 실행될 수 있고, 각각의 프로세스는 다른 컨테이너의 프로세스와 격리
- 컨테이너는 네임스페이스, cgroup 등의 기술을 사용하여 프로세스를 분리
- 네임스페이스는 각 컨테이너에게 독립적인 프로세스 ID(PID), 네트워킹, 마운트 등을 제공
- cgroup은 각 컨테이너에게 CPU, 메모리, 스토리지 등의 리소스를 할당하고 제한
[장점]
가벼움: 컨테이너는 가상 머신(VM)보다 가볍고 빠르게 실행됩니다.
효율성: 컨테이너는 운영 체제를 공유하여 리소스를 효율적으로 사용합니다.
휴대성: 컨테이너는 플랫폼 독립적으로 실행될 수 있습니다.
확장성: 컨테이너는 쉽게 확장하고 관리할 수 있습니다.
[단점]
보안 위험: 컨테이너는 호스트 시스템의 운영 체제 커널을 공유하기 때문에, 커널 수준에서의 보안 취약성이 컨테이너 간에 영향을 미칠 수 있습니다.
네트워킹 복잡성: 컨테이너 네트워킹 설정이 복잡할 수 있습니다.
복잡한 설정 및 구성 : 컨테이너 기반 애플리케이션은 복잡한 설정 및 구성이 필요할 수 있습니다.
특히 여러 컨테이너로 구성된 마이크로서비스 아키텍처의 경우, 각 컨테이너의 설정을 일관되고 안정적으로 관리하는 것이 중요
컨테이너의 경우 이러한 특징들로 인해 컨테이너는 빠른 배포와 확장이 가능하며,
다양한 환경에서 일관된 실행 환경을 제공할 수 있어 현대적인 애플리케이션 배포에 매우 유용합니다.
구분 | 서버 가상화 | 컨테이너 |
기술 | 하이퍼바이저 | 컨테이너 엔진 |
운영 체제 | 각 VM마다 독립적인 OS | 호스트 OS를 공유 |
리소스 활용 | 높음 | 매우 높음 |
성능 | 낮음 | 높음 |
복잡성 | 높음 | 낮음 |
휴대성 | 낮음 | 높음 |
확장성 | 높음 | 매우 높음 |
구분 | 가상화 기술 | 컨테이너 기술 |
가벼움 | 무겁고 느리게 실행 | 가볍고 빠르게 실행 |
효율성 | 각 VM마다 독립적인 OS를 사용하여 리소스 사용량이 더 높음 | 운영 체제를 공유하여 리소스를 효율적으로 사용 |
휴대성 | 플랫폼 종속적 | 플랫폼 독립적으로 실행 |
확장성 | 확장이 비교적 어려움 | 쉽게 확장하고 관리 |
격리 | 높은 수준의 격리 | 낮은 수준의 격리 |
보안 | 하이퍼바이저가 공격 벡터가 될 수 있음 | 공격 벡터가 될 수 있음 |
복잡성 | 비교적 복잡 | 비교적 간단 |