본문 바로가기
Docker

도커가 배포할 때 필요한 이유

by 진꿈청 2024. 3. 1.

도커는 이미 없어선 안되며 큰 인기를 끌고있다. 특히, 도커를 사용하면 아주 쉬운 배포가 가능해진다.

 

그렇다면 도커는 어떻게 배포를 구현할까?

 

3가지 시대로 나눠서 도커의 배포에 대해 설명한다.

 

전통적인 배포의 시대

애플리케이션을 하나의 물리 서버에서 실행

 

단점

하나의 물리 서버에서 여러 애플리케이션을 실행(Spring, Jenkins, Nginx 등)한다면 각각의 애플리케이션이 잡는 리소스들이 너무 크다. 또한, 조율하기 어렵다.

 

어떤 애플리케이션은 서버의 리소스를 많이 잡을 수 있고 다른 애플리케이션은 적을 수도 있고 이런 것들이 여러 개가 있을 수 있다.

 

해결책

위의 단점을 해결할 수 있는 간단한 해결 방법은 당연하게 새로운 물리 서버 증설이다.


그러나

하지만, 물리 서버를 많이 유지하고 관리하는 것은 조직 및 기업에서 비용적 측면에서 큰 타격을 준다.

(AWS EC2, AWS RDS, AWS S3 등 서로 다른 용도로 사용된 것만 해도 여러 개인데 이 안에도 여러 개가 있다면 비용은 굉장히 비싸다.)

 

 그래서 이를 해결하기 위한 가상화라는 개념이 도입되었다.

 

가상화된 배포의 시대

단일 물리 서버의 CPU에 여러 VM을 실행시킬 수 있는 가상화 기술을 이용한 배포 방식 탄생.

 

우리가 윈도우에서 리눅스를 사용하기 위해 애용하는 Virtual Box, VM과 같은 가상화 기술을 이용하는 것이다.

 

여러 OS 홈페이지에는 ISO 형식의 이미지 파일을 제공한다. 우리는 해당 이미지 파일을 이용해 나의 OS에 새로운 Guest OS 설치가 가능하다.

이것은 마치 컴퓨터가 여러 대 있는 것처럼 사용가능하다.

 

 

가상화를 활용하여 물리 서버에서의 리소스를 좀 더 효율적으로 사용가능하며 애플리케이션도 쉽게 추가하거나 업데이트 할 수 있다.

(필자의 경우도 가상머신을 활용하여 여러 작업을 한다. 블로그를 참고 바란다.)

 

결국 이는 하드웨어 비용 절감에 큰 도움을 준다.

 

지금 당장도 가상화된 배포로만으로도 서버 운영이 가능하다.

 

하지만, 도커를 활용한 컨테이너 기반 배포가 가져다주는 장점이 너무 많기에 컨테이너 배포로 유행이라고 생각하면 된다.

 

도커가 등장한 컨테이너 배포의 시대

컨테이너 배포 방식은 VM과 유사한 방식이지만 훨씬 가볍다고 생각하면 된다.

 

 

컨테이너 배포가 가상머신 배포에 비해 갖는 장점은 다음과 같다.

  • 가벼운 애플리케이션의 생성과 배포
  • 지속적인 개발, 통합 및 배포(CI/CD)
  • 클라우드 및 OS 간의 이식성(앞 글에서 다뤘던 내용이다.)
  • 리소스 격리(간단한게 각각이 다른 리눅스 환경이라 생각하면 된다.)
    • 프로세스 격리
    • 네트워크 격리
    • 파일 시스템 격리

상대적으로 무거운 VM 이미지를 사용하는것에 비해 컨테이너 이미지 생성은 쉽고 효율적이다.

 

또한, 애플리케이션의 지속적인 개발로 테스트 및 기능이 추가되었을 때 자체를 배포하는 것이 아니라,

이미지를 빌드해서 배포를 한다. 이는 쉽게 통합/배포가 가능하게 한다.

그리고 이미지는 계속 저장되고 도커 허브에 등록할 수 있으므로 쉬운 롤백이 가능하다.

 

참고 블로그

https://velog.io/@youngs508/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%9D%98-%EC%9E%A5%EC%A0%90

 

컨테이너의 장점

물자를 싣고 내릴 때에, 선박이 입항해 있는 시간을 획기적으로 단축시켜준다.물자를 싣고 내릴 때 필요한 인력(분류하는 사람, 짐 옮기는 사람, 감독하는 사람)을 대폭 감소시킨다.개발자들은

velog.io

https://wonit.tistory.com/328

 

[Docker] 배포의 관점에서 도커가 필요한 이유

도커가 처음 등장했을 당시에는 마치 GIT이 처음 등장했을 때와 같은 분위기라고 하였다. subicura님의 블로그에서 발췌한 도커 설문조사에 의하면 90%가 개발에 사용중이고 80%가 DevOps에 사용할 예

wonit.tistory.com

 

'Docker' 카테고리의 다른 글

도커 컴포즈와 간단한 컴포즈 문법  (0) 2024.03.03
Dockerfile은 무엇일까?  (0) 2024.03.02
도커 명령어 모음  (0) 2024.03.02
도커 엔진을 구성하는 도커 이미지와 도커 컨테이너  (0) 2024.03.02
Docker란?  (0) 2024.01.27