Está en la página 1de 28

APRESENTANDO O WINDOWS AZURE

DAVID CHAPPELL OUTUBRO DE 2010

PATROCINADO PELA MICROSOFT CORPORATION

SUMRIO
Viso geral do Windows Azure ............................................................................................................ 2 Computao ............................................................................................................................................ 4 Armazenamento ...................................................................................................................................... 6 Controle da malha ................................................................................................................................... 7 Content Delivery Network ....................................................................................................................... 9 Conexo ................................................................................................................................................. 10 Usando cenrios do Windows Azure ................................................................................................. 12 Criando um aplicativo Web escalonvel ................................................................................................ 12 Criando um aplicativo com processamento paralelo ............................................................................ 13 Criando um aplicativo Web escalonvel com processamento em segundo plano ............................... 14 Criando um aplicativo Web com dados relacionais ............................................................................... 15 Migrao de um Aplicativo Web In Loco com Dados Relacionais ......................................................... 17 Usando o armazenamento na nuvem a partir de um aplicativo local ou hospedado ........................... 18 Entendendo o Windows Azure: uma viso mais detalhada ................................................................ 18 Criao de Aplicativos do Windows Azure ............................................................................................ 19 Examinando o servio de computao .................................................................................................. 20 Examinando o servio de armazenamento ........................................................................................... 20 Blobs.................................................................................................................................................. 21 Tabelas .............................................................................................................................................. 22 Filas ................................................................................................................................................... 23 Examinando o Controlador da Malha .................................................................................................... 25 O futuro ........................................................................................................................................... 26 Concluses ....................................................................................................................................... 27 Leitura adicional ............................................................................................................................... 27 Sobre o autor.................................................................................................................................... 27

VISO GERAL DO WINDOWS AZURE


A computao em nuvem chegou. A execuo de aplicativos e o armazenamento de dados em mquinas em um data center acessvel via Internet podem oferecer uma srie de vantagens. Mas onde quer que sejam executados, esses aplicativos so criados em algum tipo de plataforma. Para aplicativos locais, como aqueles executados dentro do data center de uma organizao, essa plataforma geralmente inclui um sistema operacional, alguma forma de armazenar dados e talvez algo mais. Aplicativos em execuo na nuvem tambm precisam de uma base semelhante. O objetivo do Windows Azure oferecer essa base. O Windows Azure parte de algo maior, a plataforma Windows Azure, e funciona como uma base para a execuo de aplicativos Windows e armazenamento de dados na nuvem. A figura 1 ilustra essa ideia.

Negcios

Consumidores

Internet

Aplicativos

Dados

Windows Azure

Data Centers da Microsoft


Figura 1: os aplicativos do Windows Azure so executados nos data centers da Microsoft e so acessados pela Internet. Em vez de fornecer software que os clientes da Microsoft possam instalar e executar por conta prpria em seus computadores, hoje o Windows Azure um servio: os clientes fazem uso dele para executar aplicativos e armazenar dados em mquinas acessveis pela Internet e que pertencem Microsoft. Esses aplicativos podem oferecer servios para empresas, para os consumidores ou para ambos. Veja alguns exemplos dos tipos de aplicativos que podem ser criados com o Windows Azure:

Um fornecedor de software independente (ISV) pode criar um aplicativo voltado para usurios corporativos, abordagem muitas vezes rotulada como Software como um Servio (SaaS). O Windows Azure foi projetado em parte para suportar os prprios aplicativos SaaS da Microsoft, ento os ISVs tambm podem us-lo como base para uma srie de softwares na nuvem de carter empresarial. Um ISV pode criar um aplicativo SaaS voltado para os consumidores em vez de empresas. O Windows Azure foi feito para suportar software muito escalonvel, e com isso uma empresa que pretenda atender a um amplo mercado de consumidores pode escolh-lo como plataforma para um novo aplicativo. As empresas podem usar o Windows Azure para criar e executar aplicativos usados por seus prprios funcionrios. Ainda que essa situao dificilmente v exigir a enorme escalabilidade de um aplicativo voltado para os consumidores, a confiabilidade e a capacidade de gerenciamento oferecidas pelo Windows Azure continuam fazendo dele uma oferta atraente. Para suportar dados e aplicativos na nuvem, o Windows Azure possui cinco componentes, como mostra a Figura 2.

Aplicativos e Dados CDN Conectar Computao Armazenamento Malha Controlador

Windows Azure
Figura 2: o Windows Azure tem cinco partes principais: Computao, Armazenamento, Controlador da Malha, CDN e Conexo. Esses componentes so: Computao: executar aplicativos na nuvem Esses aplicativos enxergam um ambiente do Windows Server, apesar de o modelo de programao do Windows Azure no ser exatamente o mesmo que o modelo do Windows Server in loco. Armazenamento: armazena dados binrios e estruturados na nuvem. Controlador da malha: implanta, gerencia e monitora aplicativos. O controlador da malha tambm lida com as atualizaes no software do sistema por toda a plataforma. Content Delivery Network (CDN): acelera o acesso global a dados binrios no armazenamento do Windows Azure ao manter cpias em cache daqueles dados no mundo inteiro.

Conexo: permite a criao de conexes no nvel de IP entre computadores in loco e aplicativos Windows Azure. O restante desta seo apresenta cada uma dessas tecnologias.

COMPUTAO
O servio de computao do Windows Azure pode executar muitos tipos diferentes de aplicativos. Independente do que fizer, um aplicativo deve ser implementado como uma ou mais funes. Ento, o Windows Azure geralmente executa mltiplas instncias de cada funo, usando balanceamento embutido para distribuir as solicitaes entre elas. A figura 3 ilustra isso.

Instncias de Web Role


IIS

Instncias de Worker Role

Instncias de funo da VM

Balanceador de carga

HTTP/HTTPS, TCP
Aplicativos e Dados CDN Conectar Computao Armazenamento Malha Controlador

Mquinas Virtuais

Figura 3: um aplicativo Windows Azure em execuo consiste em qualquer combinao de instncias da Web Role, instncias da Worker Role e instncias da funo VM. Na verso atual do Windows Azure, os desenvolvedores podem escolher entre trs tipos de funo: Web Roles, cuja principal finalidade facilitar a criao de aplicativos baseados na Web. Cada instncia da Web Role traz o Internet Information Services (IIS) 7 pr-configurado, o que simplifica a criao de aplicativos usando ASP.NET, Windows Communication Foundation (WCF) ou outra tecnologia Web. Os desenvolvedores tambm podem criar aplicativos em cdigo nativo o uso do .NET Framework no obrigatrio. Isso significa que eles tambm podem instalar e executar outras tecnologias, no pertencentes Microsoft, incluindo PHP e Java.

As Worker Roles, projetadas para executar uma srie de cdigos baseados no Windows. A maior diferena entre uma Web Role e uma Worker Role que esta no traz o IIS configurado, ento o cdigo que ela executa no hospedado pelo IIS. Uma Worker Role pode, por exemplo, executar uma simulao, manipular um processamento de vdeo ou fazer praticamente qualquer coisa. comum um aplicativo interagir com usurios por meio de uma Web Role e ento entregar as tarefas para que sejam processadas por uma Worker Role. Mais uma vez, o desenvolvedor livre para usar o .NET Framework ou outro software que seja executado no Windows, incluindo tecnologias no pertencentes Microsoft. Funes VM, cada uma delas executa uma imagem do Windows Server fornecida pelo usurio. Entre outras coisas, uma funo VM s vezes pode ser til na migrao de um aplicativo in loco do Windows Server para o Windows Azure. Para enviar um aplicativo para o Windows Azure, um desenvolvedor pode usar o portal do Windows Azure. Junto com o aplicativo so enviadas informaes de configurao que informam plataforma quantas instncias de cada funo devem ser executadas. O controlador da malha do Windows Azure cria ento uma mquina virtual (VM) para cada instncia, executando o cdigo para a funo apropriada naquela VM. Como mostra a Figura 3, as solicitaes de usurios do aplicativo podem ser feitas usando protocolos como HTTP, HTTPS e TCP. Independente de como chegarem, as solicitaes so balanceadas entre todas as instncias de uma funo. O balanceador de carga no permite a criao de uma afinidade com instncia especfica da funo - no h suporte a sesses aderentes - e por isso no possvel garantir que mltiplas solicitaes de um mesmo usurio sero enviadas para a mesma instncia de uma funo. Isso implica que as instncias de funes do Windows Azure no mantm seu estado entre uma solicitao e outra. Em vez disso, qualquer estado especfico do cliente deve ser gravado no armazenamento do Windows Azure, armazenado no SQL Azure (outro componente da plataforma Windows Azure) ou mantido externamente de alguma outra maneira. Um desenvolvedor pode usar qualquer combinao de instncias de Web Role, instncias de Worker Role e instncias de funo VM para criar um aplicativo do Windows Azure. Se a carga do aplicativo aumentar, ele pode usar o portal do Windows Azure para solicitar mais instncias para qualquer uma das funes do seu aplicativo. Se a carga diminuir, ele pode reduzir a quantidade de instncias em execuo. O Windows Azure tambm expe uma API que permite realizar tudo isso de forma programtica mudando a quantidade de instncias em execuo que no exigem interveno manual mas a plataforma no escala automaticamente aplicativos com base em sua carga. Para criar aplicativos para o Windows Azure, o desenvolvedor usa as mesmas linguagens e ferramentas que usaria em qualquer aplicativo para o Windows. Ele pode criar uma Web Role usando ASP.NET e Visual Basic, por exemplo, ou usar WCF e C#. De forma semelhante, o desenvolvedor pode criar uma Worker Role em uma dessas linguagens .NET, trabalhar diretamente em C++ sem o .NET Framework ou usar Java. E embora o Windows Azure oferea suplementos para o Visual Studio, no necessrio usar esse ambiente de desenvolvimento. Um desenvolvedor que tenha o PHP instalado, por exemplo, pode optar por usar outra ferramenta para criar aplicativos. Para permitir o monitoramento e a depurao de aplicativos do Windows Azure, cada instncia pode chamar uma API de registro em log que escreve informaes em um log de aplicativos em comum. O desenvolvedor tambm pode configurar o sistema para coletar contadores de desempenho de um aplicativo, medir sua utilizao de CPU, armazenar despejos de memria caso ele falhe e mais. Essas

informaes so mantidas no armazenamento do Windows Azure, e o desenvolvedor pode criar cdigo para examin-las. Por exemplo, se uma Worker Role parar de responder trs vezes em uma hora, um cdigo personalizado pode enviar um email para o administrador do aplicativo. A capacidade de executar cdigo parte fundamental de uma plataforma na nuvem, mas no o suficiente. Aplicativos tambm precisam de armazenamento persistente. Atender a essa necessidade o objetivo do servio de armazenamento do Windows Azure, descrito a seguir.

ARMAZENAMENTO
Os aplicativos trabalham com dados de diversas maneiras. Da mesma forma, o servio de armazenamento do Windows Azure oferece vrias opes. A figura 4 mostra as escolhas.

Blobs

Tabelas

Filas

HTTP/HTTPS, OData

Aplicativos e Dados CDN Conectar Computao Armazenamento Malha Controlador

Figura 4: o armazenamento do Windows Azure oferece blobs, tabelas e filas. A maneira mais simples de armazenar dados no armazenamento do Windows Azure com a utilizao de blobs. Um blob contm dados binrios, e como a Figura 4 sugere, h uma hierarquia simples: cada continer pode ter um ou mais blobs. Os blobs podem ser grandes - com at 1 terabyte - e ter metadados associados, como informaes sobre onde uma fotografia JPEG foi tirada, ou o nome do cantor em um arquivo MP3. Os blobs tambm fornecem armazenamento subjacente para drives do Windows Azure, um mecanismo que permite que uma instncia de funo do Windows Azure interaja com o armazenamento persistente como se fosse um sistema local de arquivos NTFS. Blobs se encaixam bem em algumas situaes, mas tm pouca estrutura para outras. Para que os aplicativos trabalhem com os dados de forma mais apurada, o armazenamento do Windows Azure oferece tabelas. No se deixe enganar pelo nome: no se tratam de tabelas relacionais. Os dados que

cada funo traz so armazenados em um grupo de entidades que contm propriedades. E em vez de usar SQL, um aplicativo pode consultar os dados de uma tabela usando as convenes definidas nos servios de dados OData. Esta abordagem permite armazenamento de escalabilidade horizontal - com dados espalhados por muitas mquinas - mais eficiente que um banco de dados relacional padro. Uma nica tabela do Windows Azure pode conter bilhes de entidades armazenando terabytes de dados. Os blobs e tabelas se concentram tanto no armazenamento quanto no acesso aos dados. A terceira opo de armazenamento do Windows Azure, as filas, tem um propsito bastante diferente. Uma das funes principais das filas a de fornecer uma maneira de instncias de Web Roles se comunicar de forma assncrona com instncias de Worker Roles. Por exemplo, um usurio pode enviar uma solicitao para a realizao de alguma tarefa computacional intensiva por meio de uma interface Web implementada por uma Web Role do Windows Azure. A instncia da Web Role que recebe a solicitao pode escrever uma mensagem em uma fila descrevendo o trabalho a ser realizado. Uma instncia de Worker Role aguardando nessa fila poder ler a mensagem e realizar a tarefa especificada. Quaisquer resultados podem ser retornados por meio de outra fila ou tratados de outra maneira. Seja como for a maneira de armazenar os dados em blobs, tabelas ou filas todas as informaes mantidas no armazenamento do Windows Azure so replicadas trs vezes. Essa replicao permite tolerncia a falhas, j que a perda de uma cpia no fatal. No entanto, o sistema oferece uma forte consistncia, e um aplicativo que leia imediatamente dados que acabou de gravar tem a garantia de obter de volta aquilo que acabou de gravar. O Windows Azure tambm mantm uma cpia de backup de todos os dados em outro data center na mesma parte do mundo. Se o data center que armazena a cpia principal no estiver disponvel ou for destrudo, o backup continua acessvel. O armazenamento do Windows Azure pode ser acessado por um aplicativo do Windows Azure, por um aplicativo local ou por um aplicativo executado em um provedor de hospedagem ou em outra plataforma na nuvem. Em todos esses casos, os trs estilos de armazenamento do Windows Azure usaro as convenes do REST para identificar e expor os dados, como sugere a figura 4. Blobs, tabelas e filas so nomeados usando URIs e acessados por meio de operaes HTTP comuns. Um cliente .NET pode usar uma biblioteca fornecida pelo Windows Azure para fazer isso, mas no uma exigncia - um aplicativo tambm pode fazer chamadas brutas HTTP. Criar um aplicativo para o Windows Azure que use blobs, tabelas e filas certamente pode ser til. Os aplicativos podem contar com um armazenamento relacional em vez de usar o SQL Azure, outro componente da plataforma Windows Azure. Aplicativos sendo executados no Windows Azure (ou em outros lugares) podem usar essa tecnologia para se familiarizar com o acesso baseado no SQL ao armazenamento relacional na nuvem.

CONTROLE DA MALHA
Todos os aplicativos do Windows Azure e todos os dados no armazenamento do Windows Azure residem em algum data center da Microsoft. No data center, o conjunto de mquinas dedicadas ao Windows Azure e o software nelas executado so gerenciados pelo controlador da malha. A figura 5 ilustra essa ideia.

Armazenamento Funo Instncias Agente da malha Agente da malha Malha Controlador

Aplicativos e Dados CDN Conectar Computao Armazenamento Malha Controlador

Figura 5: o controlador da malha interage com os aplicativos do Windows Azure por meio de um agente de malha. O controlador da malha um aplicativo distribudo que replicado entre um grupo de mquinas. Ele detm todos os recursos de seu ambiente: computadores, comutadores, balanceadores de carga e outros. Como pode se comunicar com um agente de malha em cada computador, ele tambm est ciente de todos os aplicativos do Windows Azure nessa malha ( interessante notar que o controlador de malha enxerga o armazenamento do Windows Azure como qualquer outro aplicativo, e, portanto os detalhes do gerenciamento e da replicao de dados no so visveis ao controlador). Esse amplo conhecimento permite que o controlador de malha faa vrias coisas teis. Ele monitora todos os aplicativos em execuo, por exemplo, oferecendo uma viso atualizada do que est acontecendo. Ele tambm decide onde os novos aplicativos devem ser executados, escolhendo servidores fsicos para otimizar a utilizao de hardware. Para fazer isso, o controlador de malha depende das informaes de configurao que so carregadas com cada aplicativo do Windows Azure. Esse arquivo fornece uma descrio baseada em XML do que o aplicativo precisa: quantas instncias de Web Roles, quantas instncias de Worker Roles e mais. Quando o controlador da malha implanta um novo aplicativo, ele usa este arquivo de configurao para determinar quantas VMs devem ser criadas. Depois de criar essas VMs, o controlador de malha monitora cada um deles. Se um aplicativo exigir cinco instncias de uma Web Role e uma delas for encerrada, por exemplo, o controlador de malha iniciar uma nova automaticamente. De maneira semelhante, se a mquina na qual uma VM estiver sendo executada for desativada, o controlador de malha ir iniciar uma nova instncia da funo em outra mquina, redefinindo o balanceador de carga conforme a necessidade para apontar para essa nova VM. Atualmente o Windows Azure oferece aos desenvolvedores cinco tamanhos de VMs. As opes so:

Pequena, com CPU de ncleo nico de 1,0 GHz, 768 MB de memria e 20 GB de armazenamento de instncia. Pequena, com CPU de ncleo nico de 1,6 GHz, 1,75 GB de memria e 225 GB de armazenamento de instncia. Mdia, com CPU de ncleo duplo de 1,6 GHz, 3,5 GB de memria e 490 GB de armazenamento de instncia. Grande, com CPU de quatro ncleos de 1,6 GHz, 7 GB de memria e 1.000 GB de armazenamento de instncia. Extra grande, com CPU de oito ncleos de 1,6 GHz, 14 GB de memria e 2.040 GB de armazenamento de instncia. Uma instncia extra-pequena compartilha um ncleo de processador com outras instncias extrapequenas. Para os demais tamanhos, em cada instncia h ou mais ncleos dedicados. Isso significa que o desempenho dos aplicativos previsvel, sem um limite arbitrrio de tempo pelo qual uma instncia pode ser executada. Uma instncia de Web Role, por exemplo, pode demorar o tempo que precisar para tratar de uma solicitao de um usurio, enquanto uma Worker Role pode computar o valor de pi em um milho de dgitos. Para Web Roles e Worker Roles (mas no para funes VM), o controlador da malha tambm gerencia o sistema operacional em cada instncia. Isso inclui coisas como aplicao de patches no sistema operacional e atualizao de outros softwares do sistema. Dessa forma os desenvolvedores podem se concentrar apenas na criao de aplicativos - eles no precisam se preocupar com o gerenciamento da plataforma em si. No entanto, importante entender que o controlador da malha sempre assume que pelo menos duas instncias de cada funo esto sendo executadas. Isso permite desligar uma delas para atualizar o software sem que o aplicativo seja interrompido. Por essa e outras razes, geralmente no uma boa ideia executar uma nica instncia de qualquer funo do Windows Azure.

CONTENT DELIVERY NETWORK


Um uso comum dos blobs armazenar informaes que sero acessadas de muitos lugares diferentes. Pense em um aplicativo que fornea vdeos, por exemplo, a clientes Flash, HTML 5 ou Silverlight ao redor do mundo. Para melhorar o desempenho em uma situao como essa, o Windows Azure oferece uma rede de fornecimento de contedo (CDN). A CDN armazena cpias de um blob em locais mais prximos dos clientes que as utilizam. A figura 6 ilustra essa ideia.

Blobs

Windows Azure

Aplicativos e Dados CDN Conectar Computao Armazenamento Malha Controlador

Figura 6: o CDN do Windows Azure faz cpias em cache de blobs no mundo inteiro, permitindo aos usurios acessar as informaes mais rapidamente. No observe a figura de forma muito literalna verdade, o CDN do Windows Azure tem muito mais localidades de caching global do que mostra a figuramas o conceito correto. Na primeira vez que um blob especfico for acessado por usurio, o CDN armazena uma cpia daquele blob em uma localidade geograficamente mais prxima ao usurio. Da prxima vez que o blob for acessado, o seu contedo ser fornecido a partir do cache em vez do original, mais remotamente localizado. Por exemplo, imagine que o Windows Azure seja usado para fornecer vdeos de eventos de esporte a um pblico amplamente distribudo. O primeiro usurio a acessar esse vdeo no ter o benefcio do CDN, j que aquele blob ainda no est em cache numa localidade mais prxima. No entanto, os demais usurios na mesma localidade geogrfica vero um desempenho melhor, j que a cpia em cache permite ver o vdeo mais rapidamente.

CONEXO
Executar aplicativos na nuvem Microsoft pode ser til. Mas os aplicativos e dados que usamos em nossas organizaes no vo desaparecer to cedo. Neste caso, importante que a conexo de ambientes in loco com o Windows Azure seja eficiente. O componente de Conexo do Windows Azure foi criado para isso. O componente pode facilitar essa combinao ao oferecer conectividade no nvel de IP entre um aplicativo do Windows Azure e as mquinas em execuo fora da nuvem Microsoft. A Figura 7 ilustra a ideia.

10

Aplicativos e Dados
Funo Instncias

Agente de endpoint Computador Windows in-loco

IPsec Windows Azure Computao

Aplicativos e Dados CDN Conectar Computao Armazenamento Malha Controlador

Figura 7: o componente de Conexo do Windows Azure permite comunicao no nvel de IP entre uma mquina Windows in loco e um aplicativo do Windows Azure. Como a figura mostra, o uso do componente de Conexo do Windows Azure requer a instalao de um agente de endpoint em todos os computadores in loco que estiverem conectados a um aplicativo do Windows Azure. (Como a tecnologia usa o IP v6, o agente de endpoint est disponvel atualmente apenas para o Windows Server 2008, Windows Server 2008 R2, Windows Vista e Windows 7.) O aplicativo Windows Azure tambm precisa ser configurado para trabalhar com o componente de Conexo do Windows Azure. Assim que isso for feito, o agente pode usar o IPsec para interagir com uma funo especfica do aplicativo. Note que no se trata de uma rede virtual privada (VPN) completa. Apesar de a Microsoft ter anunciado planos para esta oferta, o componente de Conexo do Windows Azure uma soluo mais simples. A configurao no requer contato com o seu administrador de rede, por exemplo. A nica coisa necessria a capacidade de instalar o agente de endpoint na mquina local. Essa abordagem tambm oculta o potencial de complexidade da configurao do IPsecisso feito para voc pelo componente de Conexo do Windows Azure. Assim que a tecnologia for configurada, funes de um aplicativo do Windows Azure parecem estar na mesma rede de IP que as mquinas locais. Isso permite coisas como: Um aplicativo do Windows Azure pode acessar diretamente um banco de dados local. Suponhamos, por exemplo, que uma organizao migre um aplicativo existente do Windows Server criado com a tecnologia ASP.NET para uma Web Role do Windows Azure. Se o banco de dados que o aplicativo usa precisar ficar no local, uma conexo do componente de Conexo do Windows Azure pode deixar o aplicativoagora executado no Windows Azureacessar o banco de dados in loco como sempre o fez. Nem mesmo a sequncia da conexo precisa ser alterada.

11

Um aplicativo do Windows Azure pode ter domnio associado ao ambiente in loco. Isso permite que usurios no local faam login nico ao aplicativo na nuvem. Isso tambm permite que o aplicativo use os grupos e contas existentes do Active Directory para controle de acesso. importante fazer a nuvem se ajustar ao ambiente in loco atual. Ao permitir conectividade direta no nvel de IP, o componente de Conexo do Windows Azure facilita a vida de seus aplicativos

USANDO CENRIOS DO WINDOWS AZURE


importante entender os componentes do Windows Azure, mas isso no o suficiente. A melhor maneira de entender o que esta plataforma pode fazer analisar alguns exemplos de como voc pode us-la. Assim, esta seo examina diversos cenrios do Windows Azure: a criao de um aplicativo Web escalonvel, a criao de um aplicativo de processamento paralelo, a criao de um aplicativo Web com processamento em segundo plano, a criao de um aplicativo Web com dados relacionais, a migrao de um aplicativo Web in loco com dados relacionais e o uso de armazenamento em nuvem a partir de um aplicativo hospedado ou in loco.

CRIANDO UM APLICATIVO WEB ESCALONVEL


Vamos supor que uma organizao queira criar um aplicativo Web acessvel via Internet. Hoje em dia, a opo mais comum executar esse aplicativo em um data center dentro da organizao ou em um provedor de hospedagem. Em muitos casos, porm, uma plataforma na nuvem como o Windows Azure uma escolha melhor. Por exemplo, se o aplicativo tiver que tratar de um grande nmero de usurios simultneos, faz sentido cri-lo em uma plataforma feita expressamente para dar suporte a isso. O suporte intrnseco a aplicativos e dados escalonveis oferecido pelo Windows Azure pode lidar com cargas muito maiores do que tecnologias Web mais convencionais. Ou vamos supor que a carga do aplicativo v variar expressivamente, com ocasionais picos em meio a longos perodos de baixa utilizao. Um site de tickets online pode exibir esse padro, por exemplo, como sites de vdeos de notcias com eventuais notcias de destaque, um aplicativo que mais utilizado em certas horas do dia e outros. Executar esse tipo de aplicativo em um data center convencional sempre exige um nmero suficiente de mquinas disponveis para lidar com os picos, mesmo que a maioria desses sistemas passe a maior parte do tempo sem uso. Porm, se o aplicativo for criado para o Windows Azure, a organizao que o executar pode expandir a quantidade de instncias que usa apenas quando for necessrio, e depois voltar para uma quantidade menor. Como o Windows Azure cobrado com base no uso voc paga por hora para cada instncia isso provavelmente vai sair mais barato do que manter muitas mquinas praticamente sem uso. Para criar um aplicativo Web escalonvel no Windows Azure, um desenvolvedor pode usar Web Roles e tabelas. A figura 8 ilustra isso de maneira simples.

12

Aplicativo da Web escalonvel


Tabelas Web Role Instncia

Usurios
Figura 8: um aplicativo Web escalonvel pode usar tabelas e instncias de Web Roles. No exemplo mostrado aqui, os clientes so navegadores, e a lgica do aplicativo pode ser implementada usando ASP.NET ou outra tecnologia Web. Tambm possvel criar um aplicativo Web escalonvel que exponha servios Web baseados em SOAP e/ou RESTful usando WCF, e ento chamar esses servios a partir de um cliente Silverlight, por exemplo. Em qualquer dos casos, o desenvolvedor especifica quantas instncias da Web Role devem ser executadas, e o controlador de malha do Windows Azure cria essa quantidade de VMs. Conforme descrito anteriormente, o controlador de malha tambm monitora essas instncias, certificando-se de que a quantidade selecionada esteja sempre disponvel. Para o armazenamento de dados, o aplicativo usa as tabelas de armazenamento do Windows Azure, que oferecem armazenamento de escalabilidade horizontal capaz de lidar com quantidades muito grandes de dados.

CRIANDO UM APLICATIVO COM PROCESSAMENTO PARALELO


Aplicativos Web escalonveis so teis, mas no s para eles que o Windows Azure faz sentido. Pense em uma organizao que ocasionalmente precise de muito poder computacional para um aplicativo de processamento paralelo. H muitos exemplos desse tipo de situao: modelagem financeira em um banco, renderizao em um estdio de efeitos especiais para filmes, desenvolvimento de novas drogas em uma empresa farmacutica e muito mais. Embora seja possvel manter um grande cluster de mquinas para atender a essa necessidade ocasional, isso sai caro. O Windows Azure pode fornecer esses recursos conforme a necessidade, oferecendo um cluster computacional sob demanda. Um desenvolvedor pode usar Worker Roles para criar esse tipo de aplicativo. E embora e essa no seja a nica opo, aplicativos em paralelo geralmente usam grandes conjuntos de dados, que podem ser armazenados em blobs do Windows Azure. A Figura 9 ilustra esse tipo de aplicativo.

13

Aplicativo de processamento paralelo


Filas Web Role Instncia Worker Role Instncia Blobs

Usurio
Figura 9: um aplicativo com processamento paralelo pode usar uma instncia de Web Role, muitas instncias de Worker Roles, filas e blobs. No cenrio mostrado aqui, o trabalho paralelo feito por vrias instncias de Worker Roles em execuo simultaneamente, cada uma usando dados de blob. Como o Windows Azure no impe limite de tempo de durao de execuo de uma instncia, cada uma pode realizar uma quantidade arbitrria de trabalho. Para interagir com o aplicativo, o usurio depende de uma nica instncia de Web Role. Por meio dessa interface, o usurio pode determinar quantas instncias de funcionrio devem ser executadas, iniciar e interromper essas instncias, acessar resultados e mais. A comunicao entre a instncia da Web Role e as instncias de Worker Roles depende das filas do armazenamento do Windows Azure. Dada a enorme capacidade de processamento disponvel na nuvem, esta nova abordagem tende a transformar a computao de alto desempenho. Por exemplo, o Microsoft Windows HPC Server agora permite a criao de um cluster computacional usando instncias da Worker Role do Windows Azure junto com ou em vez de servidores fsicos locais. Independente de como for feito, faz sentido usar esta nova fonte de poder computacional em algumas situaes.

CRIANDO UM APLICATIVO WEB ESCALONVEL COM PROCESSAMENTO EM SEGUNDO PLANO


provvel que a maioria dos aplicativos criados hoje oferea uma interface para navegadores. Embora aplicativos que no faam nada alm de aceitar e responder a solicitaes do navegador sejam teis, eles tambm so limitados. H muitas situaes nas quais um software acessvel via Web precisa iniciar um trabalho que ser executado em segundo plano, independente da parte de solicitao/resposta do aplicativo. Tomemos como exemplo um aplicativo Web de compartilhamento de vdeos. Ele tem que aceitar solicitaes do navegador, talvez vindas de um grande nmero de usurios ao mesmo tempo. Algumas dessas solicitaes iro carregar novos vdeos, e cada vdeo ter que ser processado e armazenado para acesso posterior. No faz sentido fazer o usurio esperar enquanto ocorre esse processamento. Em vez

14

disso, a parte do aplicativo que aceita solicitaes do navegador deve ser capaz de iniciar uma tarefa em segundo plano para realizar esse trabalho. As Web Roles e Worker Roles do Windows Azure podem ser usadas juntas para lidar com essa situao. A figura 10 mostra como pode ser esse tipo de aplicativo.

Aplicativo da Web escalonvel com processamento em segundo plano


Tabelas Web Role Instncia Filas Worker Role Instncia Blobs

Usurios
Figura 10: um aplicativo Web escalonvel com processamento em segundo plano pode usar muitas das capacidades do Windows Azure. Assim como o aplicativo Web escalonvel mostrado anteriormente, este aplicativo usa algumas instncias de Web Role para tratar das solicitaes do usurio. Para suportar um grande nmero de usurios simultneos, ele usa tabelas para armazenar informaes de perfil. Para o processamento em segundo plano, ele depende das instncias de Worker Role, passando tarefas a elas por meio das filas. Neste exemplo, as instncias de Worker Role trabalham com dados em blobs, mas outras abordagens tambm so possveis. Este exemplo mostra como um aplicativo pode combinar muitas capacidades bsicas expostas pelo Windows Azure: instncias de Web Roles, instncias de Worker Roles, blobs, tabelas e filas. E, embora no seja mostrado na figura, um aplicativo de compartilhamento de vdeo tambm pode usar o CDN do Windows Azure para acelerar o acesso. Nem todos os aplicativos vo precisar disso tudo, mas ter essas capacidades disposio essencial para suportar cenrios mais complexos, como este.

CRIANDO UM APLICATIVO WEB COM DADOS RELACIONAIS


Os blobs e as tabelas do Windows Azure so ideais para algumas situaes. Em outras, no entanto, melhor usar dados relacionais. Suponhamos que uma corporao queira construir e executar um aplicativo para seus prprios funcionrios no Windows Azure. Talvez a vida til do aplicativo seja curta ou imprevisvel, ento no valer pena alocar um servidor no data center da corporao. Ou talvez o aplicativo tenha que ser executado o mais rapidamente possvel, o que impossibilitaria a espera pelo

15

provisionamento de um servidor pelo departamento de TI interno. Ou talvez a organizao acredite que executar o aplicativo no Windows Azure seja mais simples e barato. Independente da razo, esse aplicativo provavelmente no precisa de toda a escalabilidade que as tabelas do Windows Azure proporcionam. Em vez delas, o criador do aplicativo pode preferir a abordagem relacional que j conhece, com direito ao uso de ferramentas familiares de relatrios. Em um caso como esse, o aplicativo pode usar o Windows Azure junto com o SQL Azure, como mostra a figura 11.

Novo aplicativo da Web com dados relacionais


SQL Azure

Web Role Instncia

Usurios
Figura 11: um aplicativo do Windows Azure pode usar o SQL Azure para trabalhar com dados relacionais. O SQL Azure proporciona um grande subconjunto de funcionalidades do SQL Server, incluindo relatrios, como um servio de nuvem gerenciado. Os aplicativos podem criar bancos de dados, executar consultas SQL e mais, mas sem que voc tenha que administrar o sistema de banco de dados ou o hardware sobre o qual ele opera a Microsoft cuida disso. Um banco de dados do SQL Azure pode ser acessado usando o protocolo TDS (Tabular Data Stream), assim como na verso in loco do SQL Server. Dessa forma um aplicativo do Windows Azure pode acessar dados relacionais usando mecanismos familiares como o Entity Framework e o ADO.NET. E como o SQL Azure um servio na nuvem, a cobrana baseada no uso. Como o Windows Azure e o SQL Azure oferecem na nuvem duplicatas de suas contrapartes locais, simples mover o cdigo e os dados desse tipo de aplicativo entre os dois mundos. As coisas no so exatamente iguaiso aplicativo Windows Azure deve ser capaz de executar mltiplas instncias, mas os ambientes in loco e na nuvem so bastante similares. Essa portabilidade til nas situaes em que fizer sentido criar um aplicativo com cdigo e dados que possam existir no local ou na nuvem.

16

MIGRAO DE UM APLICATIVO WEB IN LOCO COM DADOS RELACIONAIS


Suponhamos que em vez de criar um novo aplicativo Web para o Windows Azure, uma organizao queira migrar um aplicativo Windows Server j existente para essa plataforma na nuvem. Uma maneira de abordar essa questo usando a funo VM do Windows Azure. A imagem muito similar ao caso anterior, como mostra a Figura 12.

Aplicativo da Web in-loco migrado com dados relacionais


Funo da VM Instncia SQL Azure

Usurios
Figura 12: alguns aplicativos in loco podem ser migrados para o Windows Azure usando a funo VM e o SQL Azure. Para usar uma funo VM, uma organizao cria um disco rgido virtual (VHD) a partir de uma mquina in loco executando o Windows Server 2008 R2. Esta imagem pode ser carregada no Windows Azure e executada em uma funo VM. Como exibe a figura, o aplicativo pode acessar dados relacionais no SQL Azure. Outra opo deixar os seus dados no local, acessando-os diretamente via o componente de Conexo do Windows Azure, como foi descrito anteriormente. A funo VM pode ser til. No entanto, importante entender que a migrao de um aplicativo do Windows Server para o Windows Azure pode exigir mais do que o simples empacotamento em VHD e a sua execuo em uma funo VM. Em primeiro lugar, lembre-se que o controlador da malha do Windows Azure assume que pelo menos duas instncias de cada funo esto sempre em execuo. (A qualificao para o Service Level AgreementSLAdo Windows Azure requer isso.) Lembre-se tambm que o Windows Azure balanceia a carga de todas as solicitaes de usurios entre as instncias das funes. Se o aplicativo sendo migrado tiver sido construdo para funcionar dessa maneira - talvez j esteja em execuo em um Web farm balanceado, por exemploele pode ser bem executado no Windows Azure sem mudanas significativas. Porm, se o aplicativo tiver que ser executado em uma nica instncia, ele provavelmente ir exigir alguma alterao para que sua execuo no Windows Azure possa ser bemsucedida.

17

USANDO O ARMAZENAMENTO NA NUVEM A PARTIR DE UM APLICATIVO LOCAL OU HOSPEDADO


O Windows Azure oferece diversas capacidades, mas s vezes um aplicativo s precisa de uma delas. Pense, por exemplo, em um aplicativo local ou hospedado que precise armazenar uma quantidade expressiva de dados. Uma empresa pode querer arquivar emails antigos, por exemplo, poupando dinheiro com armazenamento, mas ainda assim mantendo esses emails acessveis. Um site de notcias executado em um hoster pode precisar de um local globalmente acessvel e dimensionvel para armazenar grandes quantidades de textos, grficos, vdeos e informaes de perfis de seus usurios. Um site de compartilhamento de fotos pode querer passar os desafios do armazenamento de suas informaes para terceiros nos quais possa confiar. O armazenamento do Windows Azure pode lidar com todas essas situaes, como mostra a Figura 13.

Blobs

Tabelas

Aplicativos locais ou hospedados

Figura 13: um aplicativo local ou hospedado pode usar blobs ou tabelas do Windows Azure para armazenar seus dados na nuvem. Conforme mencionamos anteriormente, um aplicativo hospedado ou in loco pode acessar diretamente o armazenamento do Windows Azure. Esse acesso provavelmente vai ser mais lento do que quando se trabalha com armazenamento local, mas provavelmente tambm vai ser mais barato, escalonvel e confivel. Para alguns aplicativos, essa troca definitivamente vale pena. E apesar disso no aparecer na figura, os aplicativos podem usar o SQL Azure da mesma maneira.

ENTENDENDO O WINDOWS AZURE: UMA VISO MAIS DETALHADA


Para entender o Windows Azure, necessrio conhecer o bsico da plataforma, e ver os cenrios tpicos nos quais esses pontos bsicos podem ser aplicados. Mas essa tecnologia vai muito alm disso. Esta seo lana um olhar mais aprofundado sobre alguns de seus aspectos mais interessantes.

18

CRIAO DE APLICATIVOS DO WINDOWS AZURE


Para os desenvolvedores, criar um aplicativo para o Windows Azure como criar um aplicativo tradicional para o Windows. Como a plataforma suporta tanto aplicativos .NET quanto aplicativos criados com cdigo no gerenciado, um desenvolvedor pode usar o que for mais adequado para o problema ser resolvido. Para facilitar sua vida, o Visual Studio fornece modelos de projetos para criar aplicativos do Windows Azure. Tambm possvel carregar aplicativos diretamente no Windows Azure a partir do Visual Studio. Uma diferena bvia entre o mundo da nuvem e o mundo local que os aplicativos do Windows Azure no so executados localmente. Essa diferena tem potencial para tornar o desenvolvimento mais desafiador. Para minimizar essa questo, a Microsoft fornece o emulador de malha, uma verso do ambiente do Windows Azure executada na mquina de um desenvolvedor. O emulador de malha executado em uma nica estao de trabalho ou mquina de servidor. Ele emula a funcionalidade do Windows Azure na nuvem, completa, com Web Roles, Worker Roles, funes de VM e as trs opes de armazenamento do Windows Azure. Um desenvolvedor pode criar um aplicativo para o Windows Azure, implant-lo no emulador de malha de desenvolvimento e execut-lo da mesma maneira que faria na hora da verdadeira implantao. Ele pode determinar quantas instncias de cada funo devem ser executadas, usar filas para comunicao entre essas instncias e fazer quase tudo o que possvel fazer usando o prprio Windows Azure Assim que o aplicativo for desenvolvido e testado localmente, o desenvolvedor pode carregar o cdigo e suas informaes de configurao, e ento execut-lo. Independente de como for criado, um aplicativo do Windows Azure geralmente disponibilizado na nuvem em duas etapas. Primeiro o desenvolvedor carrega o aplicativo para a rea de testes da plataforma. Quando o desenvolvedor estiver pronto para pr o aplicativo em produo, ele usa o portal do Windows Azure para fazer essa solicitao. Esta mudana da etapa de teste para a de produo pode ser feita sem tempo de indisponibilidade, o que permite que um aplicativo seja atualizado para uma nova verso sem interromper os usurios. O aplicativo em testes tem um nome DNS no formato <GUID>.cloudapp.net, onde <GUID> representa um identificador global exclusivo atribudo pelo Windows Azure. Para produo, o desenvolvedor escolhe um nome DNS no mesmo domnio, como myazureservice.cloudapp.net. Para usar um domnio personalizado em vez do domnio Microsoft cloudapp.net, o proprietrio do aplicativo pode criar um alias do DNS usando um CNAME padro. Depois que o aplicativo estiver acessvel para acesso externo, seus usurios provavelmente vo precisar de algum meio de identificao. Para cuidar disso, o Windows Azure permite que os desenvolvedores usem qualquer mecanismo de autenticao baseado em HTTP que eles preferirem. Um aplicativo ASP.NET pode usar um provedor de associao para armazenar seu prprio ID de usurio e senha, por exemplo, ou pode usar outro mtodo, como o servio Windows Live ID da Microsoft. Os aplicativos do Windows Azure tambm podem usar o Windows Identity Foundation (WIF) para implementar a identidade com base em reivindicaes. A escolha cabe totalmente ao criador do aplicativo.

19

EXAMINANDO O SERVIO DE COMPUTAO


Como a maioria das tecnologias, o Windows Azure evoluiu desde que foi lanado. A principio, por exemplo, o cdigo nas funes da Web e Funcionrio s podia ser executado no modo usurio. Hoje, no entanto, ambos oferecem uma opo de privilgios elevados, permitindo que os aplicativos sejam executados no modo administrador. Isso pode ser til para aplicativos que precisem instalar um componente COM, por exemplo, algo que era problemtico na primeira verso do Windows Azure. Entretanto, cada instncia em execuo de uma Web Role ou Worker Role comea a partir de uma placa limpa: o sistema operacional subjacente na VM uma imagem padro definida pelo Windows Azure. Isso significa que qualquer instalao de software executada pela funo deve ser feita sempre que uma nova instncia for criada. Isso no um problema para instalaes simples, como a adio de um nico componente COM. Mas suponha-se que a instncia tenha que instalar uma srie de softwares para desempenhar seu objetivo. provvel que fazer isso sempre que uma nova instncia da funo for criada tornar o processo muito lento. Evitar essa lentido a principal finalidade das funes de VM. Em vez de exigir uma nova instalao a cada instncia criada, todos os softwares exigidos podem ser includos em um VHD, com o VHD sendo usado para criar uma instncia da funo VM. Isso pode ser significativamente mais rpido que o uso de Web Roles e Worker Roles com privilgios elevados. Essa tambm pode ser a soluo certa quando o processo de instalao exigir interveno manual, algo que o Windows Azure no permite. Outra mudana da verso original do Windows Azure que a plataforma agora suporta acesso via Remote Desktop Protocol (RDP). Isso til em depuraes, por exemplo, para permitir que um desenvolvedor acesse diretamente uma instncia especfica. Mas no espere usar essa infraestrutura de rea de trabalho virtual (VDI), o Windows Azure (hoje, pelo menos) no foi projetado para suportar esse tipo de cenrio. Outros aspectos importantes da computao do Windows Azure foram disponibilizados desde que o primeiro lanamento da tecnologia. Para tornar isso possvel, o Windows Azure permite que um desenvolvedor indique em qual data center um aplicativo deve ser executado, e onde seus dados devem ser armazenados. Ele tambm pode especificar que um grupo especfico de aplicativos e dados (incluindo dados no SQL Azure Database) devem residir no mesmo data center. Inicialmente, a Microsoft disponibiliza data centers para o Windows Azure nos Estados Unidos, na Europa e na sia, mas outros viro.

EXAMINANDO O SERVIO DE ARMAZENAMENTO


Para usar o armazenamento do Windows Azure, primeiro o desenvolvedor tem que criar uma conta de armazenamento. Para controlar o acesso s informaes nessa conta, o Windows Azure d ao seu criador uma chave secreta. Cada solicitao que um aplicativo faz s informaes nessa conta de armazenamento blobs, tabelas e filas carrega uma assinatura criada com essa chave secreta. Em outras palavras, a autorizao no nvel da conta (embora blobs tenham outra opo, descrita mais adiante). O armazenamento do Windows Azure no fornece listas de controle de acesso e nem outras maneiras mais minuciosas de se controlar quem pode acessar os dados que ele contm.

20

Blobs
Os objetos binrios grandes blobs muitas vezes so exatamente o que um aplicativo precisa. Seja armazenando vdeo, udio, mensagens de email arquivadas ou qualquer outra coisa, eles permitem que os aplicativos armazenem e acessem dados de um modo bastante genrico. Para usar blobs, primeiro o desenvolvedor cria um ou mais contineres em alguma conta de armazenamento. Cada um desses contineres pode armazenar um ou mais blobs. Para identificar um blob especfico, um aplicativo pode fornecer uma URI no formato: http://<ContaDeArmazenamento>.blob.core.windows.net/<Continer>/<NomeDoBlob> <ContadeArmazenamento> um identificador exclusivo atribudo quando uma nova conta de armazenamento criada, enquanto <Continer> e <NomeDoBlob> so os nomes de um continer especfico e de um blob dentro desse continer. H duas formas de blobs: Blobs de bloco, que podem armazenar at 200 gigabytes de dados cada. Para tornar a transferncia mais eficiente, um blob de bloco subdividido em blocos. Se ocorrer uma falha, a retransmisso pode ser retomada com o bloco mais recente, no sendo necessrio enviar o blob todo outra vez. Depois que todos os blocos de um blob forem carregados, o blob inteiro pode ser confirmado de uma vez. Blobs de pgina, que podem ter at um terabyte cada. Um blob de pgina dividido em pginas de 512 bytes, e um aplicativo livre para ler e escrever em pginas individuais aleatoriamente no blob. Seja qual for o tipo de blob que armazenam, os contineres podem ser marcados como particulares ou pblicos. Para blobs em um continer particular, tanto as solicitaes de leitura quanto de escrita precisam ser assinadas usando a chave da conta de armazenamento de blob. Para blobs em um continer pblico, apenas solicitaes de escrita precisam ser assinadas; qualquer aplicativo pode ler o blob. Isso pode ser til para disponibilizar vdeos, fotos e outros dados no estruturados na Internet. Na verdade, o CDN do Windows Azure funciona somente com dados armazenados em contineres de blobs pblicos. Outro aspecto importante dos blobs sua funo no suporte a unidades do Windows Azure. Para entender essa funo, observe primeiro que as instncias da funo so livres para acessar o sistema de arquivos local. Por padro, no entanto, esse armazenamento no persistente. Quando a instncia encerrada, a VM e seu armazenamento local vo embora. A montagem de uma unidade do Windows Azure para a instncia pode fazer com que um blob da pgina se parea com uma unidade local completa com um sistema de arquivos NTFS. Gravaes na unidade podem ser feitas imediatamente no blob subjacente. Quando a instncia no est em execuo, esses dados so armazenados de forma persistente no blob de pgina, pronto para ser montado novamente. Estes so alguns dos possveis usos das unidades: Um desenvolvedor pode carregar um VHD contendo um sistema de arquivos NTFS e ento mont-lo como uma unidade do Windows Azure. Isso proporciona uma maneira direta de mover dados de um sistema de arquivos entre o Windows Azure e um sistema Windows Server local.

21

Um desenvolvedor do Windows Azure pode instalar e executar um sistema de banco de dados MySQL em uma instncia de funo do Windows Azure, usando uma unidade do Windows Azure como armazenamento subjacente.

Tabelas
Um blob fcil de entender ele apenas uma placa de bytes mas as tabelas so um pouco mais complexas. A figura 14 ilustra como as partes de uma tabela se encaixam.

Tabela

Tabela

Tabela

...

Entidade Entidade Entidade . . .

Propriedade Propriedade Propriedade . . .

Nome

Tipo

Valor

Figura 14: as tabelas fornecem armazenamento baseado em entidades. Como mostra a figura, cada tabela armazena uma certa quantidade de entidades. Uma entidade contm zero ou mais propriedades, cada uma com um nome, um tipo e um valor. Vrios tipos so suportados, incluindo: Binary, Bool, DateTime, Double, GUID, Int, Int64, e String. Uma propriedade pode aceitar tipos diferentes em momentos diferentes, dependendo do valor armazenado nela, e no h exigncia de que todas as propriedades em uma entidade sejam do mesmo tipo o desenvolvedor pode fazer o que fizer mais sentido para o aplicativo. Seja qual for seu contedo, uma entidade pode ter tamanho de at um megabyte, e sempre acessada como uma unidade. A leitura de uma entidade retorna todas as suas propriedades, e a gravao de uma pode substituir todas as suas propriedades. Tambm possvel atualizar um grupo de entidades dentro de uma mesma tabela atomicamente, garantindo que todas as atualizaes tenham xito ou que todas fracassem. As tabelas de armazenamento do Windows Azure so diferentes das tabelas relacionais em diversos aspectos. O mais bvio que elas no so tabelas no sentido comum da palavra. Alm disso, elas no podem ser acessadas por meio de ADO.NET comum, nem contam com suporte a consultas SQL. E as

22

tabelas no armazenamento do Windows Azure no impem esquemas as propriedades em uma nica entidade podem ser de tipos diferentes, e esses tipos podem mudar com o tempo. A pergunta bvia : por qu? Por que no apenas suportar tabelas relacionais comuns com consultas SQL comuns? A resposta vem de um dos principais objetivos do Windows Azure: dar suporte a aplicativos maciamente escalonveis. Bancos de dados relacionais tradicionais podem escalar verticalmente, lidando com mais e mais usurios executando o DBMS em mquinas cada vez maiores. Mas para dar suporte a uma quantidade realmente grande de usurios simultneos, o armazenamento precisa escalar horizontalmente, e no verticalmente. Para isso, o mecanismo de armazenamento precisa ficar mais simples: tabelas relacionais tradicionais com SQL comum no funcionam bem para essa finalidade. O que precisamos do tipo de estrutura oferecido pelas tabelas do Windows Azure. O uso de tabelas exige que os desenvolvedores repensem algumas coisas, j que conceitos relacionais familiares no podem ser aplicados sem alteraes. Ainda assim, ao criar aplicativos muito escalonveis, essa abordagem faz sentido. Os desenvolvedores no precisam se preocupar com a dimenso s precisam criar tabelas novas, entidades novas; o Windows Azure cuida do resto. Isso tambm elimina boa parte do trabalho necessrio para manter um DBMS, j que o Windows Azure faz isso por voc. O objetivo deixar que os desenvolvedores se concentrem em seu aplicativo, e no nas mecnicas de armazenamento e administrao de grandes quantidades de dados. Como tudo mais no armazenamento do Windows Azure, as tabelas so acessadas com REST. Um aplicativo .NET pode usar o WCF Data Services para isso, ocultando as solicitaes HTTP subjacentes. Qualquer aplicativo, .NET ou no, tambm pode fazer essas solicitaes diretamente. Por exemplo, uma consulta contra uma tabela especfica expressa como um HTTP GET contra uma URI formatada desta maneira: http://<ContadeArmazenamento>.table.core.windows.net/<NomeDaTabela>?$filter=<Consulta> Aqui, <NomeDaTabela> especifica a tabela que est sendo consultada, enquanto <Consulta> contm a consulta a ser executada contra esta tabela. Se a consulta retornar uma grande quantidade de resultados, um desenvolvedor pode obter um token de continuao que pode ser passado para a prxima consulta. Fazer isso repetidamente permite recuperar o conjunto completo de resultados em partes. As tabelas do Windows Azure no so a escolha certa para todos os cenrios de armazenamento, e para us-las os desenvolvedores precisam aprender algumas coisas novas. Ainda assim, para aplicativos que precisem da escalabilidade que elas oferecem, as tabelas podem ser a escolha certa.

Filas
Enquanto tabelas e blobs so destinados principalmente ao armazenamento e ao acesso aos dados, o principal objetivo das filas o de permitir a comunicao entre diferentes partes de um aplicativo do Windows Azure. Como tudo mais no armazenamento do Windows Azure, as filas so acessadas com REST. Tanto aplicativos do Windows Azure quanto aplicativos externos referenciam uma fila usando uma URI formatada desta maneira: http://<ContaDeArmazenamento>.queue.core.windows.net/<NomeDaFila> Como j descrevemos, um uso comum das filas para permitir a interao entre instncias de Web Roles e instncias de Worker Roles. A figura 15 ilustra isso.

23

1) Receber trabalho
Web Role Instncia

3) Retirar mensagem da fila

Worker Role Instncia

4) Executar trabalho

2) Enfileirar mensagem
Fila

5) Excluir mensagem

Figura 15: as mensagens so postas na fila, tiradas da fila, processadas e explicitamente excludas da fila. Em um cenrio tpico, vrias instncias de Web Roles esto em execuo, cada uma aceitando trabalho dos usurios (etapa 1). Para passar esse trabalho para as instncias de Worker Roles, uma instncia da Web Role grava uma mensagem em uma fila (etapa 2). Essa mensagem, que pode ter at oito kilobytes, pode conter uma URI que aponte para um blob ou uma entidade em uma tabela ou outra coisa depende do aplicativo. As instncias de funcionrio leem mensagens desta fila (etapa 3) e fazem o trabalho solicitado pela mensagem (etapa 4). importante observar, no entanto, que a leitura de uma mensagem da fila no a exclui. Em vez disso, a mensagem fica invisvel para outros leitores por um perodo determinado de tempo (por padro, 30 segundos). Quando a instncia da Worker Role tiver concludo o trabalho solicitado pela mensagem, ela precisa excluir explicitamente a mensagem da fila (etapa 5). Faz sentido separar instncias de Web Role de instncias de Worker Role. Assim o usurio no precisa esperar que uma longa tarefa seja processada, e dimensionar fica mais fcil: s adicionar mais instncias de uma das duas. Mas por que fazer com que as instncias excluam as mensagens explicitamente? Para poder trata das falhas. Se a instncia de Worker Role que recupera uma mensagem consegue trat-la com xito, ela exclui a mensagem enquanto essa mensagem ainda est invisvel, ou seja, em sua janela de 30 segundos. Se uma instncia de Worker Role tirar uma mensagem da fila, porm, e tiver uma pane antes de concluir o trabalho especificado pela mensagem, ela no ir excluir a mensagem da fila. Quando seu tempo limite de visibilidade expirar, a mensagem tornar a aparecer na fila e ser lida por outra instncia de Worker Role. O objetivo garantir que cada mensagem seja processada ao menos uma vez. Como mostra a descrio, as filas do armazenamento do Windows Azure no tm a mesma semntica das filas do Enfileiramento de Mensagens da Microsoft (MSMQ) ou outras tecnologias mais familiares. Por exemplo, um sistema de enfileiramento convencional pode oferecer uma semntica de primeiro a entrar, primeiro a sair, entregando cada mensagem exatamente uma vez. As filas do armazenamento do Windows Azure no fazem essas promessas. Conforme acabamos de descrever, uma mensagem pode ser entregue vrias vezes, e no h garantia de entrega das mensagens em uma ordem especfica. A vida diferente na nuvem, e os desenvolvedores vo ter que se adaptar a essas diferenas.

24

EXAMINANDO O CONTROLADOR DA MALHA


Para um desenvolvedor de aplicativos, a computao e o armazenamento so as partes mais importantes no Windows Azure. Porm, nenhum deles poderia funcionar sem o controlador da malha. Ao unir um data center cheio de mquinas a um todo coerente, ele fornece a base para todo o resto. Conforme descrito anteriormente, o controlador de malha dono de todos os recursos em um data center especfico do Windows Azure. E tambm responsvel por designar aplicativos a mquinas fsicas. importante fazer isso de maneira inteligente. Por exemplo, vamos supor que um desenvolvedor solicite cinco instncias de Web Role e quatro instncias de Worker Role para o aplicativo dele. Uma atribuio ingnua pode colocar todas essas instncias em mquina em um mesmo rack, servidas pelo mesmo comutador de rede. Se o rack ou o comutador falharem, o aplicativo inteiro no estar mais disponvel. Com os objetivos de alta disponibilidade do Windows Azure, fazer com que um aplicativo dependesse de pontos nicos de falha como esse no seria nada bom. Para evitar isso, o controlador de malha agrupa as mquinas que possui em diversos domnios com falha. Cada domnio com falha uma parte do data center na qual uma nica falha pode encerrar o acesso a tudo naquele domnio. A figura 16 ilustra essa ideia.

Aplicativo

Web Role (Instncia 1)

Web Role (Instncia 2)

Armazena mento Rplica 1

Armazena mento Rplica 2

Fabric Controller

Domnio com falhas

Controlador de malha

Figura 16: o controlador da malha posiciona diferentes instncias de um aplicativo em diferentes domnios com falhas. Neste exemplo simples, o aplicativo est executando apenas duas instncias de Web Role, e o data center dividido em dois domnios com falha. Quando o controlador de malha implanta este aplicativo, ele posiciona uma instncia de Web Role em cada um dos domnios com falha. Esse arranjo significa que uma nica falha de hardware no data center no pode levar consigo todo o aplicativo. Lembre-se tambm de

25

que o controlador de malha enxerga o armazenamento do Windows Azure com se fosse s mais um aplicativo o controlador no lida com a replicao dos dados. O aplicativo de armazenamento quem cuida disso, certificando-se de que as rplicas de quaisquer blobs, tabelas e filas usados por esse aplicativo sejam colocadas em domnios com falha diferentes. Manter um aplicativo em execuo diante de falhas de hardware til, mas no o bastante. Um aplicativo realmente confivel o tipo de aplicativo ao qual o Windows Azure d suporte no deveria ter que ser encerrado para ser atualizado. Uma maneira de fazer isso usando a abordagem descrita anteriormente para mudar da verso existente do aplicativo para uma nova verso. Outra opo usar os domnios de atualizao do Windows Azure. Com esta abordagem, o controlador da malha atribui diferentes instncias das funes de um aplicativo a diferentes domnios de atualizao. Para implantar uma nova verso do aplicativo, o controlador da malha implanta novo cdigo a cada domnio de atualizao: ele interrompe as instncias daquele domnio, atualiza o cdigo para aquela funo e ento inicia novas instncias. O objetivo manter o aplicativo em execuo continuamente, at enquanto ele atualizado. Os usurios podem notar a atualizao o tempo de resposta do aplicativo provavelmente vai aumentar quando algumas de suas instncias forem encerradas, por exemplo, e usurios diferentes vo acessar verses diferentes do aplicativo no meio da atualizao. Ainda assim, do ponto de vista do usurio, o aplicativo como um todo permanece continuamente disponvel. No confunda domnios de atualizao, uma propriedade de um aplicativo, com domnios com falha, uma propriedade do data center. Porm, os dois tm o mesmo propsito importante: ajudar o controlador da malha a manter os aplicativos do Windows Azure em execuo o tempo todo.

O FUTURO
A Microsoft anunciou planos para adicionar mais ao Windows Azure in 2011, incluindo: O Windows Azure Platform Appliance, uma combinao de hardware e software que permitir a hosters e corporaes executar o Windows Azure em seus prprios data centers. Caching de contedo dinmico do CDN: atualmente o CDN do Windows Azure funciona somente com dados de blobs. Essa funcionalidade a ser lanada permitir que o CDN tambm salve em cache o contedo criado dinamicamente por um aplicativo do Windows Azure. Instantneo da funo VM: no seu primeiro lanamento, a funo VM do Windows Azure no salva nenhuma alterao feita no volume do SO enquanto ele est em execuo. O Instantneo ir mudar isso, oferecendo uma maneira de salvar periodicamente o estado desse volume em um armazenamento persistente. Melhor suporte a Java: apesar de o Windows Azure executar aplicativos Java atualmente, a Microsoft planeja adicionar mais suporte. As prximas melhorias incluiro melhor desempenho para Java, maior suporte a ferramentas baseadas no Eclipse e um conjunto mais completo de bibliotecas Java para o Windows Azure. Como sempre, o objetivo fazer com que essa plataforma na nuvem seja til em um nmero ainda maior de situaes.

26

CONCLUSES
Executar aplicativos e armazenar dados na nuvem a opo certa para muitas situaes. As diversas partes do Windows Azure trabalham em conjunto para tornar isso possvel. Junto com o ambiente de desenvolvimento Windows Azure, o SQL Azure e o resto da plataforma Windows Azure, elas formam uma ponte para que os desenvolvedores do Windows migrem para esse novo mundo. Hoje, as plataformas na nuvem ainda so uma opo um pouco extica para a maioria das organizaes. Porm, conforme formos adquirindo experincia com o Windows Azure e outras plataformas na nuvem, essa nova abordagem no vai mais parecer to estranha. Com o tempo, a expectativa de que os aplicativos baseados na nuvem e as plataformas na nuvem nas quais eles so executados passem a ter um papel cada vez mais importante no mundo do software.

LEITURA ADICIONAL
Home page da plataforma Windows Azure http://www.microsoft.com/windowsazure Apresentando a plataforma Windows Azure, David Chappell http://go.microsoft.com/fwlink/?LinkId=158011 Blobs do Windows Azure: programando o armazenamento com blobs http://go.microsoft.com/fwlink/?LinkId=153400 Tabelas do Windows Azure: programando o armazenamento com tabelas http://go.microsoft.com/fwlink/?LinkId=153401 Filas do Windows Azure: programando o armazenamento com filas http://go.microsoft.com/fwlink/?LinkId=153402

SOBRE O AUTOR
David Chappell Diretor da Chappell & Associates (www.davidchappell.com) em San Francisco, Califrnia. Atravs de suas palestras, textos e consultoria, ele ajuda as pessoas em todo o mundo a compreender, usar e tomar melhores decises sobre novas tecnologias.

27

También podría gustarte