Integración de GraphQL de microservicios con AWS AppSync Merged API - Práctica de desarrollo distribuido por equipos

Integra APIs GraphQL desarrolladas y desplegadas independientemente por múltiples equipos en un único endpoint. Presenta estrategias para evitar conflictos de esquema y diseño de autenticación.

La necesidad de Merged API

Cuando múltiples equipos desarrollan APIs GraphQL en una arquitectura de microservicios, el frontend necesita enviar solicitudes a múltiples endpoints, aumentando la complejidad del lado del cliente. Merged API resuelve este problema integrando múltiples source APIs en un único endpoint. Mientras el equipo de usuarios desarrolla la User API, el equipo de pedidos la Order API y el equipo de productos la Product API de forma independiente, el frontend puede acceder a todo desde un único endpoint GraphQL. A diferencia de la agregación de APIs basada en REST como API Gateway, la integración se realiza a nivel de esquema GraphQL, por lo que las consultas entre servicios se pueden ejecutar en una única solicitud.

Diseño de source APIs y despliegue independiente

Cada equipo desarrolla una API AppSync independiente como source API. El esquema, los resolvers y las fuentes de datos se gestionan por cada source API, y los equipos pueden desplegar y actualizar su API libremente. Las actualizaciones de las source APIs se reflejan automáticamente en la Merged API. Los conflictos de esquema (campos Query con el mismo nombre, definiciones de tipos con el mismo nombre) se detectan durante el merge y se reportan como errores. Para evitar conflictos, se recomienda acordar previamente convenciones de nomenclatura de esquemas entre equipos, usar prefijos tipo namespace (user_, order_) o gestionar las definiciones de tipos comunes como un esquema compartido.

Estrategia de autenticación

A nivel de Merged API se configura el método de autenticación predeterminado (Cognito User Pools, IAM, API Key, Lambda Authorizer). Se pueden configurar métodos de autenticación adicionales por cada source API, aplicando la autenticación de la source API a campos específicos. Por ejemplo, es posible configurar la autenticación predeterminada de la Merged API como Cognito mientras se agrega autenticación IAM a nivel de source API para Mutations de administrador. La directiva @aws_auth controla la autenticación a nivel de campo, permitiendo exponer campos específicos solo a grupos específicos de Cognito. Para explicaciones detalladas sobre microservicios, también puedes consultar libros relacionados en Amazon.

Precios y limitaciones de Merged API

Los precios de Merged API son los mismos que una API AppSync normal, con queries y mutations a aproximadamente 4.00 dólares por millón de solicitudes. No hay cargos adicionales por la Merged API en sí, pero existe un límite en el número de source APIs (10 por defecto), y en entornos de microservicios a gran escala se requiere solicitar un aumento del límite. Cuando los resolvers de las source APIs invocan Lambda, los cargos de Lambda se facturan a la cuenta de la source API. Habilitar el caché de la Merged API permite almacenar en caché los resultados de consultas que cruzan source APIs, reduciendo el número de llamadas al backend.

Resumen

AppSync Merged API es un servicio que integra las APIs GraphQL de múltiples equipos en un único endpoint. Mantiene el despliegue independiente de cada equipo mientras proporciona un endpoint único y simple al frontend. Es el patrón estándar cuando se adopta GraphQL en una arquitectura de microservicios.