프로젝트 소개

Firecracker는 서버리스 운영 모델을 사용하는 안전한 다중 테넌트 컨테이너 및 함수 기반 서비스를 만들고 관리하기 위해 특별히 설계된 오픈소스 가상화 기술입니다. 마이크로VM이라고 하는 경량 가상 머신에서 워크로드를 실행하며, 하드웨어 가상화의 보안과 격리를 컨테이너의 속도와 유연성과 결합하는 것을 목표로 합니다. 핵심 구성 요소는 Linux 커널 가상 머신(KVM) 위에 구축된 가상 머신 모니터(VMM)입니다. 설계는 의도적으로 최소주의를 따릅니다. 불필요한 장치와 게스트 노출 기능을 제외하여 메모리 사용량과 공격 표면을 줄이며, 프로젝트에 따르면 이는 보안을 개선하고 시작 시간을 단축하며 하드웨어 활용도를 높입니다. Firecracker는 Amazon Web Services에서 AWS Lambda 및 AWS Fargate 같은 서비스를 지원하기 위해 개발되었으며 Apache 2.0 라이선스로 배포됩니다. 또한 Kata Containers 및 Flintlock을 포함한 컨테이너 런타임에 통합되었습니다. 시작되면 Firecracker는 OpenAPI 형식으로 지정된 API 엔드포인트를 호스트에 노출합니다. 이 API를 통해 사용자는 마이크로VM의 vCPU 수(기본값 1)와 메모리 크기(기본값 128MiB)를 구성하고, CPU 템플릿을 적용하고, 네트워크 인터페이스를 연결하고, 읽기-쓰기 또는 읽기 전용 파일 기반 블록 장치를 추가하고, 게스트 실행 중 블록 장치 재스캔을 트리거하고, 부팅 전후에 블록 장치의 백킹 파일을 교체하고, virtio 장치에 대한 속도 제한기를 구성하고, 로깅 및 메트릭스를 설정하고, vsock, 엔트로피, pmem 장치를 추가하고, 메모리 핫플러깅을 관리하고, (개발자 미리보기에서) virtio PCI 장치를 핫플러그 또는 핫언플러그할 수 있습니다. 마이크로VM은 커널 이미지, 루트 파일 시스템, 부팅 인자로 시작되며, 중지는 x86_64에서만 지원됩니다. 기본 제공 기능에는 요구 결함 페이징, 기본 CPU 과다 할당, 스레드별 seccomp 필터, 그리고 프로덕션 배포를 위해 cgroup/네임스페이스 격리를 적용하고 권한을 제거하는 Jailer 프로세스가 포함됩니다. 시작하려면 릴리스 바이너리를 다운로드하거나 소스에서 빌드할 수 있습니다. 빌드에는 Docker와 bash가 있는 Unix/Linux 시스템이 필요합니다. 프로젝트는 개발 컨테이너와 devtool 빌드 명령을 제공하며, 바이너리는 build/cargo_target 아래에 배치됩니다. 문서에는 빠른 시작 가이드, 프로덕션 호스트 설정, 설계, API 요청, CPU 템플릿, vsock, 엔트로피, pmem, 메모리 핫플러그, 장치 핫플러그, jailer 사용법이 포함됩니다. 릴리스는 약 2~3개월마다 GitHub에 변경 로그와 문서화된 릴리스 정책과 함께 게시됩니다. 프로젝트는 Intel, AMD, Graviton 제품군에 걸친 AWS EC2 메탈 인스턴스와 다양한 호스트 커널, 게스트 rootfs, 게스트 커널을 포함하는 테스트 플랫폼 매트릭스를 게시합니다. 알려진 제한 사항으로 aarch64의 pl031 RTC 장치는 인터럽트를 지원하지 않으므로 RTC 알람(예: hwclock)에 의존하는 게스트 프로그램은 작동하지 않습니다. 성능 특성은 사양 파일에 문서화되어 있으며 지속적 통합 테스트를 통해 강제됩니다. 보안 공개는 프로젝트의 보안 정책에 따라 비공개로 처리되며, 커뮤니티 연락은 Slack, GitHub 이슈, 이메일을 통해 가능합니다.