Documentos de Académico
Documentos de Profesional
Documentos de Cultura
QUE ES UN UNIKERNEL?
Un unikernel es una aplicación que se compila junto a la parte del kernel del
Sistema Operativo que necesita y que tiene como resultado un binario que incluye
ambos. Este binario luego puede ser ejecutado tanto en baremetal o en una máquina
virtual sin la necesidad de un sistema operativo intermediario (es decir, sin tener que
ejecutar Linux, Windows o lo que sea por debajo), con los beneficios de rendimiento y
seguridad que esto implica. Es decir, se podria “aplicar un unikernel” en el servidor web
Apache y asi tendriamos un host o máquina virtual dedicada a ejecutar un servidor web.
Un unikernel es una imagen binaria especializada de un kernel que funciona sin memoria
virtual (en un espacio de direcciones único) junto con las bibliotecas necesarias para que
funcione una aplicación, todo ello compilado de forma estática y ejecutado en un
hipervisor sin la supervisión ni control de ningún sistema operativo. Los unikernels tratan
de eliminar las capas intermedias entre las aplicaciones y el hardware para reducir la
complejidad.
¿Qué es un hipervisor?
QUE ES UN HIPERVISOR?
Cuando el sistema de hardware físico se usa como hipervisor, se denomina "host", y las
múltiples máquinas virtuales que utilizan sus recursos se denominan "guests"
VENTAJAS DE LOS UNIKERNELS
En general el proceso para generar un unikernel es muy costoso. Además, muchas veces,
este desarrollo en general es limitado a una aplicación, e.g., Apache, con lo cual es difícil
reutilizar código. Por supuesto que, una vez creado, las ventajas de los unikernels son
muchas y variadas como apuntábamos antes:
Mejor seguridad: menos código qué atacar, aislación completa de otras
aplicaciones (ya que no comparten ni las llamadas al sistema operativo).
La razón de la existencia de todas estas herramientas son los problemas que surgen al
implementar el software en producción. Algunos de los problemas comunes que deben
abordarse son los siguientes:
1. Consistencia del medio ambiente. Es mucho más fácil escribir un fragmento de
código que se ejecutará en una sola plataforma. Por lo tanto, debe minimizar las
diferencias de plataforma entre implementaciones.
2. Escalabilidad. Puesto que debería poder escalar rápidamente su infraestructura
para satisfacer los picos de demanda y minimizar los costos.
3. Seguridad. Esto se explica por sí mismo. Quiere que su software sea propenso a
los piratas informáticos en todos los niveles.
4. Supervisión. Desea monitorear de manera efectiva la carga en su infraestructura y
extraer todo tipo de datos para optimizar sus operaciones.
5. Sea amigable con los desarrolladores. Los desarrolladores de software quieren
hacer el menor trabajo posible para publicar su última compilación para los
clientes. Al mantener contentos a sus desarrolladores, evitará muchos problemas
más adelante.
Esta lista no es exhaustiva, pero estos son algunos problemas comunes que no tenían
una solución fácil hasta hace poco.
Sin embargo, este enfoque tiene sus ventajas. De esta manera, obtiene un control
completo del entorno para cada aspecto del sistema y puede configurarlo para que se
adapte perfectamente a sus necesidades. También simplifica la depuración, ya que puede
conectarse directamente a una máquina virtual y usarla como una estación de trabajo
normal.
DESPLIEGUE
Los contenedores intentan lograr el mismo concepto que las máquinas virtuales pero
eliminando la duplicación de esfuerzos entre máquinas. ¿Recuerda el concepto de
kernel? Bueno, en lugar de cargar un sistema operativo completo para una aplicación,
Docker permite que los contenedores usen el kernel del sistema operativo host mientras
les permite descargar bibliotecas y programas específicos de la aplicación. Dado que el
kernel de Linux es tan común y realmente no cambia entre las distribuciones, se logra una
independencia completa de la plataforma. Al ajustar el contenedor y su imagen, puede
ajustar las bibliotecas y la configuración específicas que usará su aplicación, lo que se
traduce en ganancias de rendimiento sin la sobrecarga de ejecutar un sistema operativo
completo.
VENTAJAS DE KERNEL
QUE ES UNIKERNEL