티스토리 뷰
엔터프라이즈 운영 방식
들어가기 앞서 엔터프라이즈 서버가 운영되는 방식에 대해 알아보자.
아래와 같이 Baremetal, Hypervisor 그리고 Container 방식이 존재한다.
- Baremetal : 실제 시스템을 임대하는 클라우드 서비스의 한 형태이다. 가상머신을 기반으로 하는 기존 클라우드 컴퓨팅과 달리 하이퍼바이저가 없으며 서버 인프라에 대한 완전한 제어력을 행사할 수 있다.
- Hypervisor : 가상 머신을 생성하고 구동하는 소프트웨어이다. 호스트OS와 게스트 OS를 분리하고 그 사이에서 리소스를 관리한다.
- Container : Docker에서 사용하는 방식이다.
가상화 기술
가상화란 서버, 스토리지, 네트워 크 및 물리적 시스템에 대한 가상 표현을 생성하는데 사용하는 기술입니다. 예를 들어 1개의 물리적 머신에서 여러 가상 시스템을 동시에 실행할 수 있습니다.
물리적 하드웨어 1대에 여러 대의 가상 머신을 사용하여 모든 리소스를 차지하면 어떻게 될까요? 1대의 가상 머신이 리소스를 더 소모하게 된다면 나머지 가상 머신에도 간섭을 일으키게 됩니다.
이러한 문제를 해결하기 위해 가상화 기술을 사용해야 합니다. 가상화 기술이란 각 가상 머신에 한정된 리소스만 사용할 수 있도록 제한합니다. 모든 가상 머신은 격리된 환경에서 프로세스를 실행하게 됩니다.
리소스를 제한하기 때문에 1대의 가상머신에 문제가 발생하여도 다른 가상 머신에는 영향을 미치지 않습니다.
가상화 기술을 사용하는 방법에는 Hypervisor와 Docker가 있습니다. 둘 다 1대의 물리적 하드웨어에서 여러 대의 가상 머신을 사용합니다.
Hypervisor 가상화
가상화 기술을 사용하기 때문에 격리된 환경에서 프로세스를 실행하게 됩니다. 즉 각 가상 머신별로 리소스를 제한하여 할당하게 됩니다.
아래 사진을 보면 Host OS, Guest OS 그리고 Hypervisor가 보일 것입니다.
- Host OS : 물리적인 하드웨어와 직접적으로 연결된 OS이다.
- Guest OS : Host OS의 리소스를 나누어 사용하는 논리적인 OS이다. 여기서 프로세스를 실행할 수 있다.
- Hypervisor : Host OS와 Guest OS 사이에서 리소스를 관리하는 역할을 한다.
Guest OS에서 실행되는 프로세스는 Hypervisor에게 리소스를 요청하게 됩니다. Hypervisor에 존재하는 커널이 이 요청을 받아 Host OS에 요청을 전달합니다.
그렇다면 Guest OS는 하드웨어에 바로 리소스 요청을 하지 않고 Hypervisor를 거치는 이유가 무엇일까요? Guest OS마다 System call 방식이 달라 Host OS에 직접적으로 요청할 수가 없습니다. 이러한 문제를 해결하고자 Guest OS와 Host OS 사이에 Hypervisor가 중간 역할을 수행하게 됩니다. 최종적으로 Hypervisor가 Host OS에 리소스 요청을 하게 되고, Host OS는 서버에 요청을 하게 됩니다.
Container 가상화
Docker에서는 컨테이너 가상화 기술을 사용합니다. Hypervisor 방식을 사용하지 않는 이유는 가볍고 빠르다는 장점을 가지고 있기 때문입니다.
컨테이너 가상화를 사용하면 모든 컨테이너가 하나의 커널을 공유합니다. 즉 Hypervisor를 거치지 않고 Host OS에 존재하는 1개의 커널만을 사용합니다.
Hypervisor vs Container
공통점
독립된 가상 환경을 제공한다.
차이점
- Hypervisor : Guest OS와 Host OS 사이에 Hypervisor가 존재한다. 그 이유는 두 OS간에 커널의 종류가 다르기 때문에 직접적으로 요청할 수가 없다.
Guest OS에서 리소스를 요청하기 위해서는 반드시 Hypervisor를 거쳐야하기 때문에 오버헤드가 증가한다. - Container : Container는 Host OS의 커널을 공유한다. 따라서 Container에서 바로 Host OS로 리소스 요청을 할 수 있다.
그러나 Host OS의 커널을 공유한다는 특징때문에 Container에서 사용하는 OS와 Host OS가 사용하는 커널의 종류가 동일해야 한다.