Las mejores alternativas de Kubernetes para la orquestación de microservicios

El alojamiento en la nube, la transmisión de música y video y los servicios de mensajería significan que todo está al alcance de su mano. Puedes ver los programas que quieras, cuando quieras, escuchar tu música favorita o enviar mensajes a tus amigos cuando quieras. La nube hace las cosas mucho más fáciles para los usuarios. Pero desarrollar para un mundo centrado en la nube puede ser una pesadilla.

El mayor desafío es asegurarse de que los datos y las aplicaciones estén disponibles las 24 horas del día, bajo demanda. Pero el tiempo del servidor cuesta dinero por hora. ¿Dejas tus servidores encendidos todo el tiempo? ¿Qué sucede cuando hay un error en una parte de su plataforma? ¿Y qué sucede cuando tienes que impulsar una nueva actualización?

Las arquitecturas de diseño tradicionales lo obligan a enviar actualizaciones como compilaciones completas. Puede llevar horas instalar una actualización y eso significa mucho tiempo de inactividad para los usuarios. Los microservicios en contenedores son una forma radical y compatible con la nube de resolver este problema. Los contenedores son esencialmente procesos independientes y todas sus dependencias se empaquetan juntas para ejecutarse. Todo lo que un proceso en contenedores necesita para ejecutarse está en ese contenedor, lo que lo hace altamente portátil.

¿Cómo funciona la contenerización?

He aquí una analogía fácil. Piense en su aplicación en la nube como un barco y en los microservicios en contenedores como múltiples compartimentos herméticos. Si solo hay un compartimento, su barco se hundirá si se inunda. Pero si tiene varios compartimentos, su barco estará bien, incluso si un compartimento se inunda. Las aplicaciones creadas con una arquitectura de microservicios pueden tener docenas o incluso cientos de microservicios en contenedores que funcionan juntos. Los microservicios pueden proporcionar funciones únicas (por ejemplo, solo la parte de mensajería de una plataforma de redes sociales). También puede tener varios microservicios que realizan funciones redundantes en varios servidores para equilibrar la carga.

En lugar de tener un servidor de mensajería encendido todo el tiempo (mascando su billetera), puede tener el microservicio de mensajería ejecutándose en múltiples servidores. Pueden ampliar o reducir la utilización de su servidor en función de la demanda de ese servicio en particular. Por lo tanto, tendría menos utilización durante la noche, abordando la demanda reducida y ahorrando dinero. Pero podría aumentar la utilización durante las horas pico.

Cómo ayuda la contenerización

La contenedorización también puede ayudar a reducir significativamente el tiempo de inactividad. Si su aplicación se compone de varios contenedores y hay un error en un servicio en particular, todo lo demás seguirá funcionando mientras lo soluciona. Además, cuando está impulsando actualizaciones incrementales, no tendría que desactivar servidores completos. Solo tendría que actualizar los microservicios individuales. Es posible que los usuarios ni siquiera noten que hubo tiempo de inactividad.

¿Qué es Kubernetes?

Aquí hay una buena analogía de . Pero en la práctica, administrar y monitorear (orquestar) las aplicaciones creadas con microservicios puede ser increíblemente difícil. Necesitaría un sistema que monitoree y ajuste dinámicamente los microservicios en cientos o miles de servidores. Afortunadamente, Google desarrolló una herramienta sólida al crear Kubernetes. La palabra «Kubernetes» significa gobernador en griego, y eso es esencialmente lo que es. Es una plataforma que lo ayuda a monitorear y gobernar aplicaciones basadas en microservicios.

Sin embargo, Kubernetes no está exento de desventajas. Tiene una curva de aprendizaje muy empinada, aunque sería mucho más difícil construir su propio orquestador. Al hacer la transición a un modelo de microservicio, también existe la necesidad de que los desarrolladores cambien la forma en que ven el código. Ellos mismos necesitan tener una buena idea de cómo escalará y cómo se implementará, en lugar de dejarlo solo en las operaciones. Hemos preparado una lista seleccionada de alternativas de Kubernetes aquí si la solución basada en Google no es la adecuada para usted. Sigue leyendo para saber más.

Alternativas a Kubernetes

1. Enjambre Docker

Para quién es: Usuarios que desean una alternativa a Kubernetes fácil de configurar

Docker (el proyecto general, no Swarm) fue pionero en la idea de los microservicios en contenedores en 2013. Docker Swarm es la plataforma de orquestación de Docker. Tiene varias ventajas sobre Kubernetes. Para empezar, aunque es menos versátil que Kubernetes, es extremadamente sencillo y fácil de instalar que Kubernetes. Docker Swarm usa una CLI con semántica similar a GIT.

Esta familiaridad significa que los desarrolladores pueden integrar fácilmente Swarm en su flujo de trabajo existente. En segundo lugar, Docker para facilitar el escalado manual de servicios, en comparación con el uso de la función kubectl en Kubernetes. Docker también gana en términos de soporte. El propio Docker ofrece soporte empresarial oficial para los clientes de Docker Enterprise Edition (que incluye Swarm). Google no ofrece soporte para Kubernetes. Sin embargo, Kubernetes es una plataforma de código abierto, por lo que existen otros proveedores. Ofrecen soporte para sus propios lanzamientos.

Docker también tiene desventajas. El registro y la supervisión son un punto débil clave. Si bien Kubernetes tiene herramientas de monitoreo integradas, Docker Swarm requiere que use herramientas de terceros como Sumo Logic y Retrace. Además, la comunidad de Docker Swarm es mucho más pequeña que la comunidad de Kubernetes.

Ventajas:

  • Más fácil de instalar y configurar que Kubernetes
  • Soporte oficial para Enterprise Edition

Contras:

  • Funcionalidad limitada de monitoreo y registro
  • Comunidad más pequeña que Kubernetes

2. DC/OS

Para quién es: usuarios que desean ejecutar cargas de trabajo en contenedores  y no en contenedores en una plataforma distribuida

DC/OS es la abreviatura de Sistema operativo del centro de datos. Opera a un nivel más alto de abstracción que Kubernetes. Kubernetes simplemente organiza microservicios en contenedores. Todavía está tratando con múltiples servidores distintos y múltiples grupos de recursos. DC/OS, sin embargo, abstrae los recursos de las propias máquinas. DC/OS puede presentar todo el centro de datos como un conjunto único y gigante de recursos: petabytes de almacenamiento, terabytes de RAM y miles de núcleos de CPU.

Los desarrolladores pueden programarlo como si estuvieran trabajando con un sistema gigante y la magia de DC/OS distribuye inteligentemente la carga en todos sus servidores. Esto significa que DC/OS también se puede usar para distribuir la función de las cargas de trabajo no en contenedores. Sin embargo, DC/OS tiene inconvenientes notables.

Si bien DC/OS es de código abierto, hay una edición empresarial que tiene muchas características clave bloqueadas detrás de un muro de pago de suscripción. Tendrá que pagar por ciertas funciones que Kubernetes admite desde el primer momento.

Ventajas:

  • Le permite ejecutar cargas de trabajo en contenedores y no en contenedores
  • Se presenta como un grupo de recursos unificado, lo que reduce la complejidad para los desarrolladores.

Contras:

  • Las funciones premium están bloqueadas detrás de un muro de pago

3. Nómada

Para quién es: Usuarios que desean un servicio de orquestación limitado pero enfocado

Uno de los principales inconvenientes de los grandes jugadores de orquestación como Kubernetes y Docker Swarm es que son  muy  complejos. Están construidos teniendo en cuenta los requisitos de gigantes como Spotify, que dan servicio a cientos de  millones  de usuarios al día. Si su aplicación necesita escalar en miles de servidores y proporcionar docenas de servicios a millones de personas, necesita  ese  nivel de complejidad. Pero si es un jugador pequeño o mediano, sus requisitos de orquestación también serán más simples.

Nomad hace muy poco por sí mismo. Solo  le permite  administrar clústeres de contenedores y programarlos. En caso de errores o fallas, también mantendrá los clústeres de contenedores en ejecución, pero eso es todo. Cualquier otra funcionalidad que necesite, en términos de registro, monitoreo o redes, debe ser manejada por otras herramientas. Si tiene más requisitos, también es fácil integrar Nomad con otras herramientas. Hashicorp, el desarrollador clave de Nomad, garantiza una estrecha integración de Nomad con sus otros productos de software como Consul y Vault.

Sin embargo, Nomad también tiene algunas desventajas notables. Para empezar, es  limitado y eso es un arma de doble filo. Si necesita funciones avanzadas de política de red y supervisión integrada, Kubernetes es la mejor solución. Además, Nomad es un jugador mucho más pequeño que Kubernetes. Ambos son proyectos de código abierto que dependen considerablemente de los aportes de la comunidad. Nomad tiene apenas el 10 por ciento de los compromisos de Github que Kubernetes. Esto significa un ritmo general más lento de desarrollo y corrección de errores.

Ventajas:

  • Fácil de usar en comparación con las otras opciones enumeradas

Contras:

  • El alcance y la escala limitados dificultan la implementación en proyectos realmente grandes
  • Comunidad relativamente pequeña

Terminando

Cada una de estas plataformas de orquestación tiene sus ventajas y desventajas. Kubernetes en sí mismo es la solución de referencia para las empresas que desean orquestar aplicaciones que atiendan a millones de usuarios. Sin embargo, la documentación vaga, una curva de aprendizaje empinada y un soporte relativamente pobre significan que no es para todos.

Docker Swarm es mucho más fácil de configurar y usar, pero no tiene herramientas sólidas de monitoreo o registro integradas. DC/OS le permite hacer más que orquestar microservicios en contenedores, pero la funcionalidad premium tiene un muro de pago. Y si bien lo más destacado de Nomad es su simplicidad, lo que lo hace ideal para proyectos de menor escala, esa misma simplicidad lo hace menos que ideal para grandes esfuerzos de clase empresarial.