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.
Adicione ASP.NET Web Role. Repare que podemos adicionar várias web roles aqui.
Selecione o template MVC para a WebRole. Eu removi a autenticação nesse exemplo.
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 😀 )
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.
Escolha um nome para o serviço e a localização de onde ficará hospedado. Agora é só clicar em publish.
Vai demorar alguns instantes para finalizar, você pode acompanhar o andamento pela barra de progresso.
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!
Juliano Alves
Juliano Alves é formado em Ciência da Computação e Especializado em Engenharia de Software pela PUC-SP e considera desenvolvimento de software uma arte. Trabalha com desenvolvimento a 6 anos, focado em métodos ágeis, possuindo experiência com Java, Scala, Ruby e Python, falando sobre elas no twitter @vonjuliano de vez em quando. Contribuinte do framework opensource Mirror, criado para simplificar o uso de reflection e commiter do VidaGeek Games, uma plataforma que mistura prática deliberada e Gamefication para ensino. Hoje trabalha na Lambda3, empresa envolvida no meio ágil desde que foi criada.