도커로 얻을 수 있는 이점들

도커를 써야하는 이유에 대해

들어가기에 앞서

1950년대까지 화물운송에는 큰 문제점이 있었습니다. 바로 선적과 하역입니다. 실제 물건을 운송하는 비용보다 항구에서의 선적과 비용이 수배로 더 많이 들었습니다. 그 사이에 없어지는 물건도 많았고 인력도 필요할때 구하기 어려웠습니다. 이때 가히 지금의 스마트폰,인터넷과 같은 파급력을 가진 컨테이너가 등장하게됩니다.

컨테이너는 모든것을 규격화 할 수 있는 컨테이너의 등장은 모든것을 규격화시켰고 컨테이너 역사를 다룬 The Box라는 책에 따르면 컨테이너를 도입하고 톤 당 운송비가 5.83달러에서 0.158달러까지 떨어지게됩니다. 화물을 규격화 함으로써 비용도 비용이지만 시간역시 어마어마하게 빨라지게되었습니다.

도커의 컨테이너 역시 비슷한 역활을합니다. 열이면 열회사 모두 스택이 다릅니다. 같은 JSP라고해도 Node라고해도 그 회사가 쓰는 라이브러리가 다르고 플러그인이 다르며 버전또한 다릅니다. 이렇듯 모두가 다른 환경을 사용하지만 도커머신으로써 가상화하는것을 도커라이징이라고 합니다. 마치 컨테이너에 물건을 실어 나르기전에 컨테이너에 물건을 실는것처럼 서버환경을 Dockerfile이라는 규격화된 틀로 만드는 과정입니다.

도커로 얻을 수 있는 이점들

개발환경의 일원화

개발을 하다보면 협업은 필수덕목중에 하나입니다. 1명이 개발할때 100%의 성능을 낸다고 2명이 개발할때 200%이 효율이 나오지 않습니다. 오히려 90% , 80%까지 떨어질수도 있습니다. 도커는 이러한 협업을 더 쉽게 할 수 있도록 도와줍니다.

프로젝트에서 시작되는 첫번째 고비는 패키지 설치입니다. 윈도우를 쓰는 개발자, OSX를 쓰는 개발자, 리눅스를 쓰는 개발자 모두 자기 PC에 맞게 패키지를 설치해야합니다. 또한 이렇게 설치를 해도 OS별로 이슈가 생기게 마련입니다. 모두가 동일한 버전을 맞추는것 역시 과제입니다. 이렇게 개발환경세팅에만 몇일이 지나고 현재 버전의 보안적 이슈가 발생하여 버전을 올려야할때 또 다시 카오스로 빠지게됩니다.

도커를 사용한다면 일이 훨씬 쉬워집니다. 현재 버전에 맞게 도커를 마이그레이션 후 Dockerfile만 보내주면 각자 패키지를 설치할 필요없이 Dockerfile만 로컬에서 동작시키면되며 거의 모두가 동일한 개발환경에서 작동가능합니다.

새로운 기술환경 세팅의 효율화

서점에가서 IT책들을보면 대부분 1장은 다 환경설정과 설치법입니다. 어떤 언어를 배운다고해도 최소한 먼저 런타임 환경을 설치해야합니다. 도커는 더이상 이런 환경설치에 대한 문제를 해결해줍니다. 간단히 도커파일을 받아 구동하면됩니다. 저 또한 도커를 사용하기 이전에는 brew를 통해 mysql을 설치하거나 redis를 설치하고 환경설정을 했지만 이제는 간단히 도커파일을 받아 실행하고 IDE에서 도커머신으로 설정만 맞추어개발을합니다. 더이상 로컬의 환경에 맞게 무언가를 설치하고 환경을 세팅하는 필요가 없어집니다.

무중단 배포

이전에는 무중단배포 CI/DI는 만만치 않은 이슈였습니다. 서버점검을 더 오래하도록 만드는 원인중 하나였고 저의경우 도커이전에 리눅스 머신 이미지를 빌드하여 새벽중에 서버PC들의 빌드이미지 USB를 이용해서 이미지를 바꾸어주었습니다. 그러다가 예상치 못한 문제가 발생하면 다시 이미지를 오버라이딩 하곤했습니다(…) ECS,쿠버네틱스와같은 툴들은 단지 도커이미지를 업로드 하는것만으로 모든 서버의 이미지파일 교체를 한번에 하도록 도와주고 버전관리 그리고 환경설정까지 알아서 해주며 블루그린 배포를 매우쉽게 도와줍니다.

클라우드 환경에서의 궁합

클라우드나 혹은 솔루션을 사용할때 한가지 중요한점으로 생각하는것은 종속성 없는 플랫폼을 사용하는것입니다. 클라우드 업체들은 항상 자신들의 플랫폼에 종속시키려 노력합니다. 하지만 도커기술을 이용하여 컨테이너로 규격화만 해놓았다면 구글클라우드건 로컬환경이건 AWS건 언제든 다른 플랫폼에서 운영을 할 수 있으며 조금 더 유연한 개발환경을 구축할 수 있습니다.

마치며

개발환경에 있어서 도커만큼 큰 변화를 가져온 기술도 없는것같습니다. 1950년대 컨테이너 기술이 지금의 물류운송을 혁명적으로 바꾼것처럼 도커기술도 앞으로 개발환경과 운영환경을 더 혁명적으로 바꾸지 않을까싶습니다.