Header Ads Widget

Ticker

6/recent/ticker-posts

Introducción a Unikernels

 El CEO de NanoVMs, Ian Eyberg, presenta unikernels, un método de implementación de nicho para microservicios que toman VM de forma granular.


Parece que el mundo de DevOps está refactorizando constantemente su existencia y, al mismo tiempo, se está estrellando contra otros dominios del negocio. Recientemente, la seguridad ha sido uno de esos dominios que ha creado la nueva disciplina de DevSecOps , es decir, la aplicación de los principios de DevOps hacia la seguridad. Esto ha creado una oportunidad para que un oscuro paradigma de infraestructura comience a afianzarse.

Los Unikernels son un patrón de implementación de infraestructura emergente que avanza en todas direcciones muy rápido. Sin embargo, ¿qué es un unikernel? En pocas palabras, los unikernels son el equivalente a implementar su aplicación como su propio sistema operativo. Dado que los desarrolladores implementan predominantemente sus aplicaciones sobre máquinas virtuales Linux, los unikernels son una forma de empaquetar su aplicación como su propia máquina virtual en lugar de sentarse sobre algo como Linux. ¿Es como un recipiente? Bueno, hay algunas definiciones, pero el concepto es relativamente antiguo.

La historia del Unikernel

Ya a mediados de la década de los 90, los teóricos de los sistemas operativos ya estaban prediciendo el aumento de los unikernels. Andrew Tanenbaum incluso declaró que Linux estaba en desuso el día que salió, diciendo que estaba desactualizado.

Entonces, ¿por qué no despegaron los unikernels? Bueno, en ese entonces todavía estábamos escalando nuestros servidores verticalmente en metal real. Nadie sabía siquiera qué era la virtualización , aunque una forma de contenedores es anterior incluso a Linux a través del chroot de Billy Joy Luego, VMWare irrumpió en escena e introdujo la virtualización comercializada en todas partes.

Unos años después de eso, una pequeña librería en línea de Seattle que tal vez haya escuchado abrió un servicio llamado EC2 que cambió para siempre la forma en que los desarrolladores llevaron el software a producción, todo basado en la virtualización . Esto finalmente permitió que el concepto de unikernels tuviera sentido. Antes, habría sido una tontería dedicar un servidor completo a un programa y habría sido una tontería intentar ejecutar el programa en modo kernel en bare metal, ya que podría hacer que el servidor se bloquee.

Avance rápido a Unikernels hoy

Entonces, ¿por qué los unikernels comienzan a despegar ahora? Ha habido algunas razones. Uno, el auge y la adopción de la contenerización ha condicionado a muchos desarrolladores a adoptar conceptos similares a los de unikernel: aislar un programa determinado en un contenedor y adoptar cosas como la infraestructura inmutable y los microservicios .

En segundo lugar, la avalancha interminable de violaciones de datos en términos de tamaño, escala y número, junto con otras preocupaciones de seguridad como el cryptojacking, han hecho que los líderes técnicos desconfíen de la adopción de contenedores sin un conjunto sólido de software de seguridad.

Asista a cualquier gran conferencia de seguridad como RSA o BlackHat y verá docenas de empresas de seguridad de contenedores. No solo están tratando de sacar provecho de la locura: los CISO están exigiendo apoyo debido a la increíble inseguridad que conllevan las cargas de trabajo basadas en contenedores.

Aislamiento y especialización con Unikernels. (Reutilizado de  ZDNet )

Otras razones de la moda Unikernel

Dejando a un lado la seguridad, hay otras razones para la adopción de unikernel. El rendimiento de los unikernels, su tamaño y consideraciones de densidad también ofrecen beneficios reales.

Los servidores pequeños pueden activar de forma rutinaria miles de unikernels en servidores de mierda. Hay numerosos artículos de conferencias prestigiosas como HotCloud y OSDI que señalan el impresionante tiempo de arranque de los unikernels, con un reloj de menos de 10 ms , y su reducción de cambio de contexto permite a los desarrolladores aprovechar esto.

Con paradigmas más nuevos, como la informática sin servidor y de borde , estos beneficios se reciben ampliamente. De hecho, estuve en una conferencia de unikernel en Beijing a principios del año pasado y descubrí cómo Alibaba está explorando el uso de unikernels para construir su plataforma sin servidor para su nube.

Lea también: Introducción a los contenedores Docker

Tipos de implementaciones de Unikernel

Hay algo al norte de 10 implementaciones diferentes de Unikernel hoy en día. Los agrupo en gran parte en 2 categorías : algunos están obsesionados con un solo idioma. A estos los llamo los unikernels puristas . En un mundo perfecto, solo usaríamos un lenguaje de programación, pero como la Torre de Babel, nosotros, como desarrolladores, hablamos un montón de lenguajes.

Entonces, en el otro extremo, tenemos lo que llamamos unikernels POSIX . Este es un nombre un poco inapropiado porque lo que realmente estamos diciendo es que implementan el estándar POSIX hasta cierto punto, al menos más que las variedades puristas unikernel. Aunque los puristas no desean el equipaje adicional, un gran beneficio es que los unikernels POSIX no requieren reescrituras. Literalmente, puede tomar una aplicación MySQL o tomcat y ejecutarla, no es necesario reescribirla.

Inconvenientes de Unikernels

Entonces, ¿cuáles son algunos de los inconvenientes de los unikernels? Hay algunos aspectos negativos que son reales y algunos que son falsos. Algunos detractores mencionan que la depuración apesta. Puedo afirmar por pasar demasiado tiempo con strace y GDB que este simplemente no es el caso. La depuración se puede realizar con las mismas herramientas que utiliza hoy para depurar sus aplicaciones.

Sin embargo, un problema real muy grande fue que durante mucho tiempo los unikernels permanecieron inaccesibles para el desarrollador promedio porque requerían que fueran expertos en sistemas operativos o programadores de C de bajo nivel. Simplemente arrancar hello worldimplicaría encontrar la biblioteca correcta a la que enlazar para la versión correcta de gcc, deshabilitar esto cflag, habilitar eso ldflago clonar un árbol de fuentes diferente que estaba en desuso hace 2 años. En resumen, hubo muchos agujeros de conejo dolorosos hasta el punto de que la mayoría de la gente se daría por vencida después de 5 minutos, arrojaría su computadora por la ventana y se iría a vivir con algunas ovejas fuera de la red.

Herramientas de código abierto al rescate

OPS : una herramienta de compilación y orquestación de código abierto para facilitar la implementación de Unikernel.

La capacidad de aprendizaje con unikernels fue un problema real. Ese también es un problema que la nueva herramienta de código abierto OPS intenta abordar. Permite a cualquiera ejecutar un comando y construir y arrancar instantáneamente un unikernel desde cualquier ELF (un binario nativo de Linux) para combatir específicamente esta preocupación. En mi opinión, los desarrolladores deberían centrarse en crear sus aplicaciones; no pasar una eternidad luchando contra los dioses del servidor simplemente tratando de implementar una aplicación simple.

Otro gran problema, en mi opinión, es que los unikernels casi siempre se distribuyen como máquinas virtuales (VM). Puede implementarlos directamente en un servidor o ejecutarlos sobre Linux, pero ninguna de esas opciones tiene mucho sentido por razones de rendimiento y capacidad de administración. Los que se ejecutan sobre Linux generalmente se muestran en una máquina virtual basada en kernel (KVM), por lo que obtiene aceleración de hardware y se orquesta a través de qemu . Para los no iniciados, Google Cloud y AWS se basan en bifurcaciones de KVM.

Sin embargo, parte del problema es que si va a AWS o GCE, su tamaño mínimo de imagen de disco es de 1 Gb. He compilado unikernels en el rango de kb, pero los unikernels de Go promedio con los que jugamos tienen un reloj de entrada un poco más grande que el binario de go en sí (10-15mb). A eso se suma el hecho de que la creación de una AMI personalizada en AWS u otra tampoco es muy rápida; en esencia, puede crear unikernels en la nube pública, pero la experiencia actualmente no es tan buena como si se encuentra en su propio centro de datos privado. o en los servidores que controlas. Si tiene servidores bare metal, elimínese, estará muy por delante de cualquiera de los usuarios de la nube en términos de ejecutar estas cosas.

Relacionado: ¿Cuál es la diferencia entre API y microservicios?

El impulso de la industria de la nube hacia los Unikernels

Sin embargo, estamos comenzando a ver que este problema desaparece cuando Google lanzó gVisor y AWS lanzó petardos durante el año pasado. Ambos proyectos, aunque no son unikernels, son un fuerte guiño hacia los grandes proveedores de la nube que buscan refactorizar su ecosistema para respaldar a los unikernels. Siento que el apoyo seguirá creciendo a medida que aumente la adopción. Además, algunos de nosotros, los usuarios de la nube más pesados, tendemos a olvidar que más del 95% de la informática todavía está encerrada en centros de datos privados y luego está la ventaja que la mayoría de los expertos ven eclipsando en gran medida las implementaciones de la nube pública.

Aunque existen impedimentos para la adopción, nada en el ecosistema de Unikernel es insuperable, es solo trabajo que debe hacerse. Tome la amplia variedad de empresas en la nube, representadas por el gráfico del ecosistema nativo de la nube de CNCF .

Con el tiempo, un ecosistema igualmente vibrante alrededor de unikernels podría empequeñecer este tamaño, principalmente por dos razones. Uno, ya existe un ecosistema de virtualización establecido Es fácil adaptar unikernels en tales plataformas. En segundo lugar, los unikernel abren formas completamente nuevas de computación que han sido inaccesibles para los desarrolladores de hoy. Por ejemplo, investigadores de lugares como NEC y Ericsson están interesados ​​en ellos para las capacidades de NFV.

Conclusiones para proveedores de API

Los desarrolladores de API deben prestar especial atención al ecosistema de unikernel, ya que abarca por completo muchos de los conceptos principales que se encuentran en el mundo de las API. Tomemos , por ejemplo, la infraestructura inmutable ; esto requiere contar con una administración de configuración adecuada para que pueda construir, implementar y derribar su infraestructura de manera programática.

Los Unikernels van un paso más allá porque, si bien es posible que tenga o no un sistema de archivos mutable en su lugar (algunos no lo hacen), todos adoptan la naturaleza de proceso único de un unikernel. Esto significa que el artefacto ni siquiera tiene la capacidad de ejecutar otros programas en la misma máquina virtual.

Los Unikernels también adoptan microservicios . Docker y otras implementaciones de contenedores ayudaron a popularizar este concepto, lo que permitió a los expertos que no eran de Linux poner en marcha un puñado de servicios y vincularlos con relativa facilidad. Al ser aplicaciones de proceso único, los unikernels adoptan completamente el modelo de implementación de microservicios y están intrínsecamente construidos para ejecutarse en tal disposición.

Ya sea que sea un profesional de DevOps, un aficionado a los servidores sin servidor o un desarrollador de API / microservicios, vale la pena dedicar su tiempo a buscar unikernels. Gire algunos y conviértase en lo que se perfila como el ecosistema venidero. Esperamos que surja una constelación de proyectos unikernel durante el próximo año.

Publicar un comentario

0 Comentarios