Microservicios
Los microservicios son servicios ligeros, débilmente acoplados, que pueden utilizarse para crear
aplicaciones basadas en la nube. La arquitectura de microservicios es ágil y escalable, y admite la
implementación rápida, frente a la arquitectura monolítica.
Arquitectura monolítica
En ingeniería de software, una aplicación
monolítica hace referencia a
una aplicación software en la que la
capa de interfaz de usuario, lógica de
negocios y la capa de acceso a datos
están combinadas en un mismo
programa y sobre una misma
plataforma.
Arquitectura Microservicios
“La arquitectura de microservicios tiene como objetivo aislar los distintos componentes de una
aplicación, con el fin de que cada uno sea una aplicación por sí misma.”
Beneficios Microservicios
¿Quieres conocer algunos de los beneficios que
aportan los microservicios al personal DevOps?,
presta atención:
• Seguridad: cualquier problema o fallo
que suceda con un microservicio, solo
afectará a éste. A diferencia de las
aplicaciones monolíticas, un error significa
que todo el monolito puede fallar.
• Escalabilidad: una arquitectura de
microservicios puede ser escalada de forma
independiente
• Flexibilidad: los microservicios son
mucho más fáciles de trabajar que las
aplicaciones monolíticas. Además, permiten
introducir nuevos marcos, fuentes de datos
y demás recursos sin dificultades.
Patrones de diseño para la arquitectura de microservicios
Cada servicio tiene que tener su propio gobierno de datos. Un mejor enfoque es proporcionar a
cada microservicio su propio almacén de datos, de modo que no haya un acoplamiento fuerte
entre los servicios de la capa de la base de datos.
El patrón Backend for Frontends crea servicios de back-end independientes para distintos tipos de
clientes, como equipos de escritorio y móviles.
La tolerancia a fallos o failover se define como la capacidad de un sistema tecnológico para
seguir funcionado después de que se presenten errores en la aplicación o programa. Para esto, se
hace uso de herramientas como el patrón bulkhead o bulkhead pattern, que se encarga del
aumento de la resistencia
API Gateway -> Es un patrón que nos ayudarán a consultar nuestra información.
Una API Gateway es un servicio que sirve como puerta de enlace para nuestros clientes, es decir,
los clientes no hacen la consulta directamente a un microservicio, sino que este hace la petición al
Gateway y esta consulta a los servicios:
Desafíos
• Congestión y latencia de red. El uso de muchos servicios pequeños y detallados
puede dar lugar a más comunicación Inter servicios. Además, si la cadena de
dependencias del servicio se hace demasiado larga (el servicio A llama a B, que llama a
C..), la latencia adicional puede constituir un problema. Tendrá que diseñar las API con
atención. Evite que las API se comuniquen demasiado, piense en formatos de
serialización y busque lugares para utilizar patrones de comunicación asincrónica
como la nivelación de carga basada en colas.
Anti-patrones y patrones de comunicación entre microservicios
Tal y como se muestra en el diagrama anterior, en la comunicación sincrónica se crea una "cadena"
de solicitudes entre los microservicios mientras se atiende la solicitud del cliente. Esto es un
antipatrón. En la comunicación asincrónica los microservicios usan mensajes asincrónicos o sondeo
http para comunicarse con otros microservicios, pero la solicitud de cliente se sirve
inmediatamente.
Si el microservicio tiene que producir una acción adicional en otro microservicio, siempre que sea
posible, no realice esa acción de forma sincrónica como parte de la operación solicitud-respuesta
original del microservicio. Por el contrario, hágalo de forma asincrónica (mediante mensajería
asincrónica o eventos de integración, colas, etc.). Pero, siempre que sea posible, no invoque a la
acción de forma sincrónica como parte de la operación solicitud-respuesta sincrónica original.