Dentro de las arquitecturas de microservicios, existen muchos patrones de diseño, comunicación e integración comunes y útiles que ayudan a abordar algunos de los desafíos y oportunidades más comunes, incluidos los siguientes:
Microservicios y servicios en la nube:
Los microservicios no son necesariamente relevantes exclusivamente para la computación en la nube, pero hay algunas razones importantes por las que con frecuencia van juntas: razones que van más allá de que los microservicios sean un estilo arquitectónico popular para nuevas aplicaciones y la nube sea un destino de alojamiento popular para nuevas aplicaciones.
Entre los principales beneficios de la arquitectura de microservicios se encuentran la utilización y los beneficios de costos asociados con la implementación y el escalado de componentes de forma individual. Si bien estos beneficios aún estarían presentes hasta cierto punto con la infraestructura local, la combinación de componentes pequeños, escalables de forma independiente junto con una infraestructura de pago por uso bajo demanda es donde se pueden encontrar las optimizaciones de costos reales.
En segundo lugar, y quizás lo más importante, otro beneficio principal de los microservicios es que cada componente individual puede adoptar la pila que mejor se adapte a su trabajo específico. La proliferación de la pila puede generar una gran complejidad y sobrecarga cuando la administra usted mismo, pero consumir la pila de soporte como servicios en la nube puede minimizar drásticamente los desafíos de administración. Dicho de otra manera, si bien no es imposible implementar su propia infraestructura de microservicios, no es recomendable, especialmente cuando se está comenzando.
Patrones comunes.
Dentro de las arquitecturas de microservicios, existen muchos patrones de diseño, comunicación e integración comunes y útiles que ayudan a abordar algunos de los desafíos y oportunidades más comunes, incluidos los siguientes:
Patrón backend-for-frontend (BFF): este patrón inserta una capa entre la experiencia del usuario y los recursos a los que llama la experiencia. Por ejemplo, una aplicación utilizada en un escritorio tendrá un tamaño de pantalla, visualización y límites de rendimiento diferentes a los de un dispositivo móvil. El patrón BFF permite a los desarrolladores crear y admitir un tipo de backend por interfaz de usuario utilizando las mejores opciones para esa interfaz, en lugar de intentar admitir un backend genérico que funcione con cualquier interfaz pero que pueda afectar negativamente el rendimiento del frontend.
Patrones de descubrimiento de servicios: ayudan a que las aplicaciones y los servicios se encuentren entre sí. En una arquitectura de microservicios, las instancias de servicio cambian dinámicamente debido al escalado, las actualizaciones, las fallas del servicio e incluso la terminación del servicio. Estos patrones proporcionan mecanismos de descubrimiento para hacer frente a esta fugacidad. El equilibrio de carga puede utilizar patrones de descubrimiento de servicios mediante comprobaciones de estado y fallos del servicio como desencadenantes para reequilibrar el tráfico.
Patrón de aplicación estrangulador: estos patrones ayudan a gestionar la refactorización de una aplicación monolítica en aplicaciones de microservicios. El nombre colorido se refiere a cómo una vid (microservicios) lentamente y con el tiempo alcanza y estrangula a un árbol (una aplicación monolítica).
Patrones de entidad y agregados: una entidad es un objeto que se distingue por su identidad. Por ejemplo, en un sitio de comercio electrónico, un objeto Producto puede distinguirse por el nombre, el tipo y el precio del producto. Un agregado es una colección de entidades relacionadas que deben tratarse como una unidad. Entonces, para el sitio de comercio electrónico, un pedido sería una colección (agregada) de productos (entidades) solicitados por un comprador. Estos patrones se utilizan para clasificar datos de manera significativa.
Patrones de microservicios de adaptadores: piense en los patrones de adaptadores de la misma manera que piensa en los adaptadores de enchufe que usa cuando viaja a otro país.
El propósito de los patrones de adaptador es ayudar a traducir las relaciones entre clases u objetos que de otro modo serían incompatibles. Una aplicación que depende de API de terceros puede necesitar utilizar un patrón de adaptador para garantizar que la aplicación y las API puedan comunicarse.
Este artículo puede interesarle Diseño enfocado en las personas: la base para generar una experiencia única.