Al igual que la jardinería, el desarrollo de software requiere comprender cómo interactúan los distintos elementos para crear un ecosistema bello y productivo. Ese fue el motivo por el que elegimos la jardinería como tema para el programa Microservices March de este año. Como ocurre en cualquier jardín, hay una mala hierba problemática que no deja de aparecer en la conversación: ¿cuál es la diferencia entre los microservicios y Kubernetes?

Las plantas son los elementos principales del ecosistema de un jardín. Son los organismos vivos que conforman el jardín y contribuyen a su belleza y funcionalidad. Del mismo modo, los microservicios son los componentes básicos de las aplicaciones de software modernas. Son servicios individuales que realizan funciones específicas y trabajan conjuntamente para crear una aplicación más amplia y compleja.
Al igual que las plantas, los microservicios varían en tamaño, forma y finalidad. Algunos son pequeños y especializados, y se encargan de una única operación. Otros son más grandes y realizan operaciones más generales, o están formados por un conjunto de componentes más pequeños. Por ejemplo, una planta de fresa es pequeña y solo produce fresas. Esto equivale a un microservicio que únicamente procesa transacciones con tarjeta de crédito (pequeño y especializado). Una planta más polivalente, como el cilantro, no solo produce las hojas verdes que se utilizan en la salsa y el guacamole, sino también las semillas de cilantro. Este tipo de planta equivale a un servicio que gestiona la autenticación de usuarios (un proceso más amplio y general).

La mayoría de las plantas necesitan estar plantadas en tierra para poder absorber nutrientes y humedad; si se dejan con las raíces desnudas, morirán. Aunque es perfectamente válido plantarlas directamente en el suelo, muchos jardineros optan por cultivarlas en macetas, ya que así pueden adaptar la tierra, protegerlas mejor de las plagas y trasladarlas de un lugar a otro del jardín (o incluso llevarlas al interior durante el invierno). Del mismo modo, existen varias opciones para alojar los microservicios, y la más habitual es, acertadamente, un «contenedor». Un microservicio en contenedores incluye todo lo necesario para ejecutar la aplicación y puede trasladarse fácilmente entre distintos entornos de ejecución.

Ya tenemos nuestros microservicios (plantas) en nuestros contenedores (macetas), pero ¿cómo los desplegamos, mantenemos y escalamos? ¡Con herramientas! Aquí entra en escena Kubernetes. Kubernetes ofrece numerosas funciones y complementos que facilitan la gestión y el mantenimiento de los microservicios, y se considera la herramienta de facto para la orquestación de contenedores. Por ejemplo, Kubernetes proporciona balanceo de carga automatizado, descubrimiento de servicios y capacidades de autorrecuperación (para descargar a tus desarrolladores de parte del trabajo de mantenimiento y supervisión). ¿Y qué ocurre cuando todo el mundo quiere que tus microservicios (plantas) produzcan más? Kubernetes permite el escalado automático y las actualizaciones progresivas para que tus aplicaciones de microservicios sigan funcionando sin problemas.
Nota: Las alternativas a Kubernetes, como Docker Swarm y HashiCorp Nomad, ofrecen prácticamente las mismas funcionalidades.

Hemos expuesto los motivos para utilizar Kubernetes a fin de gestionar microservicios y evitar que las aplicaciones crezcan de forma descontrolada. Sin embargo, Kubernetes y los contenedores no siempre son necesarios. En función de la complejidad de tu aplicación, puedes optar por una plataforma tradicional de máquinas virtuales (o incluso físicas), que también se puede desplegar o aprovisionar mediante herramientas de automatización. Estas herramientas no ofrecen el mismo nivel de automatización y escalabilidad que Kubernetes, pero quizá te compense aceptar esa contrapartida en aplicaciones menos complejas o no críticas. Otra opción es utilizar plataformas de computación sin servidor (como AWS Lambda), que permiten ejecutar el código de tus microservicios en respuesta a eventos sin tener que preocuparte por la infraestructura subyacente.

Los jardineros experimentados saben que asociar cultivos —por ejemplo, plantar caléndulas junto a los tomates— permite aprovechar mejor los recursos y contribuye a tener un jardín más saludable. Del mismo modo, Kubernetes ofrece una amplia gama de funciones y complementos que lo hacen útil para mucho más que gestionar microservicios. Por ejemplo, Kubernetes puede utilizarse para aplicaciones que no se basan en microservicios, como modelos de aprendizaje automático o aplicaciones monolíticas. Vemos que muchos clientes utilizan Kubernetes para gestionar microservicios y otras aplicaciones, ¡y algunos incluso implementan máquinas virtuales (VM) dentro de Kubernetes! Esta puede ser una excelente opción para las organizaciones que están migrando aplicaciones monolíticas heredadas a una arquitectura orientada a microservicios.
Llegar a la raíz del asunto
Esperamos que saques dos conclusiones de esta publicación (además de quedarte con ganas de visitar tu vivero local):
- No todo lo que se despliega en Kubernetes es un microservicio. Las funcionalidades y los complementos que ofrece Kubernetes lo convierten en una herramienta útil para una gran variedad de ecosistemas.
- Los microservicios no siempre tienen que gestionarse con Kubernetes. Algunas aplicaciones prosperan con herramientas alternativas y un enfoque de «jardín silvestre».
Consulta los siguientes recursos para obtener más información sobre los fundamentos de los microservicios:
- Blog – Prácticas recomendadas para configurar aplicaciones de microservicios
- Webinar bajo demanda – Fundamentos de los microservicios
- Formación bajo demanda – Marzo de los microservicios de 2022: redes de Kubernetes
- Formación bajo demanda – Marzo de microservicios de 2023: Empieza a implementar microservicios
Sobre el autor

Artículos relacionados del blog
Únete a F5 NGINX en AppWorld 2024
Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.
Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.
Exposición de APIs en Kubernetes
La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».
NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.
Presentamos NGINX Plus R22
NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.
Presentamos NGINX Plus R17
NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.