Capítulo 1: Conceptos Fundamentales de Firecracker

Por: Artiko
firecrackermicrovmkvmvmmvirtualizacion

Capítulo 1: Conceptos Fundamentales

¿Qué es Firecracker?

Firecracker es un Virtual Machine Monitor (VMM) open-source escrito en Rust por AWS. No es un emulador completo como QEMU ni un runtime de contenedores como Docker — es algo entre ambos: proporciona el aislamiento fuerte de las VMs con la eficiencia de los contenedores.

Datos clave

El problema que resuelve

Las plataformas serverless (AWS Lambda, Fargate) necesitan ejecutar código de miles de clientes diferentes en el mismo hardware físico, con:

  1. Aislamiento fuerte: que el código del cliente A no pueda afectar al cliente B
  2. Arranque rápido: las funciones deben iniciarse en milisegundos
  3. Alta densidad: cientos de instancias por servidor
  4. Overhead mínimo: cada instancia debe consumir el menor RAM posible

Los contenedores Docker ofrecen velocidad y densidad pero comparten el kernel del host (menor aislamiento). Las VMs tradicionales ofrecen aislamiento fuerte pero son lentas y pesadas. Firecracker ocupa el punto óptimo.

Arquitectura interna

Cada instancia de Firecracker ejecuta tres tipos de threads:

graph TD
    A[Proceso Firecracker] --> B[API Thread]
    A --> C[VMM Thread]
    A --> D[vCPU Thread 1]
    A --> E[vCPU Thread N]
    
    B -->|"HTTP via Unix socket"| F[Cliente externo]
    C --> G[Dispositivos VirtIO]
    C --> H[Consola serial]
    D -->|KVM_RUN| I[CPU virtual]
    E -->|KVM_RUN| I

Modelo de máquina mínimo

Firecracker no emula hardware genérico. Solo expone los dispositivos estrictamente necesarios:

DispositivoTipoPropósito
VirtIO NetRedComunicación de red
VirtIO BlockAlmacenamientoAcceso a disco
VirtIO BalloonMemoriaGestión dinámica de RAM
VirtIO VsockIPCComunicación host↔guest
VirtIO RNGEntropíaFuente aleatoria segura
Serial ConsoleDebugSalida de consola (ttyS0)

KVM: el fundamento

Firecracker no emula la CPU — usa KVM (Kernel-based Virtual Machine), un módulo del kernel Linux que convierte el host en un hypervisor tipo 1. El guest ejecuta instrucciones directamente en el hardware físico.

graph LR
    A[Guest Linux] -->|instrucciones privilegiadas| B[KVM]
    B -->|hardware real| C[CPU física]
    A -->|dispositivos VirtIO| D[VMM Thread]
    D -->|syscalls| E[Kernel host]

Esto requiere que el hardware tenga soporte de virtualización: Intel VT-x o AMD-V.

Comparación con alternativas

CriterioDockerQEMUFirecracker
AislamientoKernel compartidoFuerteFuerte
Tiempo de arranque~100 ms~5-10 s~125 ms
Overhead RAM~10 MB~100 MB~5 MB
SeguridadMediaAltaAlta
Velocidad I/ONativaModeradaAlta (VirtIO)
Uso en prodMicroserviciosVMs generalesServerless, FaaS

Casos de uso reales

Limitaciones importantes

Referencia