본문 바로가기

인프라

컨테이너 기술의 역사

전통방식의 배포 -> 가상화 배포-> 컨테이너 배포-> 쿠버네티스 배포

 

전통 방식의 배포

  • 전통 방식의 배포형태는 물리적 컴퓨터에 애플리케이션을 배포하는 형태
  • 이 방식은 하나의 하드웨어에 여러 애플리케이션이 관리되는 경우 앱간의 라이브러리 의존성 문제가 발생
  • 예를 들면 게시판 앱에서 스프링 4버전을 사용하고 채팅 앱에서 스프링 5버전을 사용할 경우 하나의 컴퓨터 안에서 라이브러리가 충돌하는 문제가 발생할 수 있음

가상화 배포

  • 내 컴퓨터 내에서 가상 컴퓨터를 여러개 설치하는 개념으로 내부에 있는 가상 머신 하나하나가 격리되고 독립된 컴퓨터
  • 하드웨어 위에 Host OS를 설치하고 가상머신들을 관리하는 Hypervisor라는 컴포넌트를 통해 가상화된 Guest OS를 통제하는 형태
  • 하나의 가상머신 안에 하나의 APP을 배포하므로 각각 격리된 환경에서 APP을 관리할 수 있고 라이브러리 의존성 문제를 해결할 수 있음. 각 PC에 다른 버전을 진행해도 다른  PC에 영향을 주지 않는다.
  • 하지만 가상머신의 비용효율성이 좋지 않고 성능측면이나 자원오버헤드 측면에서 좋지 않음
  • 세팅에 있어 스냅샵을 진행함으로 불편한점이 있음.
  • 가상머신이기에 실제PC보다 성능, 속도가 부족하다
  • 가상 머신에 할당할 메모리(RAM)을 내 컴퓨터에서 사용하여 공유한다. VIRT,RES,SHR로 가상 메모리 배정을 진행

도커, 인텔리제이 등 실핼할 때마다 가용 용량이 줄어들어 캐시 메모리 사용하기 어려워진다.

컨테이너 배포

  • 격리된 공간만 만들고 PC를 각각 만들지 말자
  • 컨테이너란 경량화된 가상  PC 개념
  • 도커 엔진 위에서 컨테이너 단위로 관리하여 실행되기에 PC 전체보다는 효율적이다

  • Docker와 같은 컨테이너 엔진을 사용하는 형태
  • Docker는 가장 대중화된 컨테이너 엔진 중 하나
  • 다양한 격리기술들을 지원하여 가상머신에 비해 성능 효율성이나 자원오버헤드도 발생하지 않으며 경량화(도커 엔진 위에서 실행해서)할 수 있게 됨

쿠버네티스 배포

  • 쿠버네티스는 Container Orchestration System
  • 여러 서버로 분산되어 있는 컨테이너 엔진들을 클러스터링(군집화)하는 기술