[Docker1] 내가 느낀 Docker – 특징, 장/단점

docker 내가 느낀 특징 및 장단점

Docker의 가장 큰 장점 : 경량화


Docker: Accelerated Container Application Development

Docker의 가장 큰 장점이라고 느낀 점은 경량화 VM이라는 것이다. 이전의 VM이라고 하면 새로운 VM을 만들고 그 위에 OS를 설치하고, 필요한 설정들을 복잡하게 해야 했다. 물론 이미지를 만드는 등 나름 재사용에 용이하도록 다양한 기법들이 나왔지만, 그래도 이는 매우 힘든 작업이었다.

Docker는 이를 극적으로 개선 시켜준다. 단일 컴퓨터(OS)에서 단순한 Docker 명령어를 통해 여러 개의 VM, 환경 설정과 필요한 서버를 순식간에 만들 수 있다. 물론 이 뒤에서는 컨테이너화라는 단일 OS 내 프로세스 분리 기법이 있겠다. 시스템 kernel은 공유하되, Container마다 환경은 완벽히 격리 시켜서 하나의 OS, 하나의 머신이지만 여러 개의 OS, 여러 개의 VM처럼 사용할 수 있게 되는 것이다.

장점이자 단점 : 간편함


Docker는 개발 Level에서 매우 많이 강력하다. docker run -[some options] [some image] 면, 원하는 가상머신 서버를 금방 띄울 수 있다. mysql이든, 웹 서버이든, CI/CD 서버이든…

다만 Product Level로써는 지나치게 단순하다. 그리고 각 서버마다의 Deep한 설정을 필요로 할때는 오히려 복잡하고 힘들다. 설정들이 Persist하지 않고, 작업 과정에 Container 빌드가 추가되며, VM이 켜져 있다는 가정하에 dockerfile을 작성하기 때문에 과정마다의 수행을 확인해보기가 어렵다. Docker를 기반으로 한 인프라에 대한 전반적이고도 명확한 이해가 수반되지 않으면 말아 먹기 딱 좋은 구조.

Docker는 여러 개의 구성요소로 이뤄진다


Docker는 어떤 하나의 Object가 아니다. 실제 Container화를 담당하는 엔진에 해당하는 DockerD와 이 엔진을 활용하도록 하는 Docker CLI로 나뉘어 있다. Server와 Client의 개념으로 봐도 괜찮다. 그래서 Docker CLI를 통해 DockerD에게 명령을 내리는 구조여서, DockerD는 외부에 있어도 CLI에서 연결만 할 수 있다면 괜찮다.

docker의 구조

Docker-compose와 docker의 차이


Docker와 Docker Compose는 또 다른 개념이다.
Docker는 경량화 VM 하나에 대하여 작업을 한다면,
Docker Compose는 경량화 VM 여러 개를 결합하여 활용하는 개념이다. 이는 VM끼리 활용 가능하도록 지휘하는 Orchestration 역할이다. Docker Compose는 어느 정도 Kubernetes에 대응되는 개념인 것이다.

큰 트래픽의 서버 구축에 최적인 Microservice Architecture


많은 가능성이 보인다. 특히 Microservice Orchestrator인 Kubernetes와 함께 활용하면 말이다. 트래픽이 많고, 대용량인 경우에는 이만한 인프라가 없는 것 같다. Scale Out 조정이 너무 너무 쉬워진다. 다만, 쉽게 늘린 VM들을 제대로 파악, 관리, 분석하는 것이 매우 매우 어려워진다. 다르게 생각해보면 Docker는 Kubernetes를 모르고서는 쉬운 개발 및 테스트 환경 구축으로써의 의미 밖에 없게 된다.

Docker의 가장 두려운 점


많은 우려사항이 생긴다. 이를 제대로 이해하며 사용하는 사람을 만나기 쉽지 않고, 온전히 이해하지 못한 채로 사용하면 위험한 Blackbox 창고가 된다. 관리와 분석이 매우 어려운 Blackbox 덩어리들… 생각만 해도 끔찍…

마치며…


다음글


Posted

in

, ,

by

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다