Apresentando o Windows Server AppFabric

ee695849.WS-AppFab_h_rgb(en-us,MSDN.10)_3c3b20ac-f906-42ee-b1d9-b44d1d720682

Introdução

O grande desafio dos desenvolvedores que criam aplicações distribuídas, sempre foi lidar com problemas relacionados a infra – estrutura da aplicação e dentre estes problemas estão:

  • · Protocolos de transporte;
  • · Gerenciamento de Transações;
  • · Concorrência;
  • · Performance;
  • · Escalabilidade;

Tais questões foram solucionadas quando a Microsoft nos apresentou o WCF – Windows Communication Foundation como uma plataforma unificada para a construção de serviços distribuídos permitindo que, os desenvolvedores focassem diretamente nas regras de negócios que suas aplicações deveriam implementar não perdendo tempo com a criação de códigos que gerenciassem a infra – estrutura de aplicações e serviços. Além de uma plataforma unificada, podemos escolher entre diversas formas de hosting de seviços como:

  • · IIS6(Windows Server 2003), IIS7 (Windows Server 2008/R2) – Webservices para serviços que serão consumidos pela internet (protocolo HTTP) ou que precisam ser interoperáveis com outras plataformas.
  • · WAS – Windows Activation Service (W2K8) – Serviços expostos para consumo em uma intranet (TCP/IP). O WAS funciona tecnicamente como uma estensão do IIS 7.0.
  • · Serviço “Doméstico” (Windows Service) – Em cenários que o desenvolvedor não tem um controle sobre o ambiente em que o serviço será hospedado criando assim, um serviço Windows que faça o hosting do serviço desenvolvido.
  • · Na própria Aplicação (Managed Application) – Em cenários que o desenvolvedor não tem um controle sobre o ambiente em que o serviço será hospedado criando assim, uma aplicação para fazer este trabalho.

Com a infra-estrutura e hospedagem de serviços estáveis, os desenvolvedores ainda enfrentam questões como implantação, gerenciamento e monitoramento de serviços e de processos de negócios (Workflows) o que pode ser um processo trabalhoso que exige que estes desenvolvedores dediquem tempo criando soluções de implantação personalizadas para suas apliações. Mesmo após a implantação, os desenvolvedores frequentemente precisam gerenciar o aplicativo fazendo modificações manuais nos arquivos de configuração. O AppFabric ajuda a reduzir este trabalho com a simplificação da implantação do serviço, fornecendo uma solução de monitoramento e um conjunto de ferramentas de gerenciamento, que podem ser acessadas diretamente pela console de gerenciamento do IIS ou por script, usando os módulos AppFabric para Windows PowerShell.

Também temos que levar em consideração, questões relacionadas a performance destas aplicações, sejam elas serviços WCF ou mesmo aplicações ASP.NET por exemplo. Os Serviços de Cache do Windows Server AppFabric melhora o desempenho e escalabilidade de aplicações e serviços .NET que possuem uma grande quantidade de dados e o acesso a estes dados é intenso. Os Serviços de Cache do Windows Server AppFabric fornecem um cache distribuído entre vários servidores e com alta disponibilidade que pode ser facilmente escalável de forma flexível e independente de seus aplicativos ou camadas de dados.

O Windows Server AppFabric estende o Windows Server para fornecer recursos de hospedagem, gerenciamento e armazenamento em cache aperfeiçoados tanto para aplicações Web, quanto para serviços. Ele adiciona extensões de gerenciamento ao IIS, Windows Process Activation Service (WAS) e o NET Framework 4 e contém ferramentas de Hospedagem e Administração de Serviços que facilitam a implantação, configuração e o gerenciamento dos serviços baseados em Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF).

A Figura 1 apresenta a arquitetura do Windows Server AppFabric:

clip_image002

Figura 1 – Arquitetura do Windows Server AppFabric

Fonte: http://msdn.microsoft.com/en-us/library/ee677255.aspx

Os recursos de armazenamento em cache do AppFabric adicionam um cache distribuído de objetos em memória para o Windows Server que torna mais fácil aumentar o desempenho de aplicativos .NET, especialmente os aplicativos ASP.NET.

O objetivo deste artigo é proporcionar ao leitor, uma introdução aos seviços de Hospedagem e Cache do Windows Server AppFabric como uma forma de de orienta – los em suas decisões de arquitetura para utiliação destes recursos em suas aplicações e serviços.

Descrição do Case (Obrigatório)

Nessa seção deve ser apresentado o cenário da aplicação prática da inovação.

1 – Serviço de Cache do Windows Server AppFabric

Uma grande preocupação para o desenvolvimento de aplicações Web ou que necessitem de um grande volume de acessos é a performance desta aplicação. Quando estamos falando de um e-Commerce ou mesmo um e-Gov, temos milhões de pessoas acessando estas aplicações simultaneamente e como garantir que o acesso aos dados desta aplicação será feito de forma rápido e que consiga atender aos usuários de forma satisfatória?. Na verdade, temos algumas maneiras de resolver estes problemas de performance dos quais já fazemos hoje como:

Escalonamento vertical – Neste modelo, identificamos o gargalo da aplicação que pode ser tanto na camada de apresentação (Servidor Web), quanto na camada de aplicação (Servidor de Aplicação e de Serviços) e adicionamos recursos como memória, disco, processadores para que consigamos melhorar a performance de acesso a nossa aplicação. Acontece que, se tivermos um único servidor de banco de dados, o gargalo poderá ser passado para este servidor o que acarretaria em um escalonamento vertical também do servidor de banco de dados. O grande problema deste modelo está na limitação (vai chegar um momento em que não conseguirá mais evoluir verticalmente devido a limitações de hardware) e você terá que partir para a segunda forma de escalonamento que é o escalonamento Horizontal.

Escalonamento Horizontal – Neste modelo, você começa a escalonar suas camadas de aplicação (Servidor de Aplicação e De Serviços) e front end (Servidor Web) adicionando servidores a um cluster de servidores para que você possa dividir o processamento e realizar um balanceamento de carga. Esta solução funciona bem, porém pode adicionar altíssimos custos de infra – estrutura e gerenciamento para manter este ambiente.

Com o Windows Server AppFabric, você pode utilizar a capacidade de memória de vários servidores em um cluster de cache unificado trazendo alta disponibilidade armazenando cópia dos dados em hosts de cache separados. Como os dados estão em servidores separados, em caso de falha os dados poderão ser recuperados de outro servidor mantendo a disponibilidade e alta performance.

clip_image003

Figura 2 – Diagrama da arquitetura física do Windows Server AppFabric cache

Fonte: http://msdn.microsoft.com/en-us/library/ee790954.aspx

O Windows Server AppFabric também funciona integrado com o ASP.NET para armazenamento de estado de sessão em cache permitindo assim, melhora no desempenho e escalabilidade destas aplicações.

1.1 – Funcionamento do AppFabric Caching Services

clip_image005

Figura 3 – Funcionamento do AppFAbric Caching Services

O componente principal do Windows Server AppFabric é o Cache Client e ele é o responsável por acessar o Cluster de Cache e cada servidor roda uma instancia do AppFabric Caching Services e cada um mantém dados cacheados.

O AppFabric Caching Services funciona da seguinte maneira:

Sua aplicação quando solicita dados de uma forma de armazenamento qualquer, como um banco de dados, adiciona explicitamente atraves das API’s do AppFabric Caching Services esta informação ao cache com um nome exclusivo (isto funciona parecido com a forma de cache do ASP.NET) .

Para o cliente, todos os servidores de cache em cluster aparecem como um único armazenamento lógico o cliente não sabe nem se importa qual servidor físico está armazenando os dados em cache. Se ele optar, o cliente também pode armazenar o item de dados em seu próprio cache local.

Quando o cliente precisa acessar o mesmo item de dados novamente, ele pede para o client usando o nome do item (informado anteriormente). Esta consulta primeiro verifica o cache local (se um estiver sendo usado). Se o item for encontrado, o cliente usa esse valor em cache. Se o item de dados não estiver no cache local, a consulta é enviada para o cluster de cache.

Se o item for encontrado, o cliente usa o valor retornado do cluster. Tudo isso é transparente para o cliente e ele apenas solicita o item, e o AppFabric Caching Services cuida do resto.

Se o item não for encontrado no cache local ou o cluster de cache, o cliente precisa procurar as informações em outro lugar, como no banco de dados por exemplo. Com este comportamento, sua aplicação tem uma melhora considerável na performance pois não faz acesso a mecanismos de armazenamentos caros como um banco de dados para obter a informação, reduzindo este acesso apenas a casos em que realmente a informação não está em cache. A aplicação poderá atualizar a versão cacheada ou simplesmente excluí – la explicitamente via código ou através de um timeout para expiração da informação em cache.

Vários clientes de cache podem compartilhar o mesmo cluster de cache e isto é possível pois você pode ter uma camada de aplicação (Servidor de Aplicação e Serviços) escalonada horizontalmente através de um cluster e cada servidor deste cluster precisa acessar o cache.

Agora coma s facilidades para gerenciamento de Cache com o AppFabric Caching Services, seu trabalho está voltado em como organizar a arquitetura de sua aplicação para trabalhar bem utilizando estes recursos. É sempre bom ter em mente que não são todos os dados que devem estar em cache, comece por aqueles que são atualizados com pouquíssima frequência para que sempre estejam disponíveis sem uma consulta no banco por exemplo. Com isto, você terá um ganho sensível no desempenho de sua aplicação se estes dados são consumidos várias vezes durante a utilização de sua aplicação.

2 – AppFabric Hosting Services

Se sua aplicação expõe funcionalidades através de serviços você provavelmente já desenvolveu um serviço WCF para suprir esta necessidade arquitetural. Conforme mencionado anteriormente neste artigo, o WCF nos dá bastante flexibilidade e liberdade de escolha quanto ao ambiente em que vamos hospedar nossos serviços. Iniciamos com a criação de um serviço WCF expondo nossos EndPoints para que aplicações clientes se conectem a estes serviços. Para expormos nossos EndPoints, configurarmos o nosso ambiente de host para que eles fiquem visíveis e possam ser conectados. Este conceito de EndPoint já está bastante difundido e se você criou um serviço WCF, passou por este processo.

clip_image007

Figura 4 – EndPoint de Serviço WCF

Também é bastante comum identificarmos que um determinado processo de negócio fica melhor implementado via um Workflow no WF e realizarmos a composição de um serviço expondo este processo de negócio (Workflow) como um serviço WCF.

Com todos os benefícios oferecidos pela utilização de hospedagem IIS/WAS, não temos um ambiente de fácil configuração e monitoramento para nossos serviços exigindo demasiado desenvolvimento para alcançarmos nossos objetivos.

clip_image009

Figura 5 – Workflow WF exposto com um serviço WCF

A função do AppFabric Hosting Services é justamente esta, oferecer um ambiente de hospedagem em que eu possa manter minha aplicação baseada em serviços WCF ou WF de forma fácil e rápida, podendo monitorar a execução e rastrear possíveis falhas em meus serviços e workflows tomando a ação necessária no tempo necessário para estas correções. Os Serviços de Hospedagem estendem os recursos de hospedagem do WAS fornecendo uma configuração padrão do ambiente de hospedagem do WAS.

Com o AppFabric Hosting Services eu posso gerenciar instâncias de workflows mais facilmente, controlando e monitorando estas instâncias dentro de um dashboard padrão. Quando preciso configurar tanto hospedagem de Workflows WF quanto serviços WCF no WAS de forma padronizada, eu posso por exemplo configurar os Endpoints dos meus serviços WCF através da interface do AppFabric Hosting Services.

clip_image011

Figura 6 – Dashboard Windows Server AppFabric

clip_image013

Figura 7 – Atalhos para acesso ao Dashboard do Windows Server AppFabric

Como pode ser observado na imagem abaixo, o AppFabric Hosting Services é construído encima de toda a estrutura pronta do IIS onde ele roda nomesmo Worker Process não necessitando a criação de um novo processo para execução do AppFabric Hosting Services. Com o aproveitamento da estrutura do IIS, ganhamos também no gerenciamento destes serviços onde podemos contar com o painel administrativo do IIS para executar ações como Iniciar e Parar serviços, examinar EndPoints (para manutenção como mudança de endereços físicos), suspender ou retornar uma determinada instância de um processo de negócio do WF tornando mais fácil a gestão e monitoramento de serviços hospedados no AppFabric Hosting Services

clip_image015

Figura 8 – AppFabric Hosting Services

Para Saber Mais

Pra saber mais sobre o Windows Server AppFabric, acesse agora o Dev Center do produto localizado em – http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx

Roadmap (Obrigatório)

Windows Server AppFabric já se encontra disponível para download e você poderá baixa – lo no link abaixo e instalar em ambientes de desenvolvimento, teste e produção.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=467e5aa5-c25b-4c80-a6d2-9f8fb0f337d2

Considerações Finais (Obrigatório)

Windows Server AppFabric é um conjunto de tecnologias integradas que torna mais fácil construir, dimensionar e gerenciar aplicações Web e aplicações compostas que são executados no IIS.

O Windows Server AppFabric veio para ajudar tanto desenvolvedores de serviços WCF e processos de negócios WF que necessitam de um ambiente de hospedagem robusto, de fácil configuração, manutenção, gerenciamento e monitoramento dos seus serviços quanto desenvolvedores de aplicações que buscam uma melhoria na escalabilidade de suas aplicações através da utilização dos recursos do AppFabric Caching Services.

Com certeza o Windows Server AppFabric deverá fazer parte da arquitetura de suas aplicações daqui em diante.

Referências

Para maiores informações sobre o Windows Server AppFabric segue alguns links que utilizei como estudo e pesquisa para o artigo.

Blog Waldemir Camibiucci –Microsoft Brasil

Ref.: http://blogs.msdn.com/b/wcamb/archive/tags/appfabric/

Architectural Overview
Ref.: http://msdn.microsoft.com/en-us/library/ee677374.aspx

Cache Concepts (Velocity)
Ref.: http://msdn.microsoft.com/en-us/library/ee790849.aspx

Persistence Concepts
Ref.: http://msdn.microsoft.com/en-us/library/ee677272.aspx

Hosting Concepts
Ref.: http://msdn.microsoft.com/en-us/library/ee677371.aspx

Espero que tenham gostado pessoal!

Um forte abraço.

Evilázaro Alves
Microsoft MVP – Connected System Developer

Deixe uma resposta

%d blogueiros gostam disto: