Docker 와 VM

최대 1 분 소요

Docker란 ??

Docker == 하드웨어를 효율적으로 사용하기위한 기술 (컨테이너라고한다.)

배경 (Virtual Machine)

기존의 우리는 하드웨어를 조금 더 효율적으로 사용하기위해 Virturl Machine을 사용해왔다.
서버자원이 놀면 손해이고, 너무 굴리면 서비스의 목숨이 위태롭기때문에 밸런스를 잘 맞춰주어야한다.
하지만,, 가상머신이 가지고있는 단점이 있다.

  1. OS 복제로인한 무거움
    VM은 호스트 위에서 OS전체를 가상화하여, OS위에서 OS가 구동되는 구조이다.
    그러다보니 무거우며, 생성된 게스트OS(가상)에대한 정보를 파일로 가지고있어야하기 때문에,
    보관용량(이미지파일)이 매우커진다는 단점을 갖고있다.

  2. 네이티브하지않은 문제로인한 속도문제
    또한 VM을 사용하기위해서는 소프트웨어를 이용해야하는데,
    이런구조는 네이티브하지않아 속도가 저하된다.

도커(Container)의 이점

  1. 가벼움 (바이너리만 격리)
    VM 방식과 달리 가상OS를 만들지 않는다.
    호스트OS를 공유하며, 애플리케이션 구동을 위한 파일들만 포함하기때문에,
    이미지파일이 작아진다는 장점이 있다.
    빠르게 배포하고, 확장해야하는 애플리케이션에 이상적이다.

  2. 빠른속도
    호스트OS의 자원을 다이렉트하게 사용하기때문에 실행속도가 빠르다고한다.

느낀점:

도커를 사용해본 경험은 없다.
현재 사내에서 플랫폼을 운영하는방식은
새로운 모듈이 추가되어야할 때마다 기존의 생성해둔 AWS의 이미지파일을 이용해 인스턴스를 복제하는방식을 사용해왔다.
이미지파일엔 이미, OS, 그리고 앱 구동에 필요한 환경들이 설정되어있기 때문에(jdk, node.js, …)
이미지파일로 생성된 인스턴스에 젠킨스로 애플리케이션 구동에 필요한 바이너리파일만 옮겨 구동해왔기때문이다.
기회가되면 한번 써봐야겠다.

느낀점(용도) :

정리하면서 느낀점은
두 기술 모두 고유한 강점과 약점이있고,
사용한 기술의 선택은 요구사항에 따라 다른것같다.

Docker는 확실히 빠르게 배포하고 확장해야하는 플랫폼에서 사용하기 이상적인것같고,
Virtual 머신은 다른 OS에서도 애플리케이션이 잘 구동이되는지 확인하기 위한용도인것같다..