Um ESB é um componente essencial da SOA, ou arquitetura orientada a serviços, uma arquitetura de software que surgiu no final dos anos.
A SOA define uma maneira de tornar os componentes de software reutilizáveis por meio de interfaces de serviço. Geralmente, esses serviços utilizam interfaces padrão (por exemplo, serviços web), permitindo sua rápida incorporação em novos aplicativos, sem a necessidade de duplicar a funcionalidade realizada pelo serviço nos novos aplicativos.
Cada serviço em uma Arquitetura Orientada a Serviços (SOA) contém o código e os dados necessários para executar uma função de negócios completa e independente (por exemplo, verificar o crédito de um cliente, calcular o pagamento mensal de um empréstimo ou processar um pedido de hipoteca).
As interfaces de serviço fornecem um acoplamento solto, o que significa que elas podem ser chamadas com pouco ou nenhum conhecimento de como o serviço é implementado abaixo, reduzindo as dependências entre os aplicativos.
Os aplicativos por trás da interface de serviço podem ser escritos em Java, Microsoft .Net, Cobol ou qualquer outra linguagem de programação, fornecidos como aplicativos empresariais empacotados por um fornecedor (por exemplo, SAP), aplicativos SaaS (por exemplo, Salesforce CRM) ou obtidos como aplicativos de código aberto.
As interfaces de serviço são frequentemente definidas usando a Linguagem de Definição de Serviço da Web (WSDL), que é uma estrutura de marcação padrão baseada em XML (linguagem de marcação extensível). Os serviços são expostos utilizando protocolos de rede padrão — como SOAP (protocolo de acesso de objeto simples)/HTTP ou JSON/HTTP — para enviar solicitações para ler ou alterar dados.
A governança de serviços controla o ciclo de vida do desenvolvimento e, no estágio apropriado, os serviços são publicados em um registro que permite aos desenvolvedores encontrá-los e reutilizá-los rapidamente para montar novos aplicativos ou processos de negócios.
Os serviços podem ser criados do zero, mas geralmente são criados expondo funções de sistemas de registro legados.
As empresas podem optar por fornecer uma interface de serviço baseada em padrões na frente dos sistemas legados, usar o ESB para se conectar diretamente ao sistema legado por meio de um adaptador ou conector, ou o aplicativo pode fornecer sua própria API. Em qualquer caso, o barramento de serviço empresarial protege o novo aplicativo da interface legada. Um ESB realiza a transformação e o roteamento necessários para se conectar ao serviço do sistema legado.
É possível implementar um SOA sem uma arquitetura ESB, mas isso seria equivalente a apenas ter um monte de serviços. Cada proprietário de aplicativo precisaria se conectar diretamente a qualquer serviço necessário e realizar as transformações de dados necessárias para atender a cada uma das interfaces de serviço. Isso dá muito trabalho (mesmo que as interfaces sejam reutilizáveis) e cria desafios significativos de manutenção no futuro, pois cada conexão é ponto a ponto.