Microservicios (I)

Durante esta serie de post vamos a introducir un ejemplo para el uso de arquitecturas orientadas a microservicios.

La idea de estos posts es disponer de un quick reference guide al libro .NET Microservices: Architecture for Containerized .NET Applications, en el que hemos colaborado diversos arquitectos y que ha sido realizada por Microsoft Corporation.

Descargar libro

¿Qué es un servicio?

Es una pieza de software que provee funcionalidad a otras piezas de software. La comunicación entre estas piezas de software se realiza a través de una red de comunicaciones utilizando distintos protocolos.  Un servicio puede estar presente en varias ubicaciones (servidores) lo que permite que mediante un balanceador de carga poder utilizar varias instancias de ese servicio incrementando la capacidad de proceso y la reutilización de funcionalidad en aproximaciones del tipo SOA (Service Oriented Architecture) en las cuales los servicios exponen su funcionalidad mediante un contrato (Service Contract). Una de las principales características que debe presentar un servicio es que sea stateless, es decir que no sea necesario recordar la anterior petición de un cliente y que cualquier instancia del servicio pueda manejar una nueva petición de manera independiente.

Arquitectura orientada a Microservicios

Una arquitectura orienta a microservicios suele incorporar muchas de las ideas que se introdujeron en arquitecturas SOA, podríamos decir que es una evolución adaptada a las nuevas tecnologías, protocolos y clientes (mobile, JSON, …) que han surgido durante los últimos años.

Las principales características que presenta una arquitectura orientada a microservicios son:

  • En un plano de performance: La facilidad para crear aplicaciones que ofrezcan un High Performance. La posibilidad de realizar una escalabilidad eficiente de las aplicaciones
  • A nivel de diseño de aplicaciones. La posibilidad de creación de aplicaciones flexibles con un alto grado de reaprovechamiento funcional, la creación de aplicaciones basadas en servicios pequeños con un foco único.
  • A nivel de interoperabilidad: API agnóstica de la tecnología, independencia del almacenamiento de datos, capacidad de actualizar un servicio sin afectar al resto, despliegue independiente, transacciones distribuidas, herramientas centralizadas para el management de los servicios, …

Monolithic Applications vs Microservicios

Una de las características que presentan las arquitecturas de microservicios es la gran cantidad de ventajas que tienen sobre las clásicas arquitecturas de aplicaciones monolíticas.

Las típicas arquitecturas empresariales monolíticas suelen tener en común la no restricción al tamaño de la aplicación, una codebase grande, largos tiempos de desarrollo, stack tecnológico fijo, altos niveles de acoplamiento entre módulos y servicios pese al uso de patrones de desarrollo para minimizarlos, un fallo suele afectar al sistema completo, el escalado suele afectar al sistema completo.

Fuente de la imagen Martin Fowler

Una definición y una descripción completa de microservicios la podemos encontrar como siempre suele ocurrir recurriendo a Martin Fowler en el siguiente artículo: https://martinfowler.com/articles/microservices.html

Martin hace referencia a los nuevos paradigmas de desarrollo en los que las metodologías ágiles y la orientación a la construcción de productos no tanto ya de proyectos, requieren de elementos de desarrollo tales como los microservicios.

También en el caso de que hayamos trabajado con diseños orientados a dominio (DDD) podamos entender un microservicio o un conjunto de microservicios como la representación de un Bounded Context, en el que cada unidad funcional de microservicios disponen de sus propios datos y como ya hemos comentado pueden ser desplegados de manera independiente.

Fuente de la imagen Martin Fowler

Durante los artículos que publicaremos podremos ver la capacidad de los Microservicios y sus distintas formas de implementación y despliegue tanto en Azure como en Docker.

Autor: Javier Valero | COO Chief Operating Officer | Grupo Solutio

Referencias y agradecimientos:

Comparte

0 comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *