Un Unikernel es un ejecutable de máquina virtual (VM) de propósito único que se construye compilando una aplicación y sus dependencias de sistema operativo (bibliotecas, drivers mínimos) en una única imagen de kernel. A diferencia de los sistemas operativos tradicionales que ofrecen una abstracción de propósito general para múltiples aplicaciones, un Unikernel elimina capas innecesarias, como la gestión de procesos o la paginación de memoria para múltiples usuarios, y se ejecuta directamente sobre un hypervisor. Esto resulta en una superficie de ataque reducida, un menor consumo de recursos y tiempos de arranque extremadamente rápidos, ya que solo incluye el código estrictamente necesario para la función de la aplicación.

Aunque no son tan omnipresentes como los contenedores o las VMs tradicionales, los Unikernels han encontrado nichos de aplicación en escenarios donde la seguridad, el rendimiento y la eficiencia son críticos. Ejemplos notables incluyen MirageOS, un framework para construir aplicaciones de red seguras y de alto rendimiento en OCaml que pueden compilarse como Unikernels para Xen, KVM o como procesos de usuario. Otro es OSv, un sistema operativo diseñado para ejecutarse como un Unikernel, optimizado para cargas de trabajo en la nube y compatible con aplicaciones Linux existentes. También se han explorado en entornos de edge computing y funciones serverless para reducir la latencia y el footprint.

Para un arquitecto de sistemas, los Unikernels representan un trade-off interesante. Ofrecen ventajas significativas en seguridad (menor superficie de ataque), rendimiento (menos overhead del sistema operativo) y eficiencia de recursos (imágenes más pequeñas y arranques más rápidos), lo que los hace atractivos para microservicios críticos, funciones serverless o dispositivos IoT. Sin embargo, la gestión y el despliegue pueden ser más complejos que con contenedores o VMs estándar, ya que cada Unikernel es una imagen personalizada. La depuración puede ser un desafío y la reutilización de componentes es menor. La elección de Unikernels implica una decisión estratégica sobre la granularidad de la infraestructura, la especialización de las cargas de trabajo y la inversión en herramientas de build y orquestación que soporten este paradigma, sopesando los beneficios de seguridad y rendimiento contra la complejidad operativa.