도커란?
리눅스 컨테이너에 여러 기능을 추가함으로써
애플리케이션을 컨테니어로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트
도커와 관련된 프로젝트로는 도커 컴포즈, 도커 허브 등이 존재하지만 여기서는 도커 엔진을 위주로 서술한다.
도커가 왜 필요할까?
기존 가상화 기술은 Host OS위에 하이퍼바이저를 띄우고 그 위에 여러 개의 Guest OS(가상머신)를 설치해 사용하던 방식
허나 시스템 자원을 가상화하며 독립된 공간을 생성하는 작업은
하이퍼바이저를 반드시 거쳐야하므로 일반 환경에 비해 성능의 손실이 발생하게 된다.
또한, 가상 머신은 결국 또 하나의 OS 전체를 사용하기 위해
그에 필요한 모든 라이브러리, 커널 등을 포함하므로 이미지의 크기가 굉장이 크기 때문에
애플리케이션 배포를 위해 가상 머신을 이용한다는 것은 굉장히 부담스러울 수 있다.
도커를 시작해야 하는 이유
1. 애플리케이션 개발과 배포가 편해진다.
애플리케이션만의 독립된 개발 환경을 보장받을 수 있다!
도커 컨테이너는 호스트 OS위에서 실행되는 격리된 공간
따라서 컨테이너 자체에 특별한 권한을 주지 않는 한
내부에서 어떤 동작을 하더라도 외부 호스트 OS에는 영향이 없다.
개발/운영 환경의 통합이 가능해진다!
컨테이너에서 작업을 마친 뒤 이를 배포하고 싶을 경우
그냥 도커 이미지를 만들어 운영 서버에 전달하기만 하면 된다.
각종 의존성(라이브러리나 패키지 등)에 대한 걱정할 필요가 없으며
서비스를 개발했을 때의 환경을 다른 서버에서도 컨테이너로서 똑같이 복제가 가능하다!
애플리케이션의 배포 속도가 매우 빠르다!
도커 이미지는 가상 머신과는 다르게 커널을 포함하지 않으므로
이미지의 크기가 그다지 크지 않다!
또한 이미지 내용을 레이어 단위로 구성하며
중복되는 레이어는 재사용이 가능해 배포 속도가 매우 빨라진다는 장점이 있다.
2. 여러 애플리케이션의 독립성과 확장성이 높아진다.
과거어는 어떤 서비스나 소프트웨어의 모든 로직을
하나의 프로그램 내에서 구동시키는 모놀리딕 방식만이 존재했지만
최근에는 확장성과 유연성이라는 장점을 가진
MSA(마이크로서비스 아키텍쳐)라는 개념이 새롭게 떠오르고 있다.
도커 컨테이너는 수 초내로 새로 생성, 시작이 가능하며
여러 모듈에게 각각 독립된 환경을 제공할 수 있기 때문에 MSA에서 가장 많이 사용되는 가상화 기술이다.
MSA는 여러 모듈을 하나의 큰 프로그램에 통합한 구조가 아니라 각기 독립된 형태로 구성하므로
언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며 각 모듈의 관리가 쉬워진다는 장점이 존재
도커를 이용하면 모듈마다 독립된 환경을 제공 가능하며
이미 빌드해놓은 도커 이미지를 이용하면 의존성에 대한 걱정없이 손쉽게 확장도 가능하다.
이러한 도커의 특징과 MSA를 조합하면 부하가 심한 특정 모듈만 수평 확장(Scale-Out)하는 것도 가능하다!
'공부 > 도커 및 쿠버네티스' 카테고리의 다른 글
[시작하세요 도커/쿠버네티스] Dockerfile 작성하기 (0) | 2021.09.12 |
---|---|
[시작하세요 도커/쿠버네티스] 이미지와 컨테이너 (1) | 2021.09.05 |
댓글