Docker가 등장하게 된 배경에 대해서

과거 서버 개발은 상당히 까다로운 작업이라고 할 수 있었습니다.

대부분의 서비스가 클라이언트와 서버로 구성되어 있다는 사실에 반문을 제기할 사람은 많지 않을 것입니다.

IOS나 Android 혹은 Web같은 클라이언트가 상품을 판매하는 상점이라면 서버는 판매할 상품을 만들고 배송하는 공장이라고 할 수 있습니다.

만약 공장이 갑자기 문을 닫는다면 어떻게 될까요?

아무리 이쁘게 상점을 꾸며놓는다한들 상품이 없는 상점에 고객들은 오지 않을 것입니다.

서버가 중요한 이유는 위의 예시에 나와있는 내용과 같은 맥락입니다.

데이터베이스로부터 알맞은 데이터를 효율적으로 가져다가 클라이언트에서 볼 수 있는 양식으로 가공한 뒤 보내주는 것이 서버의 역할입니다.

매우 중요합니다.

서버 개발이 되려면 다양한 프로그램, 다양한 환경이 필요합니다.



자신의 상황에 가장 적합한 OS와 버전, 그리고 프로그래밍 언어를 빌드하고 실행할 수 있는 환경, 네트워크 설정까지 실로 다양합니다.


간단하게 생각해서, 상점 인테리어를 이쁘게 꾸미고 오픈 준비를 하는 것보다 제품 생산 공장을 세우고 내부 시스템을 구축하는 것이 훨씬 오래걸리고 힘들지 않을까요?

서버 개발 환경 및 운영 환경 세팅에는 상당히 많은 패키지(프로그램)들이 서로 얽혀있기 때문에 만약 어떤 패키지가 삭제되거나 망가졌을 때 시스템 전체가 작동하지 않을 수 있습니다.

예를 들어, Python의 유명한 Web Framework인 Django를 활용하여 웹 어플리케이션을 제작하다고 가정해봅시다.

새로운 라이브러리를 활용해 신기능을 추가했습니다.

하지만, 이런! 운영중인 서버에 새로운 라이브러리 추가 및 설치를 하지 않았습니다.

Django 웹 서버는 오류를 일으키고 다운됩니다. 이대로 서비스가 중지되고 말았습니다.

서버가 중지된다는 것은 곧 서비스 전체가 중지된다는 것과 다를 바 없습니다.
그렇기 때문에 서버 개발이 까다롭다고 여겨지는 것입니다.

Docker는 까다롭고 예민보스인 서버 인프라 및 개발 작업을 좀 더 효율적으로 하기 위해 등장했습니다.

Docker가 어떤 역할을 하는지 설명하기 위해 위의 예시로 다시 돌아가보겠습니다.

공장 노후화로 인해 공장 가동이 일주일간 멈추게 됩니다.

물품 전달이 안되니 직영점들도 제대로 운영이 안됩니다.

결국, 공장을 새로 하나 설립해 번갈아가면서 운영을 하면 공장이 멈추는 일이 없을 것이라는 판단에 이르게 됩니다.

하지만 공장을 다시 설립하려고 하니 준비해야 할 것들이 산더미입니다.

공장을 세울 땅부터 내부 인력 충원, 컨베이어벨트 설립과 1번 공장과의 운영계획도 필요합니다. ㅇ

이것을 모두 완료하는데 많은 비용과 시간이 듭니다. 머리가 아프기 시작합니다.

이때 Docker라는 회사가 눈앞에 등장합니다.

바로 Container라는 초강력 패키지 상품을 들고 말이죠.



Docker 회사 직원이 친절하게 설명해줍니다.

이 Container 상품을 활용하면 한달 이내로 기존 공장과 완전히 동일한 설비, 인력 및 시스템을 원하는 장소에 만들어 준다고 합니다. 심지어 장소를 바꿀 때에도 마치 이사짐 옮기듯이 새로운 장소에 동일한 기간내로 원하는 인프라를 구축해 줄 수 있다고 합니다.

이 서비스를 안 쓸 이유가 없겠죠?

이것이 바로 도커가 혁신적인 이유이자 많은 사람들이 도커를 사용하게 된 이유입니다.



                                  출처 - https://www.datadoghq.com/docker-adoption/


Datadog에 따르면 2016년부터 2017년까지 1년만에 Docker를 적용하는 고객들의 수가 늘어나면서 전체 시장 분포에서 Docker가 차지하는 비율이 40% 증가했다고 합니다.

엄청난 성장세라고 할 수 있습니다.

감히, Docker는 서버 인프라 구축에서 필수적인 존재가 되었다고 할 수 있습니다.


댓글()