01. 도커란?

leeez·2021년 9월 1일
0

Docker/Kubernetes

목록 보기
1/1
post-thumbnail

❗️이 포스팅은 시작하세요! 도커/쿠버네티스(위키북스) 를 보고 공부한 내용을 정리했습니다.
(문제 시, 비공개 처리하겠습니다🙇🏻‍♀️)


1.1 가상 머신과 도커 컨테이너 비교

- 기존의 가상화 기술

: 하이퍼바이저(Hypervisor)를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식

가상 머신의 단점

  • 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치지 때문에 일반 호스트에 비해 성능의 손실이 발생
  • 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함하기 때문에 가상 머신을 배포하기 위한 이미지의 크기가 큼

완벽한 운영체제를 생성할 수 있다는 장점은 있지만,
일반 호스트에 비해 성능 손실이 있으며, 수 GB에 달하는 가상 머신 이미지를 애플리케이션으로 배포하기는 부담스럽다



- 도커 컨테이너

: 가상화된 공간을 생성하기 위해 리눅스의 자체 기능을 사용함으로써 프로세스 단위의 격리 환경을 만들어 성능의 손실이 거의 없다

도커 컨테이너의 장점

  • 컨테이너에 필요한 커널은 호스트의 커널을 공유해서 사용
  • 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재
  • 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상 머신에 비해 대폭 감소

    컨테이너를 이미지로 만들어 배포하는 시간이 가상 머신에 비해 빠르며, 가상화된 공간을 사용할 때의 성능 손실도 거의 없다!


도커를 시작해야 하는 이유

  1. 애플리케이션의 개발과 배포가 편리함
    : 컨테이너 내부에서 수많은 소프트웨어를 설치하고 설정 파일을 수정해도 호스트 OS에는 영향을 끼치지 않아 독립된 개발 환경을 보장받을 수 있다.
  2. 여러 애플리케이션의 독립성과 확장성이 높아짐
    : 소규모 서비스에서는 모놀리스 방식이 어울릴 수도 있지만, 서비스의 기능이 복잡해지고 거대해질수록 소프트웨어 자체의 확장성과 유연성이 줄어드는 단점이 있다. 이를 대체하기 위해 최근 새롭게 떠오른 개념이 MSA.

    💡 모놀리스(Monolith) 애플리케이션
    : 소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식

    💡 마이크로서비스 구조 (MSA, Micro Service Architecture)
    여러 모듈을 독립된 형태로 구성하기 때문에 언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 관리가 쉽다

0개의 댓글