[etc] Firecracker (microVM) ¼Ò°³
https://aws.amazon.com/ko/blogs/korea/firecracker-lightweight-virtual¡¦ (984)
160;
Firecracker 한1460; 1221;1032;
AWS가 서버리스183;컨테1060;너 워크/196;드를 “초고속 + 초ᅆ1;량 + 강ᅄ1;리̶1;/196; 돌리/140;고 만든 KVM 기0152; VMM(가상머신 모니터). 리눅스 커널만 최소 1109;치/196; 올리lj16; microVM1012; Ǖ16;워서 컨테1060;너급 속도와 VM급 ᅄ1;리를 ᇼ1;시에 노리lj16; 구1312;야. 공식 수치/196; ǥ12;ᔚ1; < 125ms, 오버헤드 < 5MiB, 호스트NJ17; 초NJ17; 최대 150개 생성1012; 목표/196; 설계.104;었고, Lambda/Fargate에 실1228; 1201;용돼 1080;Ǻ12;. firecracker-microvm.github.ioUSENIXAmazon Science
왜 만들었나 / Ǻ12;디에 Ǹ16;1060;나
문1228;1032;식: 컨테1060;너lj16; 커널1012; 공유해서 속도/유연성1008; 1339;1648;만 ᅄ1;리면에서 VM보다 약함. 서버리스 다1473; 테넌트에서 보안/0128;도/속도를 모.160; 만1313;Ȣ16;/140;고 Firecracker를 별도/196; 설계. USENIX
1201;용: AWS Lambda, Fargate가 대규모/196; 사용. 한 서버에서 수천 microVM1012; ᇼ1;시에 실행해 요청1012; 처리. USENIXAmazon Science
성능/0128;도 목표(공개 수치): microVM NJ17; <5MiB 메모리 오버헤드, <125ms에서 유1200; 공간/앱 코드 1652;1077;, 초NJ17; 150개 microVM 생성. USENIXfirecracker-microvm.github.io
핵심 아Ȗ12;ᓮ1;처 (구성요소)
VMM (Rust): 유1200; 공간에서 KVM1012; 사용해 microVM 생성183;관리. 1109;치 모델 최소화(virtio-net, virtio-blk, virtio-vsock, 시리얼 콘솔, 최소 Ȗ12;보드 컨트롤러만)/196; 공ᅄ1;면1012; 극소화. firecracker-microvm.github.io
REST API: 유닉스 소Ȓ11;1012; 통해 vCPU/메모리/디스크/네트워크//112;1060;트리0120;터/메타데1060;터 서비스 መ1;1012; 구성 후 ǥ12;ᔚ1;. GitHub
Jailer: chroot, PID/네1076;스6168;1060;스 ǥ16;리, 권한 드ǘ13;, seccomp-BPF(화1060;트리스트 24개 syscalls)/196; 21473; ᅄ1;리. 운영 0176;포에서 권1109;. USENIX
스냅샷/복원: 실행 1473; VM 상태를 1200;1109;/복원해 콜드스타트 1648;연1012; 더 1460;1060;lj16; 운영 패턴(예: Lambda SnapStart와 철Ȣ17; 유사). GitHubAWS 문서
컨테1060;너 / 1204;통 VM / Firecracker 비교
| 항목 | 컨테1060;너 | 1204;통 VM(QEMU መ1;) | Firecracker microVM |
|---|---|---|---|
| 커널 | 호스트 커널 공유 | ,172;스트 커널 | ,172;스트 커널 |
| ǥ12;ᔚ1; 시간 | ms~수초 | 수초 | < 125ms 목표 설계 |
| 메모리 오버헤드 | 매우 낮1020; | 상대1201;1004;/196; 큼 | < 5MiB 수1456; 목표 |
| ᅄ1;리 강도 | 1473;(강화 가능) | 높1020; | 높1020;(Ȣ16;드웨Ǻ12; 가상화 + 최소 1109;치 + jailer) |
| 1109;치/기능 Ƞ13;ǥ12;함 | 낮1020; | 매우 높1020; | 필수 1109;치만(virtio…)/BIOS183;PCI183;라1060;브 마1060;그/112;1060;션 없1020; |
| 사용처 | CI, 앱 0176;포 መ1; | 복합 OS/드라1060;버 | 다1473; 테넌트 서버리스, 보안 1473;시 컨테1060;너 |
수치/1228;약1032; 근,144;: 공식 사1060;트와 NSDI 논문(“BIOS/PCI/라1060;브 마1060;그̶1; 0120;1648;원), 1109;치 51333;, ǥ12;ᔚ1;/오버헤드/생성률. firecracker-microvm.github.ioUSENIX
1109;1216;과 트/112;1060;드오프
1109;1216;
보안/ᅄ1;리: Ȣ16;드웨Ǻ12; 가상화 + 최소 1109;치 모델 + jailer(seccomp, chroot, 네1076;스6168;1060;스). USENIX
속도/0128;도: 컨테1060;너에 근1217;한 스타트업 + 낮1008; 메모리 Ƞ11;프린트/196; 고0128;도 0176;치. firecracker-microvm.github.io
운영 1228;Ǻ12;: 네트워크/스토리1648; /112;1060;트 리0120;터 내1109;, 메타데1060;터 서비스 1228;공. firecracker-microvm.github.io
트/112;1060;드오프
기능 최소화: BIOS/PCI/라1060;브 마1060;그/112;1060;션 0120;1648;원, Windows ,172;스트 ǥ12;ᔚ1; 불가(1032;0120; 1080;lj16; 변ᅆ1; 없1060;lj16;). USENIX
네트워킹 셋업 필요: TAP/브리1648; 구성 መ1; 호스트 네트워킹 1648;식 요구. Actuated
오케스트/112;1060;션1008; 별도: Firecrackerlj16; QEMU 대체 포1648;션1060;1648; Docker/K8s 대체가 아님. 컨테1060;너 생태계와 연ᇼ1;(firecracker-containerd መ1;)/196; 해결. USENIXGitHub
빠르,172; 맛보기: “Hello microVM̶1; /196;컬 실행 7120;름
1204;1228;: 리눅스 호스트, Ȣ16;드웨Ǻ12; 가상화( /dev/kvm ), 커널 4.14+, x86_64/ARM64. firecracker-microvm.github.io
0148;1060;너리 설치(또lj16; ǧ16;드)
최신 릴리스 다운/196;드(현1116; v1.12.11060; 최신 릴리스/196; 표기). 또lj16; 소스 ǧ16;드:
git clone https://github.com/firecracker-microvm/firecracker cd firecracker tools/devtool buildǧ16;드 산출물 ᅆ1;/196;lj16; README1032; 안내 참고. GitHub
커널 & 루트FS 1456;비
,172;스트 커널 1060;0120;1648;(
vmlinux)와 최소 루트FS(ext4)를 1456;비. (공식 가1060;드/0176;포판 도구/1649;1217; ǧ16;드 활용 가능) GitHub
Firecracker 프/196;세스 시1089;(REST 소Ȓ11; 노출)
./firecracker --api-sock /tmp/fc.sock
다른 터0120;널에서 REST 호출/196; 설1221;1012; 0128;Ǻ12;넣Ǻ12; ǥ12;ᔚ1;. 1667;보 - 개0156;1088;1032; 오타크
머신/ǥ12;ᔚ1;/디스크 설1221; + ǥ12;ᔚ1;
# vCPU/메모리
curl --unix-socket /tmp/fc.sock -i \ -X PUT 'http://localhost/machine-config' \ -H 'Content-Type: application/json' \ -d '{"vcpu_count":1,"mem_size_mib":256,"ht_enabled":false}'
# 커널 ᅆ1;/196;/ǥ12;ᔚ1; 1064;1088;
curl --unix-socket /tmp/fc.sock -i \ -X PUT 'http://localhost/boot-source' \ -H 'Content-Type: application/json' \ -d '{"kernel_image_path":"./vmlinux", "boot_args":"console=ttyS0 reboot=k panic=1 pci=off"}'
# 루트 디스크
curl --unix-socket /tmp/fc.sock -i \ -X PUT 'http://localhost/drives/rootfs' \ -H 'Content-Type: application/json' \ -d '{"drive_id":"rootfs","path_on_host":"./rootfs.ext4", "is_root_device":true,"is_read_only":false}'
# (선택) TAP 네트워크 연결1008; 별도 1456;비 후 /network-interfaces 1088;원 추가
# ǥ12;ᔚ1;
curl --unix-socket /tmp/fc.sock -i \ -X PUT 'http://localhost/actions' \ -H 'Content-Type: application/json' \ -d '{"action_type":"InstanceStart"}'
REST API/196; 구성/ǥ12;ᔚ1;Ȣ16;lj16; 7120;름1008; 공식 README/가1060;드가 기1456;. GitHub
운영 모드
운영에 투1077;Ȣ16;/140;면 (Ꮢ1;션)
컨테1060;너 생태계 연ᇼ1;:
firecracker-containerd사용 시 컨테1060;너NJ17; microVM1012; 1088;ᇼ1; 관리(컨테1060;너드와 vsock 에1060;1204;트 연계). CI/CD, 멀티테넌트 SaaS ᅄ1;리에 유용. GitHub스냅샷/복원: 1109;시간 초기화 1080;lj16; 워크/196;드(예: 1088;0148; 런타1076;)에서 cold start를 크,172; 낮추lj16; 패턴. Lambda SnapStart 문서1032; 아1060;디Ǻ12;와 맞닿1020;. GitHubAWS 문서
호스트 Ȣ16;드닝: Firecracker Ȝ16;1060; 권1109;Ȣ16;lj16; 프/196;덕션 호스트 설1221; 문서 참고(커널 완화, SMT 비활성 መ1;). NSDI 논문에 사1060;드채널 대1025; 권고가 1221;리.104;Ǻ12; 1080;1020;. GitHubUSENIX
Ǻ16;1228; Firecracker를 택할까?
다1473; 테넌트 환ᅆ1;에서 컨테1060;너보다 더 강한 ᅄ1;리가 필요Ȣ16;1648;만 속도/0128;도도 포기 못할 ǐ12;.
서버리스/1105;성(1;1629;) 워크/196;드(요청 단위 1064;스턴스)나 불신 코드 실행 샌드0149;스(온라1064; 1200;1648;/코드 실행 서비스/멀티테넌트 CI) መ1;에 특7176; 1201;합. USENIXStan's blog
0152;대/196; Windows ,172;스트, Ƞ13;ǥ12;한 가상 1109;치/라1060;브 마1060;그/112;1060;션 መ1; 1204;통1201; VM 기능1060; 필수라면 QEMU/KVM 계열1060; 더 1201;합. USENIX
추가/196; 볼만한 1차 1088;료
공식 사1060;트(개요, 사양, 1109;치 51333;, <125ms/<5MiB, 메타데1060;터//112;1060;트리0120;터/Jailer): firecracker-microvm.github.io
NSDIR17;20 논문(설계 철Ȣ17;, 수치, 보안183;성능 Ȟ17;가, “무Ꮗ1;1012; 빼었lj16;가̶1;): USENIX
Amazon Science 블/196;그(운영 스케1068;, “초NJ17; 150개183;수천 ᇼ1;시̶1;): Amazon Science
GitHub README(API/기능 목/197;, ǧ16;드183;릴리스, v1.12.1): GitHub
firecracker-containerd(컨테1060;너드 연ᇼ1;): GitHub
스냅샷/복원 문서: GitHub
Q&A :
Firecrackerlj16; Ǻ12;떤 워크/196;드에 가1109; 1201;합Ȣ16;며, 왜 1060;를 선택Ȣ16;lj16;1648; Ƽ17;금합니다
Firecrackerlj16; 특7176; 보안, 속도, 0128;도가 1473;요한 워크/196;드에 가1109; 1201;합합니다. 기1316; 가상 머신(VM)1032; 강/141;한 ᅄ1;리 기능과 컨테1060;너1032; 가ǣ16;움1012; 모.160; 필요/196; Ȣ16;lj16; 현대1201;1064; 클라우드 환ᅆ1;에 최1201;화.104;Ǻ12; 1080;습니다.
Firecracker가 가1109; 효과1201;1004;/196; 사용.104;lj16; 워크/196;드와 그 1060;유lj16; 다1020;과 같습니다.
1. 서버리스 컴퓨ᔚ1; (예: AWS Lambda)
서버리스 함수lj16; 1060;벤트가 0156;생할 ǐ12;만 1068;시1201;1004;/196; 실행.104;lj16; 1687;1008; 생애1452;기를 가1665;니다.
선택 1060;유:
빠른 시1089; 속도: 사용1088;1032; 요청에 1593;각1201;1004;/196; 1025;NJ13;Ȣ16;기 위해 수1; 0128;리초(ms) 내에 컴퓨ᔚ1; 환ᅆ1;1060; 1456;비.104;Ǻ12;야 합니다. Firecracker1032; microVM1008; 125ms 1060;내에 ǥ12;ᔚ1;1060; 가능Ȣ16;여 1060;러한 요구사항1012; 완ǣ17;7176; 충1313;합니다.
강/141;한 보안 0143; ᅄ1;리: 서버리스 환ᅆ1;에서lj16; 수많1008; 고ᄶ1;1032; 코드가 ᇼ1;1068;한 물리 서버에서 실행.121;니다. Firecrackerlj16; Ȣ16;드웨Ǻ12; 가상화 기0152;1032; microVM1012; 사용Ȣ16;여 각 함수를 완ǣ17;Ȣ16;,172; ᅄ1;리함1004;/196;써, 한 고ᄶ1;1032; 코드가 다른 고ᄶ1;에,172; 영향1012; 0120;치lj16; ,163;1012; 원천1201;1004;/196; 차단합니다.
높1008; 1088;원 효율성: 각 microVM1008; 5MB 0120;만1032; 매우 1201;1008; 메모리만 추가/196; 사용Ȣ16;므/196;, 단1068; 서버에 수천 개1032; 함수를 ᇼ1;시에 실행할 수 1080;습니다. 1060;lj16; 서비스 1228;공1088; 1077;1109;에서 비용 효율성1012; 극대화합니다.
2. 컨테1060;너 워크/196;드 (예: AWS Fargate)
컨테1060;너lj16; 0176;포가 빠르고 가볍1648;만, 호스트 운영체1228;1032; 커널1012; 공유Ȣ16;기 ǐ12;문에 다1473; 테넌트(multi-tenant) 환ᅆ1;에서lj16; 보안에 대한 우/140;가 1080;1012; 수 1080;습니다.
선택 1060;유:
보안 강화: Firecrackerlj16; 각 컨테1060;너 또lj16; 컨테1060;너 그룹(Pod)1012; 1088;체 microVM 내에서 실행Ȣ16;여, 컨테1060;너에 VM 수1456;1032; 강/141;한 ᅄ1;리 계층1012; 추가해 1469;니다. 1060;를 통해 커널 ȏ12;약1216;1012; 1060;용한 공ᅄ1;1004;/196;ǥ12;터 호스트와 다른 컨테1060;너를 보호할 수 1080;습니다.
성능 유1648;: 무,144;운 1204;체 VM1012; 사용Ȣ16;lj16; 대신 ᅆ1;량 microVM1012; 사용Ȣ16;므/196;, 보안1012; 강화Ȣ16;면서도 컨테iner1032; 1109;1216;1064; 빠른 시1089;과 낮1008; 오버헤드를 상NJ17; ǥ12;ǥ16; 유1648;할 수 1080;습니다.
3. CI/CD 파1060;프라1064; 0143; 테스트 1088;ᇼ1;화
CI/CD(1648;속1201; 통합/1648;속1201; 0176;포) 파1060;프라1064;에서lj16; ǧ16;드, 테스트, 0176;포 መ1; 1687;고 0152;복1201;1064; 1089;업들1060; 실행.121;니다.
선택 1060;유:
신속Ȣ16;고 깨-143;한 환ᅆ1;: 각 1089;업(job)1012; 위해 수초 내에 완1204;7176; ᅄ1;리.108; 깨-143;한 환ᅆ1;1012; 생성Ȣ16;고, 1089;업1060; -149;나면 1593;시 폐기할 수 1080;습니다. 1060;lj16; 1089;업 간1032; 1032;1316;성1012; 없애고 테스트 결과1032; 1068;관성1012; 보1109;합니다.
효율1201;1064; 리소스 사용: 무,144;운 VM1012; 매번 생성Ȣ16;고 삭1228;Ȣ16;lj16; ,163;에 비해 Ȧ16;씬 1201;1008; 리소스를 사용Ȣ16;므/196;, 더 많1008; 1089;업1012; ᇼ1;시에 효율1201;1004;/196; 처리할 수 1080;습니다.
4. 안1204;한 코드 실행 샌드0149;스
신뢰할 수 없lj16; 외ǥ12; 코드(예: 사용1088;가 1228;출한 코드, 플러그1064;, AI 에1060;1204;트가 생성한 코드)를 안1204;Ȣ16;,172; 실행해야 Ȣ16;lj16; 모든 시나리오에 1201;합합니다.
선택 1060;유:
최소한1032; 공ᅄ1; 표면: Firecrackerlj16; 꼭 필요한 기능(네트워크, 스토리1648; መ1;)만 최소한1004;/196; 1228;공Ȣ16;여 1104;1116;1201;1064; 보안 공ᅄ1; ᅆ1;/196;를 크,172; 1460;였습니다.
완ǣ17;한 ᅄ1;리: Ꮊ1;성 코드가 실행.104;더라도 그 영향1008; 해NJ17; microVM 내ǥ12;에 완ǣ17;7176; ᅄ1;리.104;Ǻ12; 호스트 시스템1060;나 다른 워크/196;드에 1204;혀 영향1012; 0120;치1648; 못합니다.
결론1201;1004;/196; Firecrackerlj16; **'빠르고, 가ǣ16;우면서도, 매우 안1204;한 ᅄ1;리 환ᅆ1;'**1060; 필요한 모든 워크/196;드에 1060;상1201;1064; 솔루션1060;라고 할 수 1080;습니다.


Firecracker´Â AWS ±â¼úÀÌ´Ù º¸´Ï Linux Àç´Ü ¹× CNCF Áø¿µ¿¡¼ ¹Ð°í ÀÖ´Â microVM ±Ô°ÝÀÎ Kata Containerµµ °ü½ÉÀ» ¸¹Àº °ü½É ºÎʵ右´Ï´Ù. ¤¾¤¾
ÃÖ±Ù¿¡´Â Confidential Containers ¶ó´Â À̸§À¸·Î CNCF Àç´Ü¿¡¼ microVM(Kata Container)À» Kubernetes¿Í °áÇÕÇÏ¿© Á» ´õ °Ý¸®µÈ ȯ°æÀÇ PodÀ» Á¦°øÇÏÀÚ´Â µå¶óÀ̺굵 Àû±ØÀûÀ¸·Î °É°í ÀÖ½À´Ï´ç~
https://www.cncf.io/projects/confidential-containers/
kata µµ hypervisor À» qemu/firecracker/cloud-hypervisor Áß¿¡ ¼±ÅÃÇØ¼ »ç¿ëÇÕ´Ï´Ù.
¼·Î »ó¹ÝµÇ´Â ±â¼úÀÌ ¾Æ´Ñ°ÅÁÒ.
Kata Container°¡ Firecracker¸¦ Hypervisor·Îµµ Áö¿ø Çϴ±º¿ä!
¿£Æ®±×·ì¿¡¼ ¹ßÇ¥ÇÑ ÀÌ·± ÀÚ·áµµ Àִµ¥ ÀÌÇØ¸¦ ¸ø Çß½À´Ï´Ù