Managed Services Engine – MSE - Um ESB gratúito da Microsoft

Olá pessoal.

Neste post vou apresentar o Managed Services Engine, um Service Bus Open Source e gratuito criado pela Microsoft.

O MSE surgiu da necessidade de uma série de clientes da consulturia da Microsoft em Virtualizar, Versionar e Gerenciar seus serviços já existentes.

O MSE ajuda as empresas a:

  • Reduzir o tempo de desenvolvimento e publicação de Serviços dimunuindo o time-to-market de novos Serviços.
  • Versionar Serviços.
  • Gerenciar politicas de acesso e autorização a Serviços.
  • Disponibilizar sistemas legados como Serviços.
  • Criar uma Governança de Serviços

Arquitetura Lógica do MSE

Um ponto que deve ficar claro é que o MSE não hospeda os serviços, ele simplesmente é um um “roteador” para os serviços físicos. Porém, ele permite que uma série de atividades sejam realizadas antes da chamada ao serviço físico. Sua arquitetura é composta de três componentes lógicos:

Messager: É a primeira camada da arquitetura do MSE. Ele é responsável por expor os endpoints, receber as chamadas dos serviços e executar todas as tarefas no nível da mensagem como transformação de formatos.

Broker: Segunda camada da arquitetura do MSE responsável por controlar as funcionalidades do serviço, validação das chamadas, contexto dos serviços e aplicar as politicas necessárias a chamada do serviço.

Dispatcher:   A camada “mais baixa” do MSE. Ela é responsável por identificar através do formato da mensagem recebida, qual é o serviço físico que deve ser chamado. Com isto, em função da mensagem recebida, um versão específica de um serviço será chamada.

image

Arquitetura Física do MSE

O MSE foi construído utilizando .Net Framework 3.5 e WCF. Por ser um produto Open Source, ele vem com o código fonte. O único componente que não vem com o código fonte é o Runtime do MSE. Isto se deve ao fato de que o Runtime do MSE é construído em cima de componentes do Biztalk, e por uma questão de licenciamento, não foi liberado seu fonte.

Service Catalog: Armazena os metadados dos serviços virtualizados. Fisicamente estas imageinformações são armazenadas em um banco de dados SQL Server e são expostos para os outros componentes do MSE via WCF.

MSE Runtime: É o componente chave da solução. É ele que possúi a lógica para virtualizar os serviços físicos.

MSE Model Viewer: É uma interface gráfica feita em Windows Presentation Foundation – WPF – que permite gerenciar toda a infra-estrutura de serviços expostas no MSE.

 

O MSE é uma solução muito robusta e escalável. Podemos ir de um modelo de topologia Single Server:

image

Até uma topologia complexa com vários nós de componentes Messengers, Balanceamento de carga e alta disponibilidade.

image

Futuramente pretendo falar um pouco mais detalhadamente sobre a parte de escalabilidade do MSE.

FAQ:

E o AppFabric (“Dublin”), como fica?

Bom, você deve estar se perguntando aonde o “Dublin” ou o AppFabric se encaixa cenário, não é? Pois bem. O AppFabric (“Dublin”) é um host de serviços para WCF e WF, ele NÃO versiona nem virtualiza os serviços hospedados. O MSE serve para cubrir esta falta no AppFabric. Eles não são concorrentes, são complementares.

Posso Versionar / Virtualizar serviços da Núvem, .Net Services?

Sim. Você pode utilizar o MSE para virtualizar serviços em geral como abaixo:

image

Posso Versionar / Virtualizar serviços Java?

Sim. Como dito, o MSE não hospeda o serviço, ele é ESB, e por isso permite que serviços padrão WS-* sejam publicados nele.

A Microsoft dá suporte ao MSE?

Sim. Através do contrato Premier da Microsoft é possível ter suporte ao produto.

A Microsoft pretende continuar evoluíndo o produto:

Sim. O MSE possúi duas formas de utilização. Você pode baixar e instalar / configurar o produto por conta própria ou contratar a Microsoft Consulting Services para fazer isto para você. Com isto, existe um plano de evolução do produto que hoje se encontra na versão 7.5. Para mais informações: Microsoft Services – SOI

O MSE é uma solução escalável?

Sim. Como mostrado na arquitetura física podemos ir de um simples servidor até uma topologia complexa com balanceamento de carga, cluster geográfico e alta disponibilidade.

Para conhecer mais: https://www.codeplex.com/servicesengine

Abraços,

Daibert