컨테이너 환경의 배포
컨테이너
출처 - [쿠버네티스 - 여정 돌아보기]
위 그림은 전통적인 배포 -> 가상화 장비에 배포 -> 컨테이너 배포를 의미한다.
전통적인 환경은 일반적으로 물리 장비 한대에 여러개의 어플리케이션(그림에서 "App"으로 표현)를 배포 하였는데, 이렇게 할경우, 어플리케이션의 리소스 한계를 정의 하지 못해서 하나의 어플리케이션이 많은 리소스를 필요로 할때, 장비의 모든 리소스를 찾지하여, 다른 어플리케이션에 영향을 주게 된다. 반대로, 어플리케이션의 독립성을 보장하기 위해, 하나의 물리장비에 하나의 어플리케이션을 설치 할경우, 물리장비의 많은 리소스가 낭비될수 있어, 리소스의 비효율성이 들어난다. 때문에 전통적인 환경에서는 어플리케이션의 리소스 관리가 어려웠다.
가장화된 배포 환경 의 경우 하이퍼바이져 위에 VM(Vertual Machine)을 생성하고, 별도의 운영체제를 설치 하고, 해당 운영체제 위에 어플리케이션을 설치 하는 방식이다. VM의 리소스를 제한할수 있고, 복제 및 증설이 용이해져서, 많은 이득을 준다.
컨테이너와 차이는 무엇일까? 위 그림에서 알수 있듯이, Hypervisor가 Container Runtime으로 변경 되고, 회색 박스 안에서 Operating System(OS:운영체제)가 빠졌다. 각 회색박스로 자원은 격리 되면서, 운영체제가 빠지면서 컨테이너는 더 가벼워지고, 작아 진것이다. 이것은 어플리케이션을 분산 배포 함에 있어, 기민한 애플리케이션 생성과 배포를 가능하게 한다.