Arquitectura de Microservicios: Introducción — AprenderBigData.com
¿Te suena el concepto de microservicios? En esta entrada aprenderemos en qué consiste esta arquitectura tan popular y que está cambiando la forma de construir sistemas y aplicaciones.
Los microservicios surgieron como alternativa a las arquitecturas monolíticas aportando la escalabilidad y flexibilidad necesarias en empresas como Uber, Amazon o Netflix entre otras muchas.
¿Qué son los Microservicios?
Los microservicios son una arquitectura de software que consiste en crear las aplicaciones disminuyendo el acoplamiento entre los servicios. La aplicación, por tanto, es el conjunto de pequeños servicios, en la que cada uno representa una característica o funcionalidad concreta.
Cada microservicio se puede desarrollar, mantener y evolucionar de forma independiente e incluso estar escritos con diferentes lenguajes de programación y frameworks.
Para cada uno de ellos, se podría designar un equipo de desarrollo. Este equipo podría aumentar mucho su velocidad de trabajo al no tener que preocuparse de los efectos que sus cambios tendrían en otros servicios.
El 28% de las organizaciones de los encuestados han estado utilizando microservicios durante al menos tres años; más de las tres quintas partes (61%) de los encuestados los han estado utilizando durante un año o más.
Adopción de microservicios en 2020 — O’Reilly
Arquitectura de Microservicios vs Monolítico
Aunque la arquitectura de microservicios tiene muchas ventajas, no debemos olvidarnos de la arquitectura monolítica tradicional.
La arquitectura monolítica consiste en tener una pieza de software que sirve como base para construir todas las funcionalidades alrededor. Frecuentemente, también ejecutan todas juntas sobre la misma infraestructura.
El problema principal de la arquitectura monolítica es que todo el código se encuentra en un repositorio central, por lo que las actualizaciones afectan a la totalidad del código. A medida que el repositorio de código crece, se dificulta añadir nuevas funcionalidades o realizar cambios. También, es más complicado escalar los equipos y disminuye la flexibilidad.
Al contener servicios acoplados entre sí, si ocurre un fallo en un servicio o componente se podría propagar a todo el sistema fácilmente.
Los microservicios, por otro lado, se comunican entre sí a través de APIs. Cada microservicio se puede escalar o desplegar de forma independiente, por lo que es mucho más sencillo aislar los fallos.
Evidentemente, la arquitectura de microservicios también tiene sus desventajas, y es que introduce una complejidad que en ocasiones es innecesaria. En el caso de tener aplicaciones sencillas y homogéneas, una arquitectura monolítica puede ser la opción adecuada.
También, las aplicaciones que no tienen muchas funcionalidades adicionales y que se desean finalizar rápido se beneficiarán más de una arquitectura monolítica que de una arquitectura de microservicios.
Ventajas
Si nos preguntamos cuándo usar microservicios, debemos tener en cuenta las ventajas principales que aportan a nuestros sistemas.
La ventaja más evidente es la escalabilidad que proporcionan. Los microservicios escalan de forma independiente y podemos tener varias instancias en ejecución de los servicios que más nos interesen. Además, la escalabilidad también aplica a los equipos de desarrollo. Estos equipos disminuyen la necesidad de coordinarse entre sí, y se limitan a cubrir sus APIs, aumentando su autonomía.
Los microservicios también proporcionan la capacidad de reusar componentes en otros proyectos. Por ejemplo, un microservicio de gestión de usuarios podría servir a varias aplicaciones diferentes, con la ventaja de que si crece el número de aplicaciones o de clientes se podría escalar fácilmente añadiendo más instancias. Además, es posible reemplazar un microservicio por otra versión, incluso tener en ejecución varias versiones del mismo microservicio (por ejemplo para dar servicio a aplicaciones legacy).
Desventajas
Como hemos visto, las arquitecturas de microservicios también tienen desventajas. A continuación voy a resumir las desventajas más importantes.
Un gran desafío en los sistemas compuestos por microservicios es la monitorización. Controlar la ejecución y el despliegue de tantas entidades independientes no es una tarea sencilla, y por ello han surgido multitud de herramientas que ayudan a monitorizar y gestionar su funcionamiento. Entre estas herramientas se encuentran las populares Datadog o Dynatrace.
Cuando trabajamos con microservicios, también debemos tener muy en cuenta las comunicaciones entre ellos. Cuando el número de servicios empieza a crecer, la gestión de las peticiones y de los mensajes puede ser complicada y se debe analizar cuidadosamente para evitar fallos y situaciones inesperadas. Es común añadir un broker de mensajería como Apache Kafka para actuar de intermediario.
Por su diseño, las aplicaciones compuestas por microservicios se beneficiarán de herramientas de automatización de despliegues, integración continua y de testing. Con la ayuda de estas herramientas podemos minimizar el trabajo manual que suponen sus operaciones y los posibles errores.
Sigue leyendo sobre cómo implementar microservicios, siguientes pasos y preguntas frecuentes aquí…
¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!
Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!
Originally published at https://aprenderbigdata.com on December 7, 2020.