ARQUITECTURA DE MICROSERVICIOS

PATRÓN DE ARQUITECTURA DE MICROSERVICIOS

El patrón de Arquitectura de microservicios tiene una serie de de ventajas importantes. En primer lugar, trata el problema de la complejidad y la adaptación a las nuevas tecnologías. Descompone lo que de otro modo sería una aplicación monolítica enorme en un conjunto de servicios. Si bien la cantidad total de funcionalidades es la misma, la aplicación se ha desglosado en un conjunto de servicios asequibles donde cada uno se ocupa de una única funcionalidad.

El patrón de Arquiectura de microservicios obliga a un nivel de modularidad que en la práctica es extremadamente difícil de conseguir con el código base de una típica aplicación monolítica. En consecuencia, los servicios individuales son mucho más rápidos para desarrollarse, y mucho más fáciles de entender y mantener.

Esta arquitectura también permite que cada servicio pueda ser desarrollado dependiendo de las necesidades de cada desarrollador, con el lenguaje, técnicas, métodos, etc, que él considere oportunas ya que, independientemente de la forma en que se desarrolle este debería poder comunicarse mediante una API. Esta libertad hace que los desarrolladores ya no estén obligados a utilizar las tecnologías, posiblemente obsoletas, que existián al inicio de un nuevo proyecto y puedan empezar a desarrollar el nuevo servicio con tecnologías más actuales. Además, como los servicios son relativamente pequeños, se hace posible reescribir un servicio antiguo para actualizarlo a una tecnología actual.

Los microservicos se pueden desplegar de manera independiente. Los desarrolladores no deben coordinar más el despliegue de cambios locales a su servicio. Este tipo de cambios se pueden implementar tan pronto como se hayan probado. Además, como ya hemos comentado antes, el patrón de Arquitectura de microservicios permite escalar de forma indepdiente cada servicio. Podemos implementar sólo el número de instancias de cada servicio que satisfacen sus restricciones de capacidad y disponibilidad. Además, podemos utiizar los recursos que se adaptan mejor a los requisitos de recursos de un servicio.

Como cualqueir tecnología, todas presentan ventajas e inconvenientes y esta no iba a ser la excepción. Un incoveniente importante de los microservicios es la complejidad que se desprende del hecho de que una aplicación de este tipo es un sistema distribuido. Los desarrolladores deben elegir e implementar un mecanismo de comunicación entre procesos basado en mensajería. Además, también tienen que escribir código para gestionar un error parcial ya qeu el destino de una solicitud puede ser lenta o no disponible. Por lo tanto el sistema de comuicaciones debe ser robusto para garantizar la consistencia de los datos y, en consecuencia, su desarrollo es más complejo que el de una aplicación monolítica.

Una aplicación de microservicios consiste generalmente en un gran número de servicios. Cada servicio tendrá varias instancias de ejecución. Se trata de muchas partes móviles que hay que configurar, desplegar, escalar y controlar. Además, los microservicios son dinámicos y se pueden desplegar en cualquier sistema, cambiar de ubicación a voluntad, replegarse o desplegarse de nuevo, así que hay que tener en cuenta que debemos controlar la ubicación y la disponibilidad en todo momento. Por tanto, también será necesario implemetar un mecanismo de descubrimiento de servicios que permita a un servicio descubrir las ubicaciones (host y puertos) de cualquier otro servicio con el qeu necesite comunicarse. En consecuencia, desplegar con éxito una aplicación de microservicios requiere un mayor control de los métodos de desarrollo por parte de los desarrolladores y un alto nivel de automatización.













No hay comentarios:

Publicar un comentario

Contenido desarrollo de software - Arquitectura Software

ENUM en JAVA