Docker 와 VM
Docker란 ??
Docker == 하드웨어를 효율적으로 사용하기위한 기술 (컨테이너라고한다.)
배경 (Virtual Machine)
기존의 우리는 하드웨어를 조금 더 효율적으로 사용하기위해 Virturl Machine을 사용해왔다.
서버자원이 놀면 손해이고, 너무 굴리면 서비스의 목숨이 위태롭기때문에 밸런스를 잘 맞춰주어야한다.
하지만,, 가상머신이 가지고있는 단점이 있다.
-
OS 복제로인한 무거움
VM은 호스트 위에서 OS전체를 가상화하여, OS위에서 OS가 구동되는 구조이다.
그러다보니 무거우며, 생성된 게스트OS(가상)에대한 정보를 파일로 가지고있어야하기 때문에,
보관용량(이미지파일)이 매우커진다는 단점을 갖고있다. -
네이티브하지않은 문제로인한 속도문제
또한 VM을 사용하기위해서는 소프트웨어를 이용해야하는데,
이런구조는 네이티브하지않아 속도가 저하된다.
도커(Container)의 이점
-
가벼움 (바이너리만 격리)
VM 방식과 달리 가상OS를 만들지 않는다.
호스트OS를 공유하며, 애플리케이션 구동을 위한 파일들만 포함하기때문에,
이미지파일이 작아진다는 장점이 있다.
빠르게 배포하고, 확장해야하는 애플리케이션에 이상적이다. -
빠른속도
호스트OS의 자원을 다이렉트하게 사용하기때문에 실행속도가 빠르다고한다.
느낀점:
도커를 사용해본 경험은 없다.
현재 사내에서 플랫폼을 운영하는방식은
새로운 모듈이 추가되어야할 때마다 기존의 생성해둔 AWS의 이미지파일을 이용해 인스턴스를 복제하는방식을 사용해왔다.
이미지파일엔 이미, OS, 그리고 앱 구동에 필요한 환경들이 설정되어있기 때문에(jdk, node.js, …)
이미지파일로 생성된 인스턴스에 젠킨스로 애플리케이션 구동에 필요한 바이너리파일만 옮겨 구동해왔기때문이다.
기회가되면 한번 써봐야겠다.
느낀점(용도) :
정리하면서 느낀점은
두 기술 모두 고유한 강점과 약점이있고,
사용한 기술의 선택은 요구사항에 따라 다른것같다.
Docker는 확실히 빠르게 배포하고 확장해야하는 플랫폼에서 사용하기 이상적인것같고,
Virtual 머신은 다른 OS에서도 애플리케이션이 잘 구동이되는지 확인하기 위한용도인것같다..