Saturday, January 26, 2008

O que é ESB?

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.

Hoje, a pesquisa de "ESB Definition"no Google irá apresenta mais de 46,000 links. Apresento aqui apenas 05 (cinco) que, na minha opinião, dão a idéia correta do que seja um ESB.

A primeira definição, claro, vem da Wikipedia.

Um ESB geralmente provê uma camada de abstração acima de um sistema de mensageria corporativa, que permite aos arquitetos de integração explorar todas as possibilidades e benefícios deste messaging system sem a necessidade de escrever código.

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 implmentar esta arquitetura. ESB não é, necessariamente, baseada apenas em web-services.



David Chappell é simplemente o "guru" e um dos "inventores" do conceito de ESB. Ele é o autor do livro "Enterprise Service Bus" em 2004 (foto ao lado). Atualmente é o líder de SOA na Oracle. De acordo com ele,

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.

IBM SOA Foundation - Architecture Overview, whiter paper. Este é um dos melhores papers sobre o básico de SOA.

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.

Eric Bruno, escreveu um excelente artigo sobre ESB. Já postei aqui no blog. Reproduzo abaixo a tradução livre do trecho em que ele define o ESB.

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:

  • 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
  • E por fim, mas não menos importante, utiliza protocolos padrão e tem integração com "legados"


Cerveja ESB? Sim, ela existe. É uma cerveja tipo Ale da Redhook. Ganhou a medalha de ouro em 2006 no "North American Beers Award".

Não deixa de ser uma excelente "ferramenta" de integração, correto?

Cheers!

No comments: