Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una arquitectura de microservicios distribuye la responsabilidad entre los servicios independientes. Esa independencia cambia la forma de controlar los siguientes desafíos arquitectónicos comunes:
- Mantenimiento de coherencia de datos sin transacciones distribuidas
- Administración de comunicaciones entre servicios
- Aislamiento de errores para que los errores no se produzcan en cascada
- Integración de sistemas legados durante la migración
Los patrones de diseño de este artículo abordan estos desafíos directamente. Cada patrón tiene como destino una preocupación específica que podría surgir al diseñar, compilar y operar microservicios.
Patrones de diseño comunes
Capa de anticorrupción implementa una capa de fachada o adaptador entre subsistemas que no comparten la misma semántica. Este patrón traduce las solicitudes entre subsistemas e impide que las dependencias de sistemas heredados u otros servicios que tengan modelos de dominio incompatibles limiten el diseño de un nuevo servicio.
Backends for Frontends crean servicios backend independientes para diferentes tipos de clientes, como escritorio y móvil. Al adoptar este enfoque, no es necesario que un único servicio back-end controle los requisitos en conflicto de varios tipos de cliente. Este patrón ayuda a simplificar cada microservicio separando preocupaciones específicas del cliente.
Bulkhead aísla los recursos críticos, como grupos de conexiones, memoria y CPU, para cada carga de trabajo o servicio. Este aislamiento impide que una sola carga de trabajo o servicio consuma todos los recursos. Este patrón aumenta la resistencia de la carga de trabajo evitando que un servicio cause errores en cascada.
La coreografía permite a cada servicio decidir cuándo y cómo procesar una operación empresarial, en lugar de depender de un orquestador central. Este patrón reduce el acoplamiento entre servicios y admite actualizaciones o cambios frecuentes del servicio.
La segregación de responsabilidades de consulta de comandos (CQRS) separa las operaciones de lectura de las operaciones de escritura en modelos de datos independientes. Este patrón mejora el rendimiento, la escalabilidad y la seguridad en los microservicios donde las lecturas y escrituras tienen diferentes requisitos de rendimiento o escalado.
Enrutamiento de Pasarela utiliza un gateway de API como proxy inverso para enrutar las solicitudes de cliente a diferentes servicios según la solicitud. Este enfoque proporciona a los clientes un único punto de conexión en lugar de muchos.
La agregación de puerta de enlace utiliza la puerta de enlace para combinar varias solicitudes de clientes en una sola solicitud. Este enfoque reduce el intercambio innecesario de información entre clientes y servicios.
Descarga de puerta de enlace centraliza la funcionalidad transversal, como la terminación de Secure Socket Layer (SSL), la autenticación y la limitación de velocidad, en la puerta de enlace para que los servicios individuales no tengan que implementar estos problemas por separado.
Para más información, consulte Puertas de enlace de API para microservicios.
Saga administra la coherencia de los datos entre microservicios que tienen almacenes de datos independientes. Una saga es una secuencia de transacciones locales en las que cada servicio realiza su operación y desencadena el siguiente paso. Si se produce un error en un paso, la saga ejecuta transacciones compensatorias para deshacer los cambios anteriores. Este patrón reemplaza las transacciones distribuidas, que a menudo no son prácticas en una arquitectura de microservicios.
Sidecar implementa componentes auxiliares de una aplicación como un contenedor o proceso independientes para proporcionar aislamiento y encapsulación. Use este patrón para adjuntar funciones comunes, como el registro, la supervisión y la configuración de red, a un servicio sin insertarla en el código del servicio.
Strangler Fig admite la migración incremental desde un sistema heredado reemplazando gradualmente partes específicas de funcionalidad por nuevos servicios. Los consumidores siguen usando la misma interfaz, sin tener en cuenta que se está llevando a cabo la migración, hasta que reemplace por completo el sistema heredado.
Patrones auxiliares
La comunicación entre servicios describe los patrones Retry y Circuit Breaker para llamadas de servicio a servicio resistentes.
Para obtener el catálogo completo de patrones de diseño en la nube en el Centro de arquitectura de Azure, consulte Patrones de diseño en la nube.
Pasos siguientes
- Entrenamiento: Compilación del primer microservicio mediante .NET
- ¿Qué son los microservicios?
- Arquitectura de microservicios