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.
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 informaçõ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:
Até uma topologia complexa com vários nós de componentes Messengers, Balanceamento de carga e alta disponibilidade.
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:
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