¿Por qué no se admite 'agregación' en la mayoría de las soluciones de API Gateway?

16

Al leer sobre API Gateway, una de las cosas que surgen cada vez es que API Gateway es un lugar donde debe agregar resultados de múltiples puntos finales. Eso suena muy bien. Sin embargo, muchas soluciones populares de API Gateway, como AWS API Gateway, Kongo y Netflix Zuul, no son compatibles con dicha función. Necesita hackearlo o implementar un filtro personalizado usted mismo.

¿Se considera la agregación como una mala práctica? ¿Cómo devuelve la gente el resultado de múltiples puntos finales?

Luna
fuente

Respuestas:

11

Hay varias formas en que esta pregunta puede ser respondida:

Agregación de puntos finales

Las API Gateways en su mayoría agregan otros puntos finales, no necesariamente sus resultados. Es decir, es un servidor único que puede reflejar otros puntos finales con alguna funcionalidad adicional, como autenticación o enrutamiento.

El punto es centralizar algunos servicios, ocultar los servidores reales de la red externa, etc.

Agregación de resultados

Si realmente desea tener una lógica empresarial en el Gateway, juntar diferentes documentos en otro documento o simplemente alterar las solicitudes o respuestas, es posible que esté buscando un Bus de servicios empresariales .

Si la agregación es buena

Por supuesto, esto es discutible y depende de las opiniones individuales. Se podría argumentar que hay una razón por la que nos alejamos (principalmente) de las soluciones de tipo SOA / ESB. Esta razón podría deberse a que las responsabilidades individuales no estaban claras y tenderían a acumularse en el lado de ESB, dejando los puntos finales "tontos". Finalmente, el ESB lo sabe todo.

El enfoque "REST" es diferente. Se basa en puntos finales "inteligentes", conociendo su parte y asegurándose de que ningún otro componente necesite conocer ninguno de los detalles. Esta idea en sí misma parece estar en conflicto con hacer que Gateway sepa más sobre las respuestas .

De hecho, hay algunas ideas de arquitectura, como los sistemas autónomos , que se basan en la idea de que cualquier función que necesite su cliente debe estar completamente cubierta por un punto final determinado. No debería necesitar comunicación sincrónica con otros para cumplir una solicitud en su propia área de responsabilidad. Esto también sugiere que la agregación de resultados podría ser contraproducente.

Sin embargo, como siempre, todo depende de los requisitos exactos.

Robert Bräutigam
fuente