Azure Services Platform : um pouco mais sobre o Windows Azure.

image

Olá pessoal, tudo certo?

Seguindo nossa discussão sobre Windows Azure, vamos focar alguns aspectos da plataforma e da infra-estrutura por de trás da nuvem.

Uma nota: o pessoal andou perguntando qual a relação entre soluções corporativas na nuvem e a escolha entre Palmeiras e Corinthians , proposta pelo Otávio em sua primeira aplicação na nuvem. Ehehe!! :) Confira aqui!

Um dos pontos interessantes dessa aplicação é que ela trabalha o conceito de filas (queues) e processos (workers) em cenários de alta escalabilidade, muito importante para nossas futuras aplicações alá "Stratus Cirrus" .

O desenho a seguir representa o conceito implementado pela aplicação, onde temos duas threads que consomem um mesmo contador de votos.

image

Veja que usando a fila (Queue), garantimos que nosso contator (Worker ) nunca perca nenhum voto durante a contagem, mesmo em cenários de alta demanda. Novas requisições de contagem apenas aguardam na fila o momento de serem consumidas. Ou seja, o uso de filas torna-se muito interessante para soluções com alto volume de mensagens, como é o caso em cloud computing.

Relembrando, oimage Windows Azure é baseado na tecnologia de virtualização Hyper-V da Microsoft, com diversas melhorias adicionadas especificamente para os cenários da nuvem. De fato, pense num conjunto de servidores de alta performance presentes em dezenas de datacenters da Microsoft pelo mundo.

São muitos servidores, muito poder de processamento e muito espaço em disco para armazenamento de dados e software. Alguns datacenters de última geração já trabalham com containers contendo algumas centenas de servidores disponíveis na mesma caixa. Para coordenar esses recursos e criar mecanismos dinâmicos de provisionamento das capacidades de computação, a infra-estrutura do Azure implementa alguns serviços básicos que tornam a mágica possível.

Um desses conceitos é o Fabric Controller.

image

Podemos definir o Fabric Controller como um gerenciador de recursos fundamental do Windows Azure. Se o Windows Azure é um sistema operacional para o cloud computing, podemos dizer que o Fabric é seu HAL - Hardware Abstraction Layer.

A partir de requisições disparadas para as aplicações no Azure, o Fabric Controller é responsável pela seleção de máquinas virtuais e poder de processamento necessário para o atendimento dessas requisições. Essa seleção é feita de acordo com as especificações presentes na configuração do ambiente contratado no Azure, isto é, cada aplicação possui um arquivo de configuração que determina os recursos para front-end e back-end, previstos para o atendimento da demanda na aplicação. Vimos isso no último post, quando subimos a configuração da aplicação "Hello Cloud", durante o deploy.

image

Essa configuração de ambiente é feita através de arquivos como o ServiceConfiguration.cscfg, presente em uma aplicação do tipo Web Cloud Service, por exemplo, veja:

    1: <?xml version="1.0"?>
    2: <ServiceConfiguration serviceName="HelloCloud" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
    3:   <Role name="WebRole">
    4:     <Instances count="1" />
    5:     <ConfigurationSettings>
    6:       <Setting name="GreetingString" value="Hello Windows Azure" />
    7:     </ConfigurationSettings>
    8:   </Role>
    9:   <Role name="Worker">
   10:     <Instances count="1" />
   11:     <ConfigurationSettings />
   12:   </Role>
   13: </ServiceConfiguration>

Como caraterística da computação elástica, essa configuração pode ser alterada de forma dinâmica, conforme as necessidades da aplicação. Assim, maior ou menor provisionamento de capacidades de computação pode ser contratado e pago de acordo com o uso, fornecendo uma maior economia de escala.

Outro assunto importante é o Windows Azure Storage. O Azure Storage implementa uma área de persistência de dados que é durável, escalável (com alta capacidade e grandes taxas de transfências), de alta disponibilidade, seguro e projetado para o cenário de cloud computing de alto desempenho.

O Azure Storage oferece um conjunto rico de abstrações de dados para a nuvem. Ele já apresenta 3 grandes tipos de dados no CTP 1 do Windows Azure:
- Para a comunicação entre serviços: queues, locks, ...
- Para grandes itens de dados: blobs, blocks, ...
- Para o controle de estados de serviços: tables, caches, ...

Para o tratamento desses tipos, o desenvolvedor utiliza uma interface de programação conhecida, baseada no ADO.NET Data Services e REST. Vamos falar mais desses assuntos no futuro.

De fato, pensando sobre o Windows Azure e o modelo de programação sobre a nuvem, podemos levantar algumas questões importantes:

  • Qual é a arquitetura desse sistema operacional, para o gerenciamento de recursos de hardware disponíveis em sua infra-estrutura?
  • Qual é o modelo de programação disponível pela plataforma, assim como seu modelo de capacidades?
  • Qual é o modelo de segurança, isolamento, recuperação, depuração e deployment previsto para a plataforma?
  • Como integro o ambiente de desenvolvimento local com o ambiente de desenvolvimento sobre o Azure? É possível trabalhar de forma mista?
  • Quais são os tipos de dados e métodos de acesso disponíveis na plataforma de desenvolvimento?
  • Quais os serviços nativos presentes na plataforma e como podemos extender ou consumir esses recursos?

Essas são as questões que nós arquitetos precisamos revisar para todo novo cenário de plataforma de desenvolvimento, seja no enterprise ou na cloud. Um dos objetivos dessa série é endereçar as questões acima.

Se vocês tiverem outras perguntas para adionar, por favor, fiquem a vontade para comentar aqui no blog. A idéia é discutir essas várias questões, enquanto acompanhamos as novas versões de CTP do Azure.

Por enquanto é só! Até o próximo post :)

Waldemir.