클라우드 가상화와 Docker

컴퓨터공부/클라우드컴퓨팅 2017.03.05 14:13 Posted by 아는 개발자

클라우드 컴퓨팅은 가상화 기술을 활용해 하나의 서버에 여러 개의 가상 컴퓨터를 돌릴 수 있는 환경을 제공해서 서버 장비가 없는 사용자들도 가상 컴퓨터를 할당 받아서 서버를 구동 할 수 있는 기술이다.




여기서 만들어지는 가상 컴퓨터를 가상 머신(Virtual Machine)이라 하고 가상 머신을 생성시키는 것을 하이퍼바이저(Hypervisor)라 한다. 서버 가상화에서 주로 사용되는 하이퍼바이저는 Xen, KVM, VMware가 있다. 이 기술들은 공통적으로 하드웨어 자원(CPU, 하드웨어, 인터럽트 핸들러 등)들을 관리 하고 Virtual Machine이 사용 할 수 있는 가상 장치를 제공한다. 장치들을 제공 받은 Virtual Machine은 갖고 있는 커널 이미지 및 루트 파일 시스템을 이용해서 부팅 및 운용 될 수 있다.


위와 같은 형태의 장점은 각각의 Virtual Machine이 독자성을 갖는다는 점이다. 호환되는 장치들만 있으면 어떤 운영체제든 돌릴 수 있다(물론 Hypervisor마다 차이가 있긴 하지만) 그리고 각 Virtual Machine이 독립적으로 운용되기 때문에 보안이 뛰어나기도 하다.


하지만 단점은 너무 무겁다는 것이다. 대부분 하나의 애플리케이션을 구동하려고 클라우드 컴퓨팅을 사용하는데 이 하나의 애플리케이션을 돌리기 위해 필요한 자원과 절차가 너무 많이 필요하다. 커널 이미지도 필요하고 가상 장치들도 할당 받아야 하고 부팅도 해야하고... 애플리케이션을 실행 시켜야 하고... 이러다 보면 시간이 다간다.


이런 오버헤드에 대한 해결책으로 나온 기술이 Docker이다.




Docker는 컨테이너 기술(Container) 기반으로 나온 오픈소스 프로젝트인데 여기서 컨테이너라 함은 소프트웨어를 구동하기 위해 필요한 환경(파일, 변수, 라이브러리, 구성요소 등등)을 갖춘 틀을 말한다. 별도 OS니 가상장치 같은 불필요한 것들은 버리고 정말 필요한 것들만 담아 두었으니 빠르게 애플리케이션을 실행 할 수가 있다.



Docker엔진은 서버 호스트 운영체제 위에서 실행되며 애플리케이션 구동이 필요 할 때마다 필요한 자원들을 제공해서 쉽게 실행 될 수 있도록 한다. 별도 장치 생성과정이나 Guest OS 부팅 과정이 없기 때문에 매우 빠르게 실행 할 수 있다. 또한 가상 장치들을 관리하는 하이퍼바이저가 없기 때문에 메모리나 스토리지 측면에서 기존 가상화 기술보다 효율이 높고 설치하기도 쉽다(물론 Hypervisor 설치하는 것에 비해서 상대적으로 쉽다는 말이지 정말 쉬운건 아닌 것 같다)


단점은 보안이다. Host OS의 자원을 사용하는 형태이다 보니 Host OS랑 분리 되지 않았고 container레벨(Docker engine)에서 침입이 발생하면 전체 Application들이 피해를 볼 수 있는 문제가 발생한다. 이런 문제점을 막고자 아예 DockerEngine을 Host OS에서 실행하는게 아니라 Virtual Machine에서 실행시키는 방법이 있는데 이러면 보안 문제는 해결 되겠지만 Host OS 자원을 써서 효율이 좋았던 이득은 취할 수 없다는 아쉬움이 있다.


또 다른 단점은 모두 동일한 OS를 사용해야 한다는 것이다. 가상화 기반일 때는 어떤 OS든 돌릴 수 있었는데(물론 Hypervisor에 따라서 다르긴 하지만) Docker Engine을 사용할 때는 모든 Application이 Host OS를 공유하니, Host OS가 사용하는 운영체제와 동일해야 구동 할 수 있다.

'컴퓨터공부 > 클라우드컴퓨팅' 카테고리의 다른 글

SDN과 NFV  (0) 2019.04.21
Kubernetes 소개  (0) 2018.06.23
오픈스택 구조 분석  (0) 2017.03.07
오픈스택이란?  (0) 2017.03.07
클라우드 가상화와 Docker  (1) 2017.03.05
클라우드 컴퓨팅(Cloud Computing)  (0) 2017.02.25
  1. jin 2019.10.17 18:49  댓글주소  수정/삭제  댓글쓰기

    많은 분들이 작성하신 글들을 보았지만
    정말 쉽고 깔끔하게 정리해주신 것 같아
    덕분에 이해가 말끔히 됐습니다