Colocar as aplicações na nuvem é algo muito comum nos dias atuais. A nuvem é uma alternativa barata que pode facilitar muito a vida do desenvolvedor e agilizar o lançamento de um novo negócio no mercado. Há muitas alternativas para escolher quando falamos de cloud computing, e eu decidi que focaria meus esforços no Windows Azure. Uma vez tendo reunido conhecimento sobre o assunto, decidi escrever uma série de posts sobre essa plataforma. Não pretendo escrever apenas sobre como colocar sua app no Azure, pretendo escrever sobre as entranhas dessa plataforma – mas não se preocupe, também vai ter código!

O que é Windows Azure?

Windows Azure é a plataforma de cloud da Microsoft, conhecida popularmente como nuvem. Basicamente, a nuvem é um enorme datacenter com máquinas que ficam a disposição, onde você pode hospedar aplicações, armazenar dados, criar máquinas virtuais, entre outras coisas.

A grande vantagem de usar a nuvem é que não é necessário se preocupar com a infraestrutura da coisa. Para fazer o deploy de sua aplicação só é necessário fazer algumas configurações, enviar para o Azure e ela vai pro ar. Problemas como queda de energia e discos com defeito não são coisas com as quais será necessário se preocupar, focando o tempo no que importa, o desenvolvimento da aplicação.

Claro que nada é de graça, e aqui há outro ponto interessante, você só paga por aquilo que usa: processamento, espaço em disco, largura de banda, etc, o que é um grande atrativo para pequenas empresas ou startups – as quais conseguem gastar muito pouco para validar uma idéia, já que um servidor não é nada barato.

O Sistema Operacional do Azure

Para reger todas essas máquinas, existe um sistema operacional que coordena o seu funcionamento. Não o associe aos sistemas operacionais aos quais estamos acostumados como Windows 8 ou Ubuntu. Suas principais funções são:

  • Hospedar aplicações
  • Lidar com as complexidades de hardware
  • Fazer a interface entre usuários e aplicações
  • Fornecer uma forma de gerenciar o que está rodando no sistema e controlar as permissões de acesso à ele.

Isso é o suficiente para colocar uma app no ar, e qualquer servidor fornece esses serviços. Então qual é a diferença para o servidor comum?

Rodando a aplicação em milhares de servidores

Um sistema operacional tradicional é responsável por alocar processamento e memória para rodar sua aplicação e deve gerenciar esses recursos – se a app der pau, o SO deve recolher esses recursos e realocá-los. Esse tipo de abstração é perfeito para gerenciar uma única máquina, mas não é possível escalá-lo para gerenciar um cloud. No Azure, sua app não roda necessariamente em um único servidor, ela pode rodar paralelamente em milhares.

O SO não tem como alocar recursos de milhares de máquinas fisicamente separadas, esse trabalho tem de ser feito de outra forma. O Azure resolve esse problema trabalhando com Virtual Machines. Assim o SO não é responsável por alocar diretamente os recursos que a sua app precisar, mas cuida dos recursos das VMs – assim é possível ter inúmeras apps na mesma máquina física sem que elas interfiram entre si.

O servidor é dividido em n VMs. Quando colocamos a app no Azure ela é instalada em sua VM própria, a qual roda um Windows Server; quando trabalhamos com webapps e (naturalmente) precisamos de um webserver, o Azure nos disponibiliza um IIS.

Primeiro exemplo no Azure

Vamos criar a primeira app para exemplo usando ASP.NET MVC 5.0, mas não precisamos nos limitar à esse tipo de aplicação, o Azure pode hospedar praticamente qualquer app que é comumente hospedada no IIS. Esse exemplo é bem trivial, mas acho que vale para exemplificar para quem tem pouca familiaridade com hospedagem de aplicações, ou para quem trabalha colocando-as em servidores “comuns”, o quão fácil é trabalhar dessa forma.

Para criar a primeira app, é necessário instalar o SDK do Azure no seu Visual Studio. É só fazer o download através desse link e instalá-lo. Também é necessário que um SQL Server esteja instalado, pode ser a versão Express. Por fim, para que o Visual Studio possa invocar as ferramentas do Azure, é preciso executar o VS com direito de administrador (voltarei a falar sobre isso nos próximos posts). Vamos lá!

Clique em novo projeto, selecione Cloud > Windows Azure Cloud Service e dê um nome para o projeto. Clique em OK.

img1

Adicione ASP.NET Web Role. Repare que podemos adicionar várias web roles aqui.

img2

Selecione o template MVC para a WebRole. Eu removi a autenticação nesse exemplo.

img3

Rode a aplicação. Se você estiver usando o template do ASP.NET MVC 5 ela vai parecer com a da imagem (sem as minhas adições 😀 )

img4

Agora vamos colocá-la no Azure. Clique com o direito no projeto > Publish. Ele vai pedir para logar na sua conta do azure. Quando fizer isso, ele vai exibir as suas subscriptions. Selecione uma e clique em Next.

img5

Escolha um nome para o serviço e a localização de onde ficará hospedado. Agora é só clicar em publish.

img6

Vai demorar alguns instantes para finalizar, você pode acompanhar o andamento pela barra de progresso.

img7

E pronto, temos uma aplicação rodando na nuvem do Azure em alguns poucos minutos. Você pode acessar esse exemplo através do link http://serviconanuvem.cloudapp.net/

Nos próximos posts, vou falar sobre cada pedaço do Azure em partes, explicando cada pedacinho dele. Com essa série pretendo trazer muito conteúdo sobre o tema!