하나의 물리적 하드웨어(컴퓨터, 서버 등)에서 여러 개의 독립적인 운영 환경을 실행 가능하도록 하는 기술
즉, 하나의 컴퓨터를 여러 대의 컴퓨터처럼 쪼개 사용하는 기술
가상화는 두 가지 방식으로 나뉨
베어메탈(type 1), 호스트형(type 2)
하이퍼바이저(Hypervisor)
논리적으로 공간을 분할해 VM(virtual machine)이라는 가상 환경의 서버 이용이 가능한 기술
2가지 방식
하이퍼바이저는 2가지 방식으로 나뉨
1. 베어메탈 하이퍼바이저(네이티브 하이퍼바이저)
HostOS없이 직접 하드웨어에서 하이퍼바이저가 실행됨
•
OS 역할도 하면서 동시에 여러 VM(가상 머신)을 관리하는 소프트웨어
◦
OS처럼 동작하지만, 하이퍼바이저의 실제 역할은 VM(가상 머신)을 생성하고 관리하는 역할
•
성능이 좋고 보안에 강함 → 서버 가상화에 많이 사용
◦
HostOS가 없기에 오버헤드가 적음
◦
HostOS라는 추가적인 설치가 필요 없어짐 → HostOS라는 추가적인 해킹 공격 지점이 줄어듦
보통 사람들이 호스트형 하이퍼바이저 방식으로 많이들 설명하지만(친숙하기도 함), 실제 서버 환경(클라우드 서비스나 데이터 센터)에서는 대부분 베어메탈 방식을 사용
2. 호스트형 하이퍼바이저
일반적인 소프트웨어처럼, 하이퍼바이저가 HostOS 위에서 실행되며 VM(가상 머신) 내부에서 GuestOS를 구동하는 방식
•
설치와 사용이 쉬움 → 일반 사용자 환경에서 많이 사용
•
운영체제는 기본적으로 무거움 → 오버헤드 큼
•
HostOS가 공격당하면 HostOS 위에서 실행되고 있는 하이퍼바이저부터 VM(가상 머신)들까지 모두 위험해짐
장단점
장점
컨테이너가 하이퍼바이저 기반의 가상화 기술(VM)을 보완하고자 등장했다고 알려져있어 무조건적인 장점만 있다고 자칫 편견을 갖기 좋지만, 그렇지는 않음
당장 AWS, Azure, Google Cloud Provider를 살펴보자
3사의 리소스들을 보면, 물론 컨테이너도 지원하지만 VM 기술을 적극적으로 사용하고 있음을 쉽게 볼 수 있다. 무조건적인 컨테이너 찬양은 지양해야한다
•
완전한 격리 환경 제공
◦
각 VM은 자체 OS(커널 포함)을 실행 → 완전 독립적
•
다양한 OS 실행 가능
◦
각기 다른 OS를 동시에 실행 가능
•
기존 레거시 애플리케이션 지원
◦
정말 오래된 애플리케이션들은 컨테이너로 전환하기 어려울 가능성이 높음
단점
•
성능 오버헤드
◦
VM은 각각의 OS(커널 포함)를 실행 → 리소스 소비 증가
▪
OS는 무거운 프로그램
•
느린 시작 속도
◦
VM은 완전한 OS를 실행해야함 → 부팅 시간 증가
•
비효율적인 자원 활용
◦
VM에 고정적인 리소스를 할당해야함 → 안 사용하는 자원 발생 가능성 존재
•
VM 간 통신이 비효율적
◦
가상 네트워크를 통해 VM 간 통신이 필요
컨테이너(Container)
하이퍼바이저 없이 하나의 OS 커널을 공유하면서 독립적인 실행 환경을 제공하는 운영체제 가상화 기술
핵심 개념
1. OS를 가상화하는 대신, 프로세스를 격리하는 방식
하이퍼바이저 기반 가상화 기술(VM)은 VM마다 운영체제를 실행하지만, 컨테이너는 하나의 OS 커널을 공유하면서 독립적인 실행 환경을 제공
2. 리소스 사용이 가볍고 속도가 빠름
OS는 기본적으로 무거운 프로그램이라서, VM보다 메모리, CPU 사용량이 훨씬 적고 애플리케이션 실행 속도도 훨씬 빠름
VM 기술도 방식에 따라 구조가 다르긴 합니다. 그냥 비교용으로만 봐주세요
장단점
장점
•
빠르고 일관된 애플리케이션 제공
•
확장성 및 유연성
•
어디서든 동일한 작동
단점
•
보안 취약점
•
커널 의존성 문제



