Primeiro, ESB é o acrônimo de Enterprise Service Bus (Barramento de Serviços Corporativos, em uma tradução livre). É um componente fundamenta na arquitetura orientada a serviços (SOA) e, por este motivo, é importante conhecermos qual o propósito e qual seu papel no desenho de sua solução SOA.

A primeira definição, claro, vem da Wikipedia.
- Ter um insfraestrutura de mensageria robusto e confiável
- Possibilitar desenvolvimento de sistemas baseados em em arquitetura orientada a serviços (parece óbvio, mas não é; pergunte aos seus fornecedores como o ESB deles permite este tipo de implementação)
- É fortemente baseado em XML
- Suporta padrões de Web Service (e.g. SOAP)
- É independente de plataforma (muito, muito, muito importante)
- Suporta transações e tem features de segurança
Ao contrário da abordagem tradicional da Enterprise Application Integration (EAI), que utiliza a arquitetura monolítica de hub and spoke, os fundamentos do ESB são baseados na decomposição de processos de negócio executando de forma “harmoniosa”.
ESB não implmenta service-oriented architecture (SOA) porém oferece as funcionalidades necessárias para implementar esta arquitetura. ESB não é, necessariamente, baseada apenas em web-services.
Um ESB é “backbone altamente distribuido” no qual a arquitetura orientada a serviços (SOA) é contruida.
A definição de ESB inclui os seguintes pontos:
* Uma arquitetura de serviços distribuidos, que inclui um modelo de container leve para “armazenar” componentes de integração como serviços remotos
* Um backbone de mensageria corporativa que oferece entrega confiável de mensagens entre aplicações e serviços
* Transformação de dados (XML)
* Orquestração de serviços e roteamento inteligente de mensagens baseada em seu contexto
* Framework de segurança flexível
* Infraestrutura gerenciável que permite a configuração, deployment, monitoração e gerência dos serviços remotos.
O Barramento de Serviços Corporativos (ESB) é parte da arquitetura lógica de SOA. Sua presença na arquitetura deve ser transparente para os serviços de suas aplicações SOA. Entretanto, a existência de um ESB é fundamental para simplificar o esforço de “invocar” os serviços. Detalhes como localização e qual o caminho que a requisição de um serviço deve fazer na rede são de responsabilidade do ESB e não precisam mais fazer parte do código do serviço.
Um Enterprise Service Bus é um framework que possui várias funcionalidades: escolha e use. Por exemplo, você pode utilizar apenas parte das features e ignorar as demais que não fazem sentido para a solução proposta pela arquitetura que você projetou. De qualquer forma, um “bom ESB” deve ter, pelo menos, estas características: