무하유는 리소스를 어떻게 나눠쓸까?
가상서버와 컨테이너의 차이
무하유의 인프라 운영 담당자 김희진입니다.
IT infrastructure, 주로 서버와 네트워크를 관리하고 있고 infrastructure as code에 관심이 많은 OpsDev 입니다.
서버? 가상서버와 물리서버
IT 인프라에서 서버라는 개념은 다들 알고 계실겁니다.
중앙처리장치, 주기억장치, 보조기억장치 등으로 구성되어 미들웨어, 소프트웨어를 말그대로 서브(serve) 해주는 장비이죠.
이런 서버도 물리서버와 가상서버로 나눠 질 수 있는데요, 물리서버는 말그대로 물리적으로 존재하는 서버를 뜻합니다.

이미지 출처 : pixabay
반면 가상서버는 물리적인 서버의 파티션을 나누어 물리서버의 기능을 제공하는 것인데요.
다양한 기술을 이용하여 물리서버를 여러개의 가상서버로 나누어, 리소스를 효율적으로 사용하도록 도움을 줍니다.
하이퍼바이저
그렇다면 리소스를 어떻게 나눠주어야 할까요?
하이퍼바이저가 바로 물리서버를 가상서버로 나눠주는 기술입니다.
한 대의 물리서버에서 여러 가상서버를 기동하여, 효율적으로 리소스 관리를 할 수 있게 해주는 것이죠.
하이퍼바이저에는 일반적으로 2가지 종류, type 1, type 2 하이퍼바이저가 있죠.
여기서 type 1 하이퍼바이저는 베어메탈(bare metal) 위에서 직접 실행되어 운영체제가 프로그램을 제어하듯이
동작을 하게 됩니다(ex. VMware ESXi, Xenserver).
type 2는 하이퍼바이저는 일반적인 어플리케이션처럼 OS 위에서 동작합니다 (ex. VMware Workstation)
무하유에서는 XCP-ng를 사용하고 있고, XCP-ng는 Xenserver에 기반을 둔 type 1 하이퍼바이저입니다.

이미지 출처 : 위키피디아
왜 무하유에 가상화 기술이 필요한가?
우리가 가지고 있는 자원은 한정적이죠?
사내에 필요한 서버를 모두 물리서버로 확보할 수 없기 때문에, 물리서버의 자원을 나누어 사용할 수 있는 기술이 필요합니다.
최근에는 마이크로서비스가 각광받으며 컨테이너 기술을 활용한 리소스 분배가 대세를 이루고 있죠.(ex. Docker)
그럼에도 여전히 하이퍼바이저를 이용하여 자원을 나누어 주는데는 몇가지 이유가 있습니다.
무하유의 개발환경은 다양한 OS가 필요로 하죠. 하지만 컨테이너들은 호스트 OS에 종속적인 부분이 강합니다.
호스트 OS가 리눅스면, 윈도우 컨테이너를 띄울수가 없죠.(윈도우에서는 리눅스를 띄울수 있지만..)
또한 하이퍼바이저에서 생성한 각 VM 서버별로 커널을 가지기 때문에 보안에도 강한면이 있습니다.
반면 컨테이너 기술에서는 호스트의 커널을 공유하게 되죠. 예를 들어 Ubuntu에서 컨테이너로 CentOS를 띄워도 커널은 우분투의 커널이죠.
VM은 컨테이너 보다 더 무겁지만, 이러한 면에서 강점이 있습니다.
컨테이너 기술에 대한 포스팅도 다음에 기회가 된다면…
2화에서는..
XCP-ng를 선택한 이유와 하이퍼바이저 설치, 설치과정의 이슈에 대해 포스팅하겠습니다~
읽어주셔서 감사합니다.
참고