[Docker] 1장 : Docker란?

0
post-thumbnail

1. 가상머신 vs 도커 컨테이너

(1) 가상머신

기존 가상화기술은 하이퍼바이저를 이용해 여러개의 운영체제(os)를 하나의 호스트에서 사용하는 방식이었다. 여기서 여러개의 운영체제는 가상 머신이라는 단위로 구분된다. 이렇게 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생한다.
또한 가상머신은 게스트 OS를 만들기 위해 라이브러리 커널등을 전부 포함하기 때문에 이미지의 규모가 크다.

(2) 도커 컨테이너

도커는 프로세스 단위의 격리 환경을 반들기 때문에 성능손실이 거의 없다. 컨테이너에 필요한 커널은 호스트의 커널을 공유해서 사용하고, 애플리케이션 구동에 필요한 라이브러리와 실행파일만 존재하기 때문에 이미지 용량이 가상 머신에 비해 대폭 줄어들고, 따라서 이미지 생성 및 배포 시간이 훨씬 빠르다.


2. 도커가 필요한 이유

  1. 애플리케이션 개발과 배포가 편해진다.

  2. 여러 애플리케이션의 독립성과 확장성이 높아진다.

모놀리스 애플리케이션 vs 마이크로 서비스

  • 모놀리스 애플리케이션
    : 소프트웨어의 여러 모듈이 상호작용하는 로직이 하나의 프로그램에서 구동되는것

  • 마이크로 서비스 구조
    : 여러 모듈을 독립된 형태로 구성하므로, 언어에 종속되지 않고 변화에 빠르게 대응하며 모듈의 관리가 쉽다. 마이크로 서비스에서 컨테이너 가상화 기술이 사용된다.

예를들어, 웹 서비스는 마이크로 서비스 구조로 DB 컨테이너와 웹 서버 컨테이너로 분리할 수 있다. 서비스에 사용자 사용량이 급격히 늘어날 때면, 웹 서버 컨테이너만 동적으로 늘리면 된다.

이러한 컨테이너 기반의 마이크로 서비스는 도커 스웜모드나 쿠버네티스 같은 오케스트레이션 플랫폼을 통해 사용하는 것이 일반적이다.

profile
재미있는 아이디어 떠올리는 것을 좋아하고, 이를 구현하여 세상에 즐거움을 선물하고 싶은 사람입니다.

0개의 댓글