¿Diferencias entre API Gateways y ESB? [cerrado]

20

La compañía para la que trabajo está evaluando algunas soluciones de middleware para gobernanza, medición y seguridad de servicios web. Actualmente, estamos utilizando un Enterprise Service Bus (ESB) para este propósito, pero algunos tipos geniales en administración decidieron que implementarán algunos Middleware de administración de API.

Investigué un poco sobre estas soluciones de administración de API (también conocidas como API Gateway) pero no pude encontrar la diferencia entre ellas y los ESB reales. Evalué algunos documentos de Mule, WSO2, Oracle, etc., pero las características que ofrecen ambos productos parecen ser casi las mismas. La pregunta es, ¿qué puede hacer un API Management que un ESB no puede hacer y viceversa? ¿Qué valor se puede agregar a una infraestructura de TI reemplazando un ESB por una API Gateway?

dliber
fuente
44
¿Cómo es la pregunta "¿Cuál es la diferencia entre una API Gateway y un ESB" fuera de tema para una discusión de Ingeniería de Software?
Francisco d'Anconia

Respuestas:

21

La razón por la que está confundiendo los conceptos es porque los vendedores los están vendiendo en un paquete. Pero definitivamente son conceptos separados.

Un API Gateway proporciona un punto de acceso central para administrar, monitorear y asegurar el acceso a sus servicios web expuestos públicamente. También le permitiría consolidar servicios en puntos finales dispares como si todos vinieran de un único host. Por ejemplo, supongamos que tenía diez puntos finales de servicio diferentes que formaban parte de un único "conjunto" de servicios. En lugar de informar a los consumidores sobre su servicio para usar service1.yourcompany.com para un servicio y service2.yourcompany.com para otro, etc., puede hacer que todos apunten a api.yourcompany.com/service1 o api.yourcompany.com / service2 y la puerta de enlace serían responsables de redirigir las solicitudes a los puntos finales apropiados.

Un ESB es un "Bus" interno que permite que las aplicaciones y los servicios se comuniquen entre sí de manera desacoplada. Todas las aplicaciones pueden conectarse al bus y pueden recibir cualquier mensaje que les interese cuando lo publique otra aplicación. También pueden publicar sus propios mensajes que otra aplicación puede escuchar y responder. Las aplicaciones no son responsables de conectarse directamente entre sí, publican sus mensajes en el autobús y todas las partes interesadas escuchan y reaccionan.

Lógicamente, la API Gateway no es un reemplazo para un ESB sino una mejora para una arquitectura orientada a servicios.

Michael Brown
fuente
1
Creo que el argumento para usar ESB es el mismo. Los ESB son puntos de acceso centrales y pueden realizar balanceo de carga, monitoreo, medición y seguridad de servicios desde diferentes puntos finales. También puede pasar la URL del ESB a los consumidores en lugar de la URL de los servicios individuales. Hasta ahora, nada nuevo.
dliber
ESB es API Gateway interno está destinado al consumo externo. Si desea utilizar un API Gateway internamente en lugar de un ESB, supongo que no hay nada que lo detenga.
Michael Brown
Ese es exactamente el punto. Hay una superposición de características de ESB y plataformas API. Puede implementar un ESB para acceso externo o una plataforma API para acceso interno. Si sus características son las mismas, ¿cuál es el beneficio de usar una en lugar de la otra? ¿Qué los hace tan diferentes para que pueda usar uno en lugar del otro (o ambos juntos) y brindar un valor real a su negocio?
dliber
Una cosa que un ESB está diseñado para tráfico de gran volumen. Por lo general, tiene un protocolo patentado o no compatible con Internet. Un API Gateway está diseñado para traducir entre protocolos de Internet (SOAP, JSON, XML, HL7) y colocar las solicitudes en el ESB. Básicamente, PUEDE usar la puerta de enlace para las comunicaciones entre sus servicios internos, lo que no necesariamente lo hace la mejor opción.
Michael Brown