Patrón de base de datos por servicio - Recomendaciones de AWS

Patrón de base de datos por servicio

El acoplamiento flexible es la característica principal de una arquitectura de microservicios, ya que cada microservicio individual puede almacenar y recuperar información de su propio almacén de datos de forma independiente. Al implementar el patrón de base de datos por servicio, usted elige los almacenes de datos más adecuados (por ejemplo, bases de datos relacionales o no relacionales) para sus requisitos empresariales y de aplicación. Esto significa que los microservicios no comparten una capa de datos, los cambios en la base de datos individual de un microservicio no afectan a otros microservicios, otros microservicios no pueden acceder directamente a los almacenes de datos individuales y solo las API acceden a los datos persistentes. La disociación de los almacenes de datos también mejora la resiliencia de la aplicación en general y garantiza que una única base de datos no pueda ser el único punto de fallo.

En la siguiente ilustración, los microservicios de “Ventas”, “Clientes” y “Cumplimiento” utilizan diferentes bases de datos de AWS. Estos microservicios se implementan como AWS Lambda funciones y se accede a ellos a través de una API de Amazon API Gateway. AWS Identity and Access Management Las políticas (IAM) garantizan que los datos se mantengan privados y no se compartan entre los microservicios. Cada microservicio usa un tipo de base de datos que cumple con sus requisitos individuales; por ejemplo, “Ventas” usa Amazon Aurora, “Clientes” usa Amazon DynamoDB y “Cumplimiento” usa Amazon Relational Database Service (Amazon RDS) para SQL Server.

Diagrama de patrones de base de datos por servicio

Debería considerar la posibilidad de utilizar este patrón si:

  • Se requiere un acoplamiento flexible entre sus microservicios.

  • Los microservicios tienen diferentes requisitos de cumplimiento o seguridad para sus bases de datos.

  • Se requiere un control más detallado del escalado.

El uso del patrón de base de datos por servicio presenta las siguientes desventajas:

  • Puede resultar difícil implementar transacciones y consultas complejas que abarquen varios microservicios o almacenes de datos.

  • Debe administrar varias bases de datos relacionales y no relacionales.

  • Sus almacenes de datos deben cumplir dos de los requisitos del teorema CAP: consistencia, disponibilidad o tolerancia a las particiones.

nota

Si se usa el patrón de base de datos por servicio, debe implementar otro patrón para implementar consultas que abarquen varios microservicios. Se puede usar Patrón de composición de API (que se puede acelerar con el Patrón CQRS ) o el patrón de abastecimiento de eventos para crear resultados agregados.