728x90

Container-based Virtualization 또 다른 말로는 Operating system virtualization이라고 하는 요즘 뜨고 있는 기술이다.

 

위 두개의 가장 큰 차이점은 guest OS가 있느냐 없느냐이다.

 

이 그림은 하이퍼바이저 기반의 가상화 기술과 container기술의 가상화 기술의 차이점을 잘 표현해주고있다.

왼쪽은 하이퍼바이저 type2를 표현하고있다. 하이퍼바이저 위에 게스트 OS가 있고, OS위에는 라이브러리랑 어플리케이션이 있다.

반면

오른쪽은 하이퍼바이저와 비슷한 container engine위에 게스트 OS가 없고 바로 라이브러리와 실행파일 위에 어플리케이션이 돌아가고있다. 여기서 보면, 컨테이너 기반의 가상화 기술은 기존의 하이퍼바이저와 달리 호스트 운영체제의 커널 기능을 공유한다. 이 의미는 운영체제의 기능을 대부분 호스트 운영체제에 의존 하고있다는 뜻이다. 그렇기 때문에 굳이 게스트OS가 필요가 없는 것이다. 그래서 컨테이너 엔진이 호스트 운영체제를 통해서 모든것을 실행하고 있는 것이다. 그렇게 운영체제를 사용하고 있는 것이다.

 

위 두개가 달라진 이유는 디자인 철학 자체가 다르다. Container Engine 같은 경우에는 Guest OS가 필요없게 했다. 그러면 가상머신을 구동시키는데 있어서 가상머신도 하나의 물리머신처럼 똑같이 동작을 해야하니 guest 운영체제는 있는게 자연스러운데 어떻게 필요없게 했냐면, container engine아래에 있는 운영체제에 전적으로 의존하고 있다. 커널기능을 사용해서 리눅스에서 사용되는 프로세서이다. 다만 자기들 세상에 갇혀있는 것이다. 단점은 다양한 os로 돌릴 수 있는것이 아니라 리눅스로만 운영 가능하다. 장점은, guest OS가 사라졌기 때문에 이미지가 작다. 그리고 Guest oS 부팅시간이 없기 때문에 부팅시간이 빠르다. 그리고 하나의 물리머신에 구동시킬 수 있는 가상머신들 컨테이너 숫자가 상당히 많이 차이가 난다.

 

Container based virtualization은 게스트 운영체제가 없으니까 부팅시간도 현저히 차이가 나고 게스트 운영체제가 없으니 이미지화 하더라도 컨테이너방식이 훨씬 가볍다. 경량화되고 빠르기 때문에 컨테이너 기술이 각광을 받고 있다.

그러나 컨테이너 기술에도 단점이 있다.

컨테이너의 어플리케이션들이 커널의 기능을 통해 호스트 운영체제와 공유하고 있는데, 하이퍼바이저같은 경우는 별도의 게스트 운영체제를 띄어주니까 결과적으로 봤을때는 호스트 커널을 공유할 수 있는 것은 리눅스 시스템밖에 없다. 컨테이너 엔진을 실행하면서 Windows 머신을 돌리는 것은 안된다. 그러니까 OS가 무조건 리눅스여야 하기에 운영체제가 제한적이다.

 

가상머신들 간의 격리성 같은것을 따졌을 때는 기존의 하이퍼바이저 기반의 가상화기술이 뛰어난 기술이다. 그러나 경량화 돼서 빠르고 컨테이너가 하나의 프로세서 같은 것이기 때문에 자원할당 측면에서 용이한 것도 있다.

 

Everything as a Service

  • Utility computing = IaaS
    • 컴퓨팅 자원을 빌릴 있는데 굳이 사냐? 라는 개념으로 만들어짐
    • ex) EC2
  • PaaS
    • 일반적으로 앱의 개발 시작과 관련된 인프라를 만들고 유지보수 하는 복잡함 없이 고객이 어플리케이션을 개발, 실행, 관리할 있게 하는 플랫폼 제공 형태
    • 서비스를 개발 있는 안정적인 환경(platform) 환경을 이용하는 응용프로그램을 개발 있는 API까지 제공하는 형태
  • SaaS
    • 그냥 실행시키면 되는
    • ex) Gmail

+ Recent posts