Containerization vs Virtualization

이정훈·2024년 7월 31일

Docker

목록 보기
2/34

Containerization과 virtualization은 둘 모두 한 개의 물리 머신이나 호스트에서 여러개의 애플리케이션이나 워크로드를 허용하기 위한 기술입니다.
Containerization과 virtualization은 소프트웨어 인프라스트럭쳐를 설정하기 위한 유명한 접근방법입니다.

현재에 와서는 Container가 cloud-native 개발에서 주로 많이 쓰입니다.

virtual machine이란?

virtual machine(VM)은 물리적인 컴퓨터를 모방하는 기술입니다.
VM은 같은 콤포넌트들, OS, 네트워크 인터페이스, 애플리케이션을 포함합니다.
그러나 VM은 하나의 물리적 컴퓨터 안에 샌드박스로 포함됩니다.
이 말은 한 대의 물리적 컴퓨터가 여러개의 VM을 가질 수 있다는 것입니다.
이는 개발에 매우 유용한데 가상화된 컴퓨터 환경을 VM을 통해 빌드 할 수 있습니다.
VM은 hypervisor없이는 실행될 수 없습니다.
hypervisor은 경량화된 소프트웨어 계층으로 VM을 분리하고 프로세서, 메모리 및 스토리지를 할당합니다.

Virtualization은 무엇이고 어떻게 작동하는가?

Virtualization은 물리적인 하드웨어로부터 분리된 계층으로 소프트웨어를 이용하여 가상화된 리소스를 만드는 것입니다.
가장 유명한 예시가 클라우드 컴퓨팅입니다.
Virtualization은 컴퓨터에 설치할 필요없이 사용자들이 애플리케이션에 접근할 수 있게 해줍니다.

아래는 Virtualization을 사용함으로써 얻는 장점입니다.

  • 앱들에서 모든 OS 리소스들을 사용가능
  • 충실한 기능성
  • 보다 나은 보안성 도구와 제어
  • 강력한 관리 도구
  • 비용 절감과 높은 효율
  • 오버헤드 없는 중앙 집중식 워크로드

VM 제공자들로는 VirtualBox, VMware Workstation Player, Microsoft Hyper-V가 있습니다.

Virtualization의 한계

  • 여러 운영 체제와 가상 하드웨어 복사본을 실행하려면 상당한 RAM과 CPU 리소스가 필요
  • private 클라우드와 public 클라우드 사이 간의 전화 data center간의 전환은 소프트웨어 개발 주기를 더욱 복잡하게 만듦
  • 모놀리식이고 애플리케이션은 하나의 단일 대용량 파일로 실행
  • 컴퓨터 리소스와 주기를 매우 빠르게 누적
  • 일부 애플리케이션들은 적절히 실행되지 못함
  • 일부 오래되거나 특수화된 애플리케이션은 virtualization software와 상호호환이 안되거나 추가적인 환경 설정을 요구
  • 더욱 많은 하드웨어 리소스를 요구할 때 가상화된 환경은 물리적 환경보다 scaling에서 더 복잡할 수 있음.

Containers란?

Containers는 종속성과 구성을 단일 단위로 캡슐화하여 애플리케이션을 주변 환경으로부터 격리하는 수단입니다.
이렇게 하면 이후 유닛은 prvate clouds, public clouds, data centres와 같은 다른 환경에서 작동가능합니다.
hypervisor없이 환경을 가상화하기 때문에 더 경량화되고 빠릅니다.

Containerization이란?

컨테이너화는 애플리케이션이나 마이크로서비스를 실행하는 데 필요한 모든 구성 요소를 패키지화하는 과정입니다. 여기에는 관련 라이브러리들도 포함됩니다. 각 컨테이너는 코드, 의존성, 그리고 운영 체제 자체를 포함합니다. 이 방식은 애플리케이션이 여러 플랫폼에서 동일한 방식으로 실행될 수 있게 해줍니다.

컨테이너화는 운영 체제(OS) 가상화의 한 형태로, 호스트 운영 체제의 기능을 활용하여 프로세스를 격리하고, 이들의 메모리, 디스크 공간, CPU 접근을 제어합니다.

컨테이너화 기술이 본격적으로 주류에 등장한 것은 Docker의 도입과 함께였습니다. Docker는 2013년에 공개된 오픈 소스 플랫폼으로, 컨테이너화된 애플리케이션을 구축, 배포 및 관리하는 데 사용됩니다. Docker의 도입 이후, 컨테이너 기술과 생태계는 급격히 발전했습니다.

Containerization은 다음과 같은 이점을 가집니다.

  • IT 관리 리소스 점유 감소
  • 더욱 작은 사이즈 요구
  • 더 빠른 가동 및 다순환된 보안 업데이트
  • 워크로드를 마이그레이션, 전송 또는 업로드하는 데 필요한 코드를 줄임
  • 빠른 전달
  • 편리한 관리

Containerization은 어떻게 작동하는가?

Containerization은 호스트의 OS커널을 읽기 전용 리소스로 다른 컨테이너와 공유함으로써 작동합니다.
이 방법은 하나의 OS만을 필요로 합니다.
컨테이너를 사용하면 애플리케이션을 가장 작은 구성 요소 또는 마이크로서비스로 나눌 수 있습니다. 이러한 서비스는 독립적으로 개발 및 배포되므로 모놀리식 단위가 제거됩니다.

Containerization의 한계

  • 모든 containers가 비슷한 OS에서 실행되어야 합니다.
  • 만약 containers가 서로 다른 OS에 기반한다면 그들은 서로 다른 호스트를 필요로 합니다.
  • 호스트 시스템의 모든 컨테이너가 OS를 공유하므로 OS 커널에 보안 취약점이 발생할 수 있습니다.
  • 이 솔루션은 아직 개발 및 개선 중이므로 채택하기가 더 복잡할 수 있습니다.

Containerization vs Virtualization


아래는 Containerization과 Virtualization의 기본적인 차이입니다.

profile
기록으로 흔적을 남깁니다.

0개의 댓글