Content.
한 대의 물리 서버를 운영하다 보면, 자원이 비효율적으로 사용되기도 하고, 서비스나 팀별로 실행 환경을 분리해야 할 필요도 생긴다.
그래서 하나의 물리 서버를 여러 개햐의 독립 서버처럼 나눠, 자원 활용은 높이면서도 서로 간섭하지 않게 만드는 구조가 필요해졌다.

이때 도입된 해결책이 **하이퍼바이저(Hypervisor)**이다.
✅ 하이퍼바이저란?
<aside>
하이퍼바이저는 한 대의 물리 서버에서 여러 개의 가상 머신(VM)을 만들고 실행·관리하는 가상화 소프트웨어로, 하드웨어 자원을 VM들에게 나눠 주고 서로 격리되게 동작하도록 중재한다.
</aside>
VM의 계층 구조는 다음처럼 이해하면 된다.
*Hardware
↓
Hypervisor
↓
(Virtual HW → Guest OS → Apps) x N*
→ 즉, VM은 각 인스턴스가 자기만의 Guest OS(커널 포함)를 가지고 독립적으로 동작한다.
VM 구조는 격리 수준이 강한 대신, VM마다 Guest OS를 포함해야 하므로 애플리케이션 실행/배포 단위가 무거워지기 쉽다.
그런데 현개 개발에서는 배포·테스트 사이클이 빨라지고, MSA 처럼 서비스를 더 작은 단위로 쪼개 빠르게 배포/확장 해야 하는 상황이 많아졌다.
결국 VM은 머신 단위 격리에는 강하지만, 앱 단위 배포 관점에서는 오버헤드가 큰 경우가 많다는 문제가 드러났고, 이를 보완하는 방향으로 컨테이너가 확산되었고, 이를 사용하기 쉬운 형태로 대중화한 것이 도커이다.