Hoy en día está avanzando rápidamente la computación serverless o sin servidor, ya que permite crear aplicaciones sin tener que preocuparse por el aprovisionamiento o la administración de la infraestructura. Con esta tecnología los desarrolladores pueden empaquetar el código como contenedores serverless con AWS Fargate o funciones serverless con AWS Lambda.
A medida que se adoptan cada vez más las plataformas serverless, queda en evidencia que las tecnologías de virtualización existentes no están optimizadas para máquinas virtuales orientadas a eventos. Esto trajo aparejada la necesidad de desarrollar una tecnología de virtualización específicamente diseñada para la computación sin servidor. Esta tecnología debe proporcionar límites de seguridad basados en virtualización de hardware de las máquinas virtuales, al tiempo que mantiene el tamaño reducido y la agilidad de los contenedores y las funciones. Por ese motivo, AWS presentó en el re:Invent2018 el producto Firecracker
Tecnología Firecracker
Firecracker es un monitor de máquina virtual (VMM) de código abierto que utiliza KVM. Permite crear micro máquinas virtuales o microVMs y es minimalista por diseño: incluye solo lo que necesitamos para ejecutar máquinas virtuales seguras y livianas. En cada paso del proceso de diseño, Firecracker se optimizó para dar seguridad, velocidad y eficiencia. Por ejemplo, solo podemos ejecutar kernels de Linux recientes y solo cuando se compilan con un conjunto específico de opciones de configuración (hay más de 1000 opciones de configuración de compilación del kernel). Además, no hay soporte para gráficos o aceleradores de ningún tipo, no hay soporte para la transferencia de hardware y no hay soporte para la mayoría de los dispositivos heredados.
Firecracker inicia una configuración mínima del kernel sin depender de un BIOS emulado y sin un modelo de dispositivo completo. Los únicos dispositivos son virtio net y virtio block, así como un teclado de un solo botón (pin de reinicio). Este modelo mínimo de dispositivo no solo permite tiempos de carga mucho más rápidos (<125 ms en un i3.metal con el tamaño de microVM predeterminado), sino que también reduce la superficie vulnerable a los ataques para una mayor seguridad. Firecracker está programado en Rust, un moderno lenguaje de programación que garantiza la seguridad de los subprocesos y la memoria, evita los desbordamientos de búfer y muchos otros tipos de errores de seguridad de la memoria que pueden llevar a vulnerabilidades de seguridad.
Las microVMs de Firecracker mejoran la eficiencia y la utilización de recursos con una sobrecarga de memoria baja (<5 MiB por microVM). Esto significa que podremos empaquetar miles de microVMs en una sola máquina. También es posible utilizar un limitador de procesos para controlar con gran precisión cómo se comparten los recursos de red y almacenamiento, incluso a través de miles de microVMs. Todos los recursos de hardware se pueden sobresuscribir de forma segura para maximizar la cantidad de cargas de trabajo que se pueden ejecutar en un host.
Principios de desarrollo de Firecracker:
- Seguridad incorporada: proporciona medidas de seguridad que permiten correr cargas de trabajo multitenant y no pueden ser deshabilitadas por error por los clientes. Las cargas de trabajo de los clientes se consideran intocables y maliciosas (esto se define bajo el concepto de que siempre habrá que defenderse de ellas). Un modelo que muestra el nivel de seguridad con el que se manejan.
- Virtualización liviana: centrado en las cargas de trabajo transitorias o stateless en cargas de trabajo de larga duración o persistentes. La sobrecarga de recursos de hardware de Firecracker es conocida y garantizada.
- Características minimalistas: Mantiene una implementación única por capacidad.
- Sobresuscripción de capacidad de cómputo: todos los recursos de hardware de cómputo expuestos por Firecracker a los guests pueden sobresuscrbirse de manera segura.
Uso de Firecracker
AWS Lambda utiliza Firecracker como la base para el aprovisionamiento y la ejecución de entornos limitados en los que ejecutar código del cliente. Debido a que Firecracker proporciona una microVM segura que puede aprovisionarse rápidamente con un footprint mínimo, permite ganar rendimiento sin sacrificar seguridad. Esto permite lograr una alta utilización de hardware físico, ya que ahora es posible optimizar la forma en que distribuimos y ejecutamos las cargas de trabajo para Lambda, mezclando cargas de trabajo basadas en factores como los períodos de inactividad y la utilización de la memoria.
Anteriormente, las tareas de Fargate consistían en uno o más contenedores de Docker que se ejecutaban dentro de una máquina virtual EC2 dedicada para garantizar el aislamiento entre las tareas. Estas tareas ahora se ejecutan en microVMs de Firecracker, lo que permite aprovisionar la capa de tiempo de ejecución de Fargate de forma más rápida y eficiente en las instancias bare metal de EC2, mejorando la densidad sin comprometer el aislamiento de tareas del nivel del kernel.
Firecracker actualmente se ejecuta en procesadores Intel, pero integrarán soporte para AMD y ARM en 2019. También es posible ejecutar Firecracker en instancias de .Sval de AWS, así como en cualquier otro servidor completo, incluidos los entornos locales como la notebook del desarrollador. Firecracker también habilitará runtimes populares de contenedores (como containererd) para administrar contenedores como microVMs, lo que permite que Docker y Kubernetes lo utilicen, por ejemplo.
Pueden ver en detalle una guía de instalación y configuración de Github en el siguiente link
0 comments:
Publicar un comentario