무슨 일이 있었냐면요
홈랩(집에 서버 차려놓고 이것저것 굴리는 취미)이나 소규모 인프라를 다루는 분들 사이에서 인기 있는 가상화 플랫폼이 Proxmox VE예요. 이번에 taoofmac 블로그에서 이 Proxmox 위에 마이크로VM(MicroVM)을 비교적 손쉽게 띄우는 방법을 정리한 글이 올라왔어요. "VM은 무겁고 컨테이너는 좀 불안한데, 그 중간 없나?" 하는 갈증을 긁어주는 주제라 눈여겨볼 만해요.
잠깐, 마이크로VM이 뭔데요?
이걸 이해하려면 먼저 두 가지를 비교해야 해요.
일반적인 가상머신(VM)은 가상의 컴퓨터를 통째로 하나 만드는 거예요. 가상 BIOS, 가상 그래픽카드, 가상 디스크 컨트롤러까지 진짜 PC가 가진 부품들을 일일이 흉내 내죠. 그래서 격리는 단단하지만 부팅도 느리고 메모리도 많이 먹어요.
반대로 컨테이너(도커 같은 거)는 OS 커널을 호스트랑 공유해요. 그래서 엄청 가볍고 빠르지만, 커널을 같이 쓰는 만큼 격리 수준이 VM보다는 약해요. 보안이 중요한 멀티테넌트(여러 사용자가 한 서버를 나눠 쓰는) 환경에선 이게 걸리죠.
마이크로VM은 이 둘의 장점을 합친 거예요. VM처럼 진짜로 커널을 분리해서 격리는 단단하게 유지하면서, 흉내 내는 가상 하드웨어를 확 줄여버려요. 가상 그래픽카드도, 복잡한 BIOS도 다 빼고 꼭 필요한 것만 남기는 거죠. 그 결과 부팅이 수십 밀리초 단위로 빨라지고 메모리 오버헤드도 확 줄어요. 이 개념을 대중화한 게 AWS의 Firecracker인데, 람다(Lambda)나 Fargate 같은 서버리스 서비스가 바로 이 마이크로VM 위에서 함수를 격리해 돌리고 있어요.
Proxmox에서는 어떻게 하냐면
Proxmox는 내부적으로 QEMU/KVM을 쓰는데, QEMU에는 microvm이라는 머신 타입이 있어요. 이게 바로 불필요한 가상 장치를 들어낸 경량 모드예요. 다만 Proxmox 웹 UI에서 클릭 몇 번으로 바로 되는 건 아니라서, 글에서는 VM 설정 파일에 인자를 직접 추가하거나 QEMU 옵션을 손봐서 microvm 타입으로 띄우는 방식을 다뤄요. PCI 장치 흉내를 최소화하고, 부팅도 무거운 펌웨어 대신 커널을 직접 로드하는 식으로 가볍게 만드는 거죠. 'the easy way'라는 제목처럼, 맨땅에 Firecracker를 직접 세팅하는 것보다 이미 굴리던 Proxmox를 그대로 활용한다는 점이 매력이에요.
업계 흐름에서 보면
마이크로VM 진영엔 Firecracker 말고도 인텔이 주도하는 Cloud Hypervisor, 그리고 컨테이너처럼 쓰지만 속은 VM인 Kata Containers 같은 프로젝트들이 있어요. 다들 "컨테이너의 편리함 + VM의 격리"라는 같은 목표를 향해 달려가고 있죠. Proxmox 같은 친숙한 도구로 이걸 실험해볼 수 있다는 건, 이 기술이 대형 클라우드의 전유물에서 벗어나 일반 엔지니어 손에도 들어오고 있다는 뜻이에요.
한국 개발자에게는
쿠버네티스나 서버리스를 깊게 파는 분들에게 특히 의미 있어요. "왜 람다는 콜드 스타트가 그렇게 빠를까?", "믿을 수 없는 코드를 어떻게 안전하게 돌리지?" 같은 질문의 답이 바로 이 마이크로VM에 있거든요. 홈랩에 Proxmox를 쓰고 있다면, 주말에 microvm 타입으로 가벼운 서비스 하나 띄워보면서 부팅 속도와 메모리 사용량을 일반 VM과 비교해보는 것도 좋은 공부가 될 거예요.
정리하면
마이크로VM은 "컨테이너만큼 가볍게, VM만큼 안전하게"를 실현하려는 절충안이에요. 여러분이라면 보안이 걸리는 워크로드에 컨테이너 대신 마이크로VM을 써볼 생각이 있으세요?
🔗 출처: Hacker News