Diferenças entre gateways de API e ESBs? [fechadas]

20

A empresa em que trabalho está avaliando algumas soluções de middleware para governança, medição e segurança de serviços da web. Atualmente, estamos usando um ESB (Enterprise Service Bus) para esse fim, mas algumas pessoas legais da gerência decidiram implantar algum API Management Middleware.

Pesquisei um pouco sobre essas soluções de gerenciamento de API (também conhecido como API Gateway), mas não consegui encontrar a diferença entre elas e os ESBs reais. Avaliei alguns white papers da Mule, WSO2, Oracle etc., mas os recursos oferecidos por ambos os produtos parecem quase os mesmos. A questão é: o que um gerenciamento de API pode fazer que um ESB não pode fazer e vice-versa? Qual valor pode ser adicionado a uma infraestrutura de TI substituindo um ESB por um gateway de API?

dliber
fonte
4
Como está o tópico "Qual é a diferença entre um Gateway de API e um ESB" para uma discussão de Engenharia de Software?
Francisco d'Anconia

Respostas:

21

A razão pela qual você está confundindo os conceitos é que os fornecedores os estão vendendo em um pacote. Mas eles são definitivamente conceitos separados.

Um API Gateway fornece um ponto de acesso central para gerenciar, monitorar e proteger o acesso aos seus serviços da Web expostos publicamente. Também permitiria a consolidação de serviços em pontos de extremidade diferentes, como se todos fossem provenientes de um único host. Por exemplo, digamos que você tivesse dez pontos de extremidade de serviço diferentes que faziam parte de um único "conjunto" de serviços. Em vez de informar os consumidores de seu serviço para usar service1.yourcompany.com para um serviço e service2.yourcompany.com para outro e assim por diante, você pode fazer com que todos aponte para api.yourcompany.com/service1 ou api.yourcompany.com / service2 e o gateway seria responsável por redirecionar as solicitações para os pontos de extremidade apropriados.

Um ESB é um "barramento" interno que permite que aplicativos e serviços se comuniquem entre si de maneira desacoplada. Todos os aplicativos podem se conectar ao barramento e podem receber qualquer mensagem que lhes interesse quando publicados por outro aplicativo. Eles também podem publicar suas próprias mensagens que outro aplicativo pode ouvir e responder. Os aplicativos não são responsáveis ​​por se conectar diretamente, publicam suas mensagens no ônibus e todas as partes interessadas ouvem e reagem.

Logicamente, o API Gateway não é um substituto para um ESB, mas um aprimoramento para uma arquitetura orientada a serviços.

Michael Brown
fonte
1
Acredito que o argumento para o uso de ESBs seja o mesmo. Os ESBs são pontos de acesso centrais e podem executar balanceamento de carga, monitoramento, medição e segurança de serviços de diferentes pontos de extremidade. Você também pode passar o URL do ESB para os consumidores, em vez do URL de serviços individuais. Até agora, nada de novo.
dliber
O ESB é um API Gateway interno destinado ao consumo externo. Se você deseja usar um API Gateway internamente em vez de um ESB, acho que não há nada para impedi-lo.
Michael Brown
Esse é exatamente o ponto. Há uma sobreposição de recursos de ESBs e plataformas de API. Você pode implantar um ESB para acesso externo ou uma plataforma de API para acesso interno. Se seus recursos são os mesmos, qual é o benefício de usar um em vez do outro? O que os torna tão diferentes para que você possa usar um ao invés do outro (ou ambos juntos) e agregar valor real aos seus negócios?
precisa
Uma coisa que um ESB foi projetado para tráfego de alto volume. Geralmente, possui um protocolo proprietário ou não da Internet. Um API Gateway foi projetado para converter entre protocolos da Internet (SOAP, JSON, XML, HL7) e colocar as solicitações no ESB. Basicamente, você PODE usar o gateway para comunicações entre seus serviços internos, que não necessariamente o tornam o melhor ajuste.
Michael Brown