VPS(Virtual Private Server)이란
-VPS는 가상 사설 서버 ( Virtual Private Server )의 약자로써 웹호스팅의 한 종류
-1대의 물리서버를 여러대의 가상서버로 분리하여, 각각의 제공하는 서비스
- 물리서버 1대에서 여러대의 가상서버를 동작시키는 가상화 기술을 사용
- 가상화 기술로 인해 실제 서버처럼 동작하도록 만들어진 여러대의 서버는 가상머신
- 가상화 기술에는 KVM - 완전가상화 방식, XEN - 반가상화 방식등이 있음, 컨테이너 방식인 Docker, OpenVZ 또는 LXC 방식도 있습니다.
- 가상화 기술로 만들어지는 가상머신은 물리서버의 CPU, 메모리, 디스크 등의 자원을 사용하기 때문에 그만큼 대량의 물리서버 자원이 필요합니다.
VPS의 5가지 장점
- 비용: 전용서버나 클라우드에 비해 비교적 비용이 저렴합니다.
- 보안: 운영체제(OS)를 공유하는 것이 아니기 때문에 물리서버를 공유하는 다른 VPS 사용자들이 웹사이트나 파일, 또는 데이터에 접근하는 것이 불가능합니다.
- 관리: VPS를 사용하면 자신만의 관리 시스템을 구축할 수 있습니다. 따라서 사용자가 직접 관리자 권한을 가지고 PHP, MySQL과 같은 응용 프로그램의 설치와 설정을 하는 것이 가능합니다. (단, 호스팅에 대한 지식을 어느 정도 가지고 있는 것이 좋습니다.)
- 편리: 응용 프로그램의 설치를 위해 시스템을 다시 시작하는 경우, 다른 VPS 사용자들에게 영향을 주지 않고도 관리자가 직접 시스템을 다시 시작(Reboot)할 수 있습니다.
- 성능: VPS는 물리서버를 여러 개의 가상 서버로 쪼개어 사용하는 것임에도 물리서버에 준하는 성능을 가지고 있습니다. 물리서버를 공유한다고 하더라도, 모든 사용자가 각자의 프라이빗한 가상서버를 갖는 것이기 때문입니다. 이런 이유로 VPS는 가성비가 좋은 상품으로 자주 이야기됩니다.
VPS의 5가지 단점
- 확장성: 확장성이 없습니다. 그 이유는 스토리지가 물리서버의 한계를 갖고 있기 때문입니다. VPS 수용량이 최대치에 도달하면 공간을 더 구입하거나 다른 옵션을 알아봐야 할 것입니다. 그리고 이 과정에 시간과 비용이 소모될 수 있습니다.
- 관리: 사용자가 직접 관리를 한다는 것은 어느 정도 지식이 있는 경우에는 장점이지만 초보자라면 문제가 될 수도 있습니다. 직접 모든 것을 관리해야 하는 만큼 번거롭고, 실수로 인해 보안 등에 문제가 발생할 수도 있기 때문입니다.
- 자원공유: 하나의 물리서버에서 컴퓨팅 리소스들을 모든 사용자와 공유하기 때문에 만약 다른 VPS에 높은 부하가 발생하는 경우 RAM, 대역폭, CPU 성능이 영향을 받을 수 있습니다. 즉, 한 사용자가 너무 많은 리소스를 점유할 때 발생할 수 있는 문제입니다.
- 보안: 보안에 대해서는 장점뿐만 아니라 우려 또한 존재합니다. 다른 VPS 사용자를 타깃으로 하는 DDoS공격에 동시에 영향을 받을 수도 있기 때문입니다.
- 가용성: VPS는 고가용성을 제공하는 전용서버와 비교하면 비교적 가용성이 낮은 편입니다.
KVM (Kernel-based Virtual Machine) 완전가상화 방식
- 리눅스 커널 자체를 하이퍼바이저(가상화를 실현하는 제어 프로그램) 기반으로 동작시키는 방식
- 하이퍼 바이저 기반의 가상화이기 때문에 OS뿐만 아니라 하드웨어도 애뮬레이터
- 호스트 OS와 CPU 아키텍쳐가 달라도 작동할 수 있음.
- 하지만, 이방식은 하드웨어를 소프트웨어적으로 가상화하는 방식 이므로, 오버헤드가 걸립니다. 그렇기 때문에, 물리서버와 가상서버와 같은 성능이라고 해도, 성능차이가 발생할 수 있습니다.
XEN 반가상화
Xen의 반가상화의 게스트 운영체제는 특권 명령을 실행하려면 ‘하이퍼콜(Hypercall)’로 하이퍼바이저에게 서비스를 요청하는 해야 한다. 운영체제에서 어플리케이션이 커널에게 ‘시스템 콜(System Call)’로 서비스를 요청하는 방식과 동일하다고 할 수 있다.
실제로 하이퍼 콜은 시스템 콜과 동일한 방식으로 구현되어 있다. 서비스를 요청이 (어플리케이션 -> 커널) 인지, 아니면 (게스트 운영체제 -> 하이퍼바이저) 인지에 따라 용어가 달라질 뿐이다.
Xen에는 도메인 0라는 특수한 도메인이 존재하는데, 도메인 0는 실제 물리 디바이스와 통신하는 디바이스 드라이버가 있고, 각 도메인을 제어한다.
도메인 0는 기능상 Type2 하이퍼바이저의 호스트 운영체제와 유사하지만, Type2에서 호스트 운영체제는 하이퍼바이저를 하나의 어플리케이션으로 관리하고, Type 1에서 도메인 0는 하이퍼바이저에서 하나의 도메인으로 관리 되므로 전혀 의미가 다르다고 할수있다.
Xen 반 가상화에서 장치 입/출력을 예를 들면, 각 도메인은 하이퍼 콜로 Xen 하이퍼바이저에게 입/출력 요청을 하게 되고, Xen 하이퍼바이저는 이를 도메인 0에게 전달하여 실제 장치와 입/출력을 하게 된다.
그러면, Xen 하이퍼바이저는 입/출력 결과를 다시 입/출력을 요청한 도메인에게 입/출력 결과를 응답하게 되고, Xen의 반 가상화 입/출력을 할 시에 사용되는 매커니즘으로 I/O 링, 이밴트 채널(Event Channel), 프론트-앤드/백-앤드 드라이버, 그랜트 테이블(Grant Table), XenStore등이 있지만 모두 설명하려면 내용이 너무 길어지니 그런 것이 있다고만 알고 넘어가도록 하자.
컨테이너 기반 가상화 (ex: Docker, OpenVZ, LXC)
OS 자체 가상화
물리서버를 가상화하는 방식이 아닌, OS의 커널부분을 컨테이너끼리 공유해서 사용하는 방식입니다.
따라서 오버헤드또한 적으며, 더 많은 컨테이너를 제공할 수 있습니다. 하지만 여러 os를 제공하는데의 한정적이며, 호스트 OS와 같은 OS를 사용해야 합니다.
댓글