243. 마이크로VM (MicroVM, Firecracker)
⚠️ 이 문서는 도커 컨테이너(Docker)의 번개 같은 실행 속도와 기존 가상머신(VM, VMware/KVM)의 철통같은 하드웨어 보안 격리라는 두 마리 토끼를 다 잡기 위해, 쓸데없는 옛날 OS 기기 드라이버들을 싹 다 뜯어내고 오직 서버리스(Lambda) 환경에서 단 몇 밀리초(ms) 만에 부팅되도록 극단적으로 다이어트시킨 AWS의 오픈소스 초경량 하이퍼바이저 '파이어크래커(Firecracker)와 마이크로VM' 기술을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 기존 가상머신(VM)에서 플로피 디스크, USB 포트, 마우스 드라이버 같은 클라우드 환경에서 절대 안 쓰는 수백 개의 쓰레기 짐(코드)을 갖다 버리고 순수한 코어만 남긴 미니멀리즘 가상화 기술이다.
- 가치: 서버리스(AWS Lambda)는 1초에 수만 개의 함수 컨테이너를 띄우고 죽여야 하는데, 남의 회사 코드들이 섞여 도는 도커 컨테이너는 해킹(컨테이너 탈출)에 취약했다. 마이크로VM은 컨테이너의 속도(0.1초 부팅)를 유지하면서도 100% 완벽한 쇳덩어리급 벽(하드웨어 격리)을 쳐주어 보안과 속도를 동시에 달성했다.
- 기술 체계: Linux KVM 기반 위에서 Rust 언어로 아주 얇게 깎아 만든 Firecracker 하이퍼바이저가 대표적이며, 오직 네트워크, 디스크, 키보드/마우스 없는 콘솔 등 필수 장치 모델 5개만 탑재하여 메모리 풋프린트를 5MB로 줄였다.
Ⅰ. 컨테이너의 가벼움과 보안의 취약성 (공용 화장실의 딜레마)
빠르고 가볍지만, 옆방 해커가 내 방으로 벽을 뚫고 들어올 수 있다.
- 도커(Docker) 컨테이너의 속도:
- 가상머신(VM)은 무겁다. 켤 때마다 윈도우/리눅스 OS를 1분 동안 부팅해야 한다.
- 컨테이너는 OS 껍데기를 버리고 핵심 앱만 포장했기 때문에 0.1초 만에 뿅 하고 뜬다(경량성).
- 리눅스 커널 공유의 재앙 (Container Breakout):
- 치명적 단점은 보안이다. 컨테이너 10개가 떠 있으면 이 10개는 밑바닥에 있는 호스트(진짜 서버)의 '리눅스 커널(심장)' 1개를 10명이 같이 쓴다.
- 만약 1번 컨테이너에 해커가 들어와 커널(심장)의 취약점을 찔러 터뜨리면? 호스트 서버 전체 권한(Root)을 탈취하여 옆에 있는 2번, 3번 컨테이너의 고객 데이터까지 몽땅 털어가는 **'컨테이너 탈출(Breakout)'**이 일어난다. 퍼블릭 클라우드 벤더(AWS)에게는 회사 문을 닫아야 할 수준의 공포다.
📢 섹션 요약 비유: 가상머신(VM)은 벽돌로 지은 독채 펜션이라 튼튼하지만 짓는 데 한 달이 걸립니다(부팅 느림). 도커 컨테이너는 종이판자로 칸막이만 친 대형 게스트하우스입니다. 1초 만에 방을 수백 개 만들 수 있지만, 옆방 해커가 발로 종이 벽을 뻥 차고 내 방으로 넘어와 내 지갑을 훔쳐 갈 수 있는 끔찍한 공용 주거 환경(보안 취약점)입니다.
Ⅱ. 가상머신의 육중함과 서버리스의 붕괴
철통 보안의 VM을 쓰자니, AWS Lambda가 부팅하다 날을 샌다.
- 기존 하이퍼바이저(KVM/QEMU)의 비만 상태:
- 보안을 지키려면 옛날 방식대로 하드웨어 레벨에서 벽을 쳐주는 가상머신(KVM+QEMU)을 써야 한다.
- 그런데 QEMU 소스코드를 까보면 플로피 디스크, CD-ROM, 마우스, 조이스틱, 구형 비디오 카드 등 클라우드(서버) 환경에서는 평생 한 번도 안 쓸 1990년대 구닥다리 기기 드라이버 코드 수백만 줄이 덕지덕지 붙어있다. (기계 호환성을 위해)
- 서버리스(Lambda) 콜드 스타트의 지옥:
- AWS 람다는 고객이 함수를 호출하면 그때서야 컨테이너를 띄운다.
- 만약 고객마다 해킹을 막겠다고 무거운 QEMU 가상머신을 띄워서 그 안에 람다를 넣어주면? 고객이 결제 버튼을 누를 때마다 윈도우 부팅 로고를 10초간 보며 기다려야 한다. (콜드 스타트 참사)
📢 섹션 요약 비유: 해커를 막겠다고 종이 벽 대신 강철 벽돌로 집을 짓기(VM)로 했습니다. 그런데 건축 업자(QEMU)가 멍청하게 집을 지을 때마다 클라우드 시대엔 아무 쓸모도 없는 말 마구간, 장작 때는 화덕, 말마차 주차장(구형 드라이버)까지 의무적으로 세트로 몽땅 다 지어버립니다. 그래서 집 하나 짓는 데 10초가 넘게 걸려, 1초 만에 손님을 받아야 하는 식당(서버리스) 영업이 완전히 박살 나는 비효율의 극치입니다.
Ⅲ. Firecracker: 타협 없는 미니멀리즘의 승리
쓸데없는 건 싹 다 버리고 5개의 핵심 뼈대만 남긴 초경량 검투사.
- 파이어크래커 (Firecracker)의 탄생:
- AWS는 속도(컨테이너)와 보안(VM)의 타협점을 찾기 위해, 기존 KVM 위에 돌아가는 무거운 QEMU를 전기톱으로 썰어버리고 **Rust 언어로 완전히 새로 짠 초경량 하이퍼바이저 'Firecracker'**를 2018년에 오픈소스로 공개했다.
- 다이어트의 기적 (MicroVM):
- 비디오 카드, 키보드, 마우스, 플로피 디스크 드라이버를 싹 다 지워버렸다.
- 오직 ① 네트워크 카드, ② 블록 스토리지, ③ 타이머, ④ 직렬 콘솔, ⑤ 전원 관리 딱 5개의 극단적 미니멀 장치(virtio 기반)만 남겼다.
- 마이크로VM이 가져온 클라우드의 혁명:
- 짐을 다 버린 파이어크래커는 메모리를 고작 5MB밖에 안 먹고, 부팅 시간이 무려 **125밀리초(0.12초)**에 불과하다. 도커 컨테이너와 삐까뜨는 미친 속도다.
- 그러면서도 100% 하드웨어 수준의 가상머신(VM) 격리 방어벽을 쳐주어, 옆방 람다(Lambda) 함수가 해킹당해도 내 람다 함수로 절대 넘어오지 못한다. 오늘날 AWS Lambda와 Fargate의 뱃속을 굴리는 진짜 숨은 심장이다.
📢 섹션 요약 비유: 아마존은 마구간과 화덕을 짓던 옛날 건축 업자(QEMU)를 해고했습니다. 그리고 아주 똑똑한 최신 3D 프린터(Firecracker)를 도입해, 침대, 책상, 화장실 딱 3개만 있는 초미니멀리즘 콘크리트 원룸(마이크로VM)을 0.1초 만에 허공에서 찍어냅니다. 종이 벽(컨테이너)이 아니라 진짜 콘크리트 벽(VM)이라 옆방 도둑이 뚫지 못하면서도, 집 짓는 속도는 텐트 치는 것만큼 빨라진 클라우드 인프라의 마스터피스입니다.