도커(Docker)의 장단점 및 주의점

안녕하세요.

이전 포스팅에서 도커(Docker)가 무엇인지, 그 특징에 대해 가볍게 다뤄봤는데요.
참고 : 도커(Docker)와 도커컨테이너를 알아보자

아무리 좋은 도구라도 무턱대고 사용할 수는 없겠죠? 저는 모든 상황에 완벽히 맞는 도구는 없다고 생각합니다. 특히나 도커와 같은 개발 플랫폼 도구는 뒤늦게 바꾸기가 어렵죠. 여러 프로젝트에 도커를 적용해 보면서 느꼈던 장단점, 주의점들에 대해 간단히 집고 넘어가겠습니다.

먼저, 도커의 장점에 대해 살펴보자

장점 1 – 쉽고 빠른 실행 환경 구축
개발 프로젝트는 보통 팀단위 작업을 하게 됩니다. 협업을 위해 여러 컴퓨터에서 동일한 개발환경을 구축하는 일이 선행되어야 되죠. 개발환경 설정은 조작실수나 개발자의 성향에 따라 관리하기가 힘든 영역이더군요. (개발자들이 개성이 강하자나요..)
그러나 도커 컨테이너로 초기 개발환경을 배포하게되면 프로젝트 개발 및 실행환경을 강제화 할 수 있습니다.

장점 2 – 가볍고 빠른 실행 속도
가상 머신은 OS를 재구동 해야하므로 시작 자체가 무거운 편입니다. 반면 도커 컨테이너는 상대적으로 경량이기 때문에 시작이 꽤 빠릅니다. 컨테이너는 메모리나 스토리지(Storage) 소모를 줄이면서 가상화 할 수 있죠. 시작속도는 압도적입니다.

장점 3 – 하드웨어 자원 절감
컨테이너의 크기가 매우 작고, 하나의 물리적 서버에 다수의 컨테이너를 가동시킬 수 있습니다. 가벼운 프로젝트라면 수십개도 운영이 가능하죠. 비용 절감 효과가 큽니다.

장점 4 – 공유 환경 제공
Docker의 특징은 컨테이너뿐만 아니라 공유 된 서비스 ” Docker Hub」가 있습니다.
“Docker Hub ‘를 통해 통해 전세계의 개발자의 결과물을 얻을 수 있고 결과물을 업로드 할 수 있습니다. 검증된 많은 이미지들이 공개되어 있어 내려받기만 하면 됩니다.

장점 5 – 쉬운 배포
프로그램 개발이 완료되면 개발했던 환경을 그대로 배포할 수 있습니다. 이 부분도 실제 서비스 운영 관점에서 큰 장점입니다.

도커 도입시 주의할 점

주의점 1 – 개발 초기의 오버헤드
도커를 처음 다뤄보는 개발자라면 초반 환경 설정시에 시행착오를 겪을 확률이 높습니다. 팀내에서도 불만이 나올수 있구요. 특히 소규모 프로젝트라면 도커사용을 제고할 필요가 있어요.

주의점 2 – 리눅스(Linux) 친화적
도커를 제대로 활용하기 위해서는 Linux 기반 OS에서 사용해야 합니다. 적어도 제 경험상은 그렇더라구요. Linux 개발환경이 익숙하지 않으시거나, Windows 환경에서 개발해야하는 프로젝트라면 다시 생각해 보시는게 좋습니다. 오히려 힘들어 질수도…

정리하면,

도커의 태생 자체가 리눅스의 cgroup과 namespace라는 기술에 기반하고 있습니다. 리눅스 기반 프로젝트에서 파워풀한 것이 어쩌면 당연한 것이지요. 동시에 여러 리눅스 기반 프로젝트를 진행해야 하거나 웹 서비스를 구축해야 한다면 도커가 상당한 도움을 줄겁니다.
개발 효율을 높이는 것이 곧 팀의 성과를 높이는 길입니다.