Search
Duplicate
🐳

Docker의 등장(운영 관점)

간단소개
운영의 관점에서 Docker가 왜 나왔는지 알아봅니다.
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Docker
태그
Docker
container
Scrap
8 more properties
원본 글입니다~~

운영 환경

이전 포스트에서는 서버의 관점에서 Docker의 등장을 지켜봤다. 이번 포스트 에서는 운영의 관점에서 Docker의 등장을 지켜보자.
우리가 어플리케이션을 구성해서 운영하는 환경은 기본적으로 3가지다.
1.
BareMetal: 물리 서버를 사내에 두고 사용하는 방식
2.
Vitualization: 가상화 기술, 가상머신을 사용하는 방식
3.
Container: 컨테이너 기술을 사용하는 방식

베어메탈? 베어메탈!

BareMetal 방식도 하드웨어 자원이 받쳐준다면 굳이 Vitualization을 사용하지 않고도 여러 어플리케이션을 운영할 수 있을까?
가능하다.
하지만 그렇게 하지 않았다. 왜 그럴까?
OS입장에서 우리가 구동하는 앱은 하나의 프로세스다. 만약 하나의 프로세스에 문제가 생기면? 모든 프로세스가 한정된 자원을 공유해서 사용하기 때문에 다른 프로세스에도 영향이 간다. (가끔 작동안되는 프로그램을 강제 종료하려고 작업관리자를 키면 CPU 대부분을 점유하는 것을 확인할 수 있다)
하지만 가상화 환경에서는 문제가 생긴 OS에서 모든 일이 끝난다. 때문에 다른 OS에는 영향을 주지 않는 것이다. 그렇기에 가상머신이 각광받게 되었다.

가상머신? 가상머신!

하지만 가상머신도 여러 문제가 있었다.
위에는 방금 캡처한 작업 관리자 화면인데 크롭앱 하나만 실행하고 싶어도 기본적으로 백그라운드 프로세스가 70개를 훌쩍 넘는다. 대부분은 OS를 잘 실행하기 위한 것들인데 이러한 프로세스들이 하드웨어 자원을 차지해 많은 오버헤드가 생긴다.
OS실행은 HOST에게 맡기고 나는 프로세스만 독립적으로(다른 프로세스에게 영향을 안주고) 실행하고 싶은데 어떻게 가능할까?
바로 Docker를 통해서 가능하다.

컨테이너? 컨테이너!

도커 엔진만 깔려 있다면 어디든 OK!
어플리케이션을 구동하는데 필요한 런타임 환경만 컨테이너 안에 있으면 동작하기 때문에 불필요한 프로세스들이 하드웨어 자원을 잡아먹지 않는다.
뿐만아니라 개발환경에서 운영환경으로 환경을 확장한다면? 필요하다면 TA가 들어와 인프라를 구성하고 아키텍트가 들어와 서버 세팅을 해야한다. 여러 환경의 구성이 다 끝나야지 어플리케이션 배포를 할 수 있었지만 도커가 등장하면서 이미지파일 하나로 배포가 끝나버리는 황홀한 일이 생겨났다.