Firecracker, un monitor de máquina virtual de la mano de Amazon
Amazon dio a conocer el lanzamiento de Firecracker 1.0, el cual es un monitor de máquina virtual (VMM, Virtual Machine Monitor), diseñado para ejecutar máquinas virtuales con una sobrecarga mínima. Firecracker es una bifurcación del proyecto CrosVM utilizado por Google para ejecutar aplicaciones de Linux y Android en ChromeOS.
Amazon Web Services está desarrollando Firecracker para mejorar el rendimiento y la eficiencia de las plataformas AWS Lambda y AWS Fargate.
Sobre Firecracker
Para quienes desconocen de Firecracker, deben saber que este ofrece máquinas virtuales livianas llamadas microVM. El aislamiento completo de microVM utiliza tecnologías de virtualización de hardware basadas en el hipervisor KVM, al mismo tiempo que mantiene el rendimiento y la flexibilidad de los contenedores convencionales.
El sistema está disponible para arquitecturas x86_64 y ARM64 y ha sido probado en las familias de CPU Intel Skylake, Intel Cascade Lake, AMD Zen2 y ARM64 Neoverse N1, ademas de que se proporcionan herramientas para integrar Firecracker en el tiempo de ejecución de los sistemas de aislamiento de contenedores, como Kata Containers, Weaveworks Ignite y containerd (proporcionado por firecracker-containerd runtime).
El entorno de software que se ejecuta dentro de las máquinas virtuales se ha truncado y contiene solo un conjunto mínimo de componentes. Para ahorrar memoria, reducir el tiempo de inicio y mejorar la seguridad en los entornos, se lanza un kernel de Linux simplificado (en el cual se admiten los kernels 4.14 y 5.10), del que se excluye todo lo innecesario, incluida la funcionalidad reducida y la compatibilidad con dispositivos eliminados.
Cuando se ejecuta con un kernel truncado, el consumo de memoria adicional en comparación con un contenedor es inferior a 5 MB. La latencia desde el inicio de la microVM hasta el inicio de la ejecución de la aplicación se establece entre 6 y 60 ms (promedio de 12 ms), lo que permite generar nuevas máquinas virtuales a hasta 180 entornos por segundo en un host con 36 nucleos.
Para administrar entornos virtuales de espacio de usuario, se ejecuta el proceso en segundo plano Virtual Machine Manager, que proporciona una API RESTful que implementa funciones como configurar, iniciar y detener microVM, seleccionar plantillas de CPU (C3 o T2), determinar la cantidad de procesadores virtuales ( vCPU) y el tamaño de la memoria, agregando interfaces de red y particiones de disco, estableciendo límites en el ancho de banda y la intensidad de las operaciones, proporcionando memoria adicional y potencia de CPU en caso de escasez de recursos.
Firecracker es utilizado por/integrado con: appfleet, containerd via firecracker-containerd, Fly.io, Kata Containers, Koyeb, Northflank, OpenNebula, Qovery, UniK y Weave FireKube.
Además de ser utilizado como una capa de aislamiento más profunda para contenedores, Firecracker también es adecuado para proporcionar sistemas FaaS (Function as a Service), que ofrecen un modelo de computación sin servidor, en el que el desarrollo se lleva a cabo a nivel de preparación de un conjunto de pequeños funciones individuales, cada una de las cuales proporciona el procesamiento de un determinado evento y está diseñada para una operación independiente sin referencia al entorno (sin estado, el resultado no depende del estado anterior y el contenido del sistema de archivos).
Las funciones se ejecutan solo cuando es necesario e inmediatamente después de que se procesa el evento, completan su trabajo. La propia plataforma FaaS alberga funciones aprovisionadas, organiza la gestión y proporciona la escalabilidad de los entornos necesarios para ejecutar las funciones aprovisionadas.
¿Como compilar firecracker en Linux?
Para los que estén interesados en poder probar firecracker en su sistema, pueden realizar la compilación de este por su cuenta.
Para ello basta con que solo abran una terminal y lo primero que deben hacer es obtener el código fuente para poder realizar la compilación, esto lo pueden hacer tecleando:
git clone https://github.com/firecracker-microvm/firecracker
Hecho esto podremos entrar a la carpeta de firecracker con:
cd firecracker
Y procedemos a realizar la compilación con:
tools/devtool build toolchain="$(uname -m)-unknown-linux-musl"
Finalmente si estás interesado en poder conocer más al respecto sobre Firecracker, puedes consultar los detalles en el siguiente enlace.