본문으로 바로가기

[Container] 컨테이너 기술

category Backend/Cloud 2024. 3. 17. 14:21

1. 서버 가상화와 컨테이너

서버 가상화

• 서버 가상화란 하이퍼바이저를 이용해 CPU와 메모리, 저장소 등의 HW 자원을 에뮬레이트해 여러 OS를 하나의 HW에서 실행하는 기술

게스트 OS별로 커널을 점유하는 구조 (게스트 OS = 가상 머신에서 동작하는 OS)

• 주요 가상화 소프트웨어로는 VMware, VirtualBox Hyper-V, KVM 등이 있습니다.

 

VirtualBox, VMware

컨테이너

 컨테이너는 애플리케이션을 패키지화하고 실행하는 데 사용되는 경량화된 가상화 기술

다른 프로세스와 격리된 상태로 OS에서 SW를 실행하는 기술

 OS와 커널을 공유하고, 프로세스를 분리하는 구조

주요 컨테이너 솔루션으로는 Docker, Kubernetes, Podman 등이 있습니다.

 

Docker, Kubernetes

2. 서버 가상화 VS 컨테이너

서버 가상화 : 게스트 OS별로 커널을 점유하는 구조

→ 서버 가상화에서 커널 점유는 하이퍼바이저가 물리적 서버의 커널을 직접 제어하고 관리하는 것을 의미

[장점]

성능 : 하이퍼바이저는 커널을 직접 제어하여 VM 간의 낮은 지연 시간과 높은 성능을 제공

보안 : 하이퍼바이저는 커널을 직접 제어하여 VM 간의 강력한 격리를 제공

관리 : 하이퍼바이저는 커널을 직접 제어하여 VM을 쉽게 생성, 복제, 삭제하고 관리할 수 있음

 

[단점]

복잡성 : 하이퍼바이저는 커널을 직접 제어하기 때문에 개발 및 유지 관리가 더 복잡합니다.

호환성 : 하이퍼바이저는 특정 운영 체제와 호환되어야 하며, 모든 운영 체제를 지원하지 않을 수 있습니다.

보안 위험 : 하이퍼바이저는 특정 운영 체제와 호환되어야 하며, 모든 운영 체제를 지원하지 않을 수 있습니다.

성능 저하 : 하드웨어 가상화의 오버헤드로 인해 실제 하드웨어에서 실행하는 것보다 성능이 낮을 수 있습니다.

 

컨테이너 : OS와 커널을 공유하고, 프로세스를 분리하는 구조

→ 커널 공유 : 컨테이너는 호스트 시스템의 커널을 공유하여 오버헤드를 줄이고 가벼운 환경을 제공

→ 프로세스 분리 : 하나의 컨테이너 내에서 여러 개의 프로세스가 실행될 수 있고, 각각의 프로세스는 다른 컨테이너의 프로세스와 격리

  • 컨테이너는 네임스페이스, cgroup 등의 기술을 사용하여 프로세스를 분리
  • 네임스페이스는 각 컨테이너에게 독립적인 프로세스 ID(PID), 네트워킹, 마운트 등을 제공
  • cgroup은 각 컨테이너에게 CPU, 메모리, 스토리지 등의 리소스를 할당하고 제한

[장점]

가벼움: 컨테이너는 가상 머신(VM)보다 가볍고 빠르게 실행됩니다.
효율성: 컨테이너는 운영 체제를 공유하여 리소스를 효율적으로 사용합니다.
휴대성: 컨테이너는 플랫폼 독립적으로 실행될 수 있습니다.
확장성: 컨테이너는 쉽게 확장하고 관리할 수 있습니다.

 

[단점]

보안 위험: 컨테이너는 호스트 시스템의 운영 체제 커널을 공유하기 때문에, 커널 수준에서의 보안 취약성이 컨테이너 간에 영향을 미칠 수 있습니다.
네트워킹 복잡성: 컨테이너 네트워킹 설정이 복잡할 수 있습니다.

복잡한 설정 및 구성 : 컨테이너 기반 애플리케이션은 복잡한 설정 및 구성이 필요할 수 있습니다. 

특히 여러 컨테이너로 구성된 마이크로서비스 아키텍처의 경우, 각 컨테이너의 설정을 일관되고 안정적으로 관리하는 것이 중요

 

컨테이너의 경우 이러한 특징들로 인해 컨테이너는 빠른 배포와 확장이 가능하며,
다양한 환경에서 일관된 실행 환경을 제공할 수 있어 현대적인 애플리케이션 배포에 매우 유용합니다.

 

구분 서버 가상화 컨테이너
기술 하이퍼바이저 컨테이너 엔진
운영 체제 각 VM마다 독립적인 OS 호스트 OS를 공유
리소스 활용 높음 매우 높음
성능 낮음 높음
복잡성 높음 낮음
휴대성 낮음 높음
확장성 높음 매우 높음

 

구분 가상화 기술 컨테이너 기술
가벼움 무겁고 느리게 실행 가볍고 빠르게 실행
효율성 각 VM마다 독립적인 OS를 사용하여 리소스 사용량이 더 높음 운영 체제를 공유하여 리소스를 효율적으로 사용
휴대성 플랫폼 종속적 플랫폼 독립적으로 실행
확장성 확장이 비교적 어려움 쉽게 확장하고 관리
격리 높은 수준의 격리 낮은 수준의 격리
보안 하이퍼바이저가 공격 벡터가 될 수 있음 공격 벡터가 될 수 있음
복잡성 비교적 복잡 비교적 간단