Microservicios y Kubernetes: una guía de jardinería para ecosistemas de software
El desarrollo de software es un proceso similar a la jardinería. En ambos casos hay que ser capaz de entender cómo diferentes elementos trabajan juntos para conseguir un resultado bello y productivo. De la misma forma, tanto en la jardinería como en el desarrollo de software surgen polémicas sobre cómo abordar multitud de aspectos. Si en el primer caso las protagonistas pueden ser las malas hierbas, en el segundo es la correcta diferenciación entre microservicios y Kubernetes.
Microservicios: las plantas del jardín
Las plantas son los elementos más importantes en un jardín. Son los organismos vivos que lo componen y contribuyen a su belleza y funcionalidad. De manera similar, los microservicios son los principales componentes de las aplicaciones de software modernas. Son servicios individuales que realizan funciones específicas y trabajan juntos para crear una aplicación más grande y compleja.
Al igual que las plantas, los microservicios varían en tamaño, forma y propósito. Algunos son pequeños y especializados, y tienen la tarea de llevar a cabo una única operación. Otros son más grandes y se encargan de tareas menos concretas. Además, pueden estar formados por un grupo de componentes más pequeños. Por ejemplo, la planta de la fresa es pequeña y sólo produce fresas. Es parecida a un microservicio que solo procesa transacciones con tarjetas de crédito (pequeño y especializado). Sin embargo, una planta como el cilantro no solo produce las hojas que se utilizan en salsas y guacamoles. También sus tallos, raíces y semillas están presentes en los platos de multitud de gastronomías. El cilantro puede ser similar a un servicio que gestiona la autenticación de los usuarios, un proceso más amplio y general.
Contenedores: las macetas de los microservicios
La mayoría de las plantas necesitan plantarse en la tierra, de la que extraen nutrientes y humedad. Si dejamos sus raíces al aire, lo más seguro es que muera rápidamente. Aunque las plantas puedan introducirse directamente en el suelo, muchos jardineros prefieren utilizar macetas, ya que esto les permite utilizar la tierra más adecuada para cada planta y les facilita la defensa contra posibles plagas. Además, pueden mover más fácilmente las plantas por distintas zonas del jardín o meterlas en un invernadero, buscando la luz o la temperatura más adecuada en cada estación del año. De manera similar, existen múltiples opciones a la hora de alojar un microservicio, y la más común es un contenedor. Un microservicio en un contenedor tiene todo lo que necesita para ejecutar la aplicación y se puede mover fácilmente por distintos entornos de ejecución.
Kubernetes: las herramientas de jardinería
Podemos tener nuestros microservicios (plantas) en nuestros contenedores (macetas), pero para implementarlos, mantenerlos y escalarlos necesitamos herramientas. Aquí es donde entra en juego Kubernetes, una plataforma que proporciona muchas funciones y complementos dirigidos a facilitar la gestión y el mantenimiento de los microservicios, y que se considera la herramienta clave para la orquestación de contenedores. Por ejemplo, Kubernetes proporciona balanceo de carga automatizado, descubrimiento de servicios y capacidades de autorreparación, algo que para los desarrolladores supone un ahorro de trabajo en las tareas de mantenimiento y monitorización. ¿Y cuándo se pretenda que los microservicios (plantas) produzcan más? Kubernetes soporta actualizaciones continuas y escalado automático para mantener un correcto funcionamiento de las aplicaciones de microservicio. Aquí hay que tener en cuenta que otras alternativas a Kubernetes, como Docker Swarm y HashiCorp Nomad, ofrecen, prácticamente, las mismas funcionalidades.
Podemos tener nuestros microservicios (plantas) en nuestros contenedores (macetas), pero para implementarlos, mantenerlos y escalarlos necesitamos herramientas. Aquí es donde entra en juego Kubernetes
Microservicios sin Kubernetes: la opción del jardín salvaje
Hemos establecido los argumentos a favor del uso de Kubernetes para gestionar microservicios y evitar que las aplicaciones se descontrolen. Pero Kubernetes y los contenedores no siempre son necesarios. Dependiendo de la complejidad de la aplicación, podría optarse por utilizar una plataforma de máquina virtual o, incluso, física que pueda implementarse o aprovisionarse mediante herramientas de automatización. Estas herramientas no proporcionan el mismo nivel de automatización y escalabilidad que Kubernetes, pero es posible que sean una solución para aplicaciones poco complicadas o no críticas. Finalmente, existe la opción de utilizar plataformas sin servidor (como AWS Lambda) que permiten ejecutar código de microservicios en respuesta a eventos sin tener que preocuparse por la infraestructura subyacente.
No todo en Kubernetes son Microservicios
Los jardineros expertos saben que con plantaciones complementarias (por ejemplo, caléndulas junto a tomates) se consigue un mejor uso de los recursos y un jardín más saludable. De igual manera, Kubernetes proporciona una amplia gama de funciones y complementos que hacen que esta plataforma sea buena para algo más que para la gestión de microservicios. Kubernetes se puede utilizar para aplicaciones que no sean de microservicios (como modelos de aprendizaje automático o monolitos). Muchas organizaciones utilizan Kubernetes para administrar microservicios y otras aplicaciones, y algunas de ellas, incluso, implementan máquinas virtuales (VM) dentro de Kubernetes. Esta puede ser una excelente opción para las organizaciones que están realizando la transición de aplicaciones monolíticas heredadas a una arquitectura orientada a microservicios.
Llegando a la raíz del asunto
Además de impulsar el deseo de hacer más visitas a parques y jardines, este artículo tiene el objetivo de poner sobre las mesa dos cuestiones:
- No todo lo que se implementa en Kubernetes es un microservicio. Las características y complementos que proporciona Kubernetes convierten a esta plataforma en una herramienta muy útil en una gran variedad de ecosistemas.
- No siempre es necesario gestionar los microservicios con Kubernetes. Alguna aplicaciones florecen con herramientas alternativas y con enfoques de jardín salvaje.
Powered by WPeMatico