I never really realized that Firecracker VM is a full-blown machine and not just some sort of a Linux container tech. At first, it may sound like an ineffective approach, but if you take a closer look on a real-world usage example such as fly.io, you will be surprised: micro-VMs are very small and capable.

If you're interested in learning more about that, check out our NSDI'20 paper on how we chose this direction (https://www.usenix.org/conference/nsdi20/presentation/agache) and the Firecracker source and docs (https://github.com/firecracker-microvm/firecracker).

Thanks to KVM, and to the minimal hardware support (no PCI, no ACPI, etc), Firecracker's source is rather simple and even relatively readable for non-experts.