Há algum tempo iniciei a escrita de alguns posts em série aqui mesmo no site falando de aspectos conceituais sobre Windows Azure. Até hoje, apresentamos recursos como: storage, compute, serviços de nuvem como service bus, caching, controle de identidade, dentre outros. Você pode acompanhar a série completa com os detalhes dos conceitos mencionados, seguindo este link.
Hoje apresento uma visão geral acerca de um dos novos recursos anunciados para a plataforma Windows Azure no último dia 7 de Junho de 2012: Windows Azure Web Sites.
Windows Azure Web Sites
Em linhas gerais, Windows Azure Web Sites é um novo ambiente disponibilizado dentro da plataforma Azure com características específicas para executar aplicações web de pequeno e médio portes. Ao criar um novo website neste modelo, assim como em uma hospedagem compartilhada tradicional, sua aplicação compartilhará recursos (disco, RAM, processamento, etc.) com outras aplicações em um mesmo servidor (de alta capacidade, é importante que se diga). A ideia é que através do WAWS, seja possível realizar o deploy de aplicações web de forma simplificada e rápida, utilizando por exemplo o controlador de código de sua preferência.
Alguns aspectos importantes a serem considerados em relação ao WAWS são:
- Git ou TFS deployment: com WAWS é possível utilizar Git e/ou TFS para efetuar a publicação de suas aplicações de forma direta. Com algunas poucos comandos e/ou cliques, é possível habilitar o ambiente para deploy através destas ferramentas.
- Escolha da publicação ativa: o portal do WAWS armazena cronologicamente às últimas publicações realizadas. Com alguns cliques você pode selecionar qual dentre elas é aquela que deve estar ativa.
- Gerenciamento de configuração de aplicações: gerenciar os diversos valores e atributos de arquivos de configurações (web.config’s) é sempre uma dor de cabeça a parte. Com WAWS este problema foi reduzido drasticamente através de um mecanismo simples de parametrização.
- Log’s do site: WAWS armazena log’s dos sites lá armazenados. Você pode monitorar a “saúde” de sua aplicação analisando os mesmos. Este acesso pode ser realizado via client de FTP ou via ferramenta de linha de comando.
- Bases de dados MySQL: WAWS suporta também bancos de dados MySQL. Você criar uma nova base de dados ou ainda, utilizar uma base já existente para conectar sua aplicação. Para que MySQL pudesse funcionar com performance e seguraça no modelo de cloud, a Microsoft estabeleceu uma parceria com uma empresa especializada, chamada ClearDB.
- Escalabilidade: Windows Azure Web Sites disponibiliza dois modelos possíveis para conseguir escala: compartilhado e reservado. No modo compartilhado é possível aumentar o número de processos referentes a aplicação web enquanto no reservado, é possível passar a aplicação para máquinas virtuais dedicadas.
- Segurança: WAWS trabalha em modo full trust. Isto significa dizer que todas as aplicações que “rodam” em ambiente compartilhado encontram-se completamente isoladas umas das outras. Este é um critério importante a ser avaliado no momento de planejar seu website.
- Linguagens e frameworks: que WAWS suporta nativamente ASP.NET, ASP.NET MVC, PHP, Node.js você já deve ter ouvido falar. Talvez o que você não saiba é que suas aplicações ASP clássicas e 2.0 também são suportadas, logo, seus códigos legados são bem vindos dentro do Windows Azure Web Sites.
- Web Deploy: outra característica importante agregada ao WAWS é a aceitação de publicação de aplicações via web deploy. Assim, se você utiliza as ferramentas da Microsoft para gerenciamento de código (VS 2o10, VS 2012 ou WebMatrix), poderá publicar diretamente através delas no Windows Azure.
- NuGet: ao realizar o deploy de sua aplicação no WAWS, não é mais necessário enviar os pacotes de forma agregada. O Windows Azure se encarrega de realizar tal tarefa em tempo de execução no momento da implantação.
- Domínios personalizados: uma dificuldade encontrada por boa parte dos desenvolvedores web que utilizam web roles no Windows Azure é a criação de domínios personalizados. Com Windows Azure Web Sites, a especificação de domínios personalizados tornou-se extremamente simples, podendo utilizar o próprio portal de administração para este fim. É importante observar entretanto que, para que esta feature funcione, o web site deve estar “rodando” em modo reservado.
- Certificados: Windows Azure Web Sites oferecem suporte nativo para utilização de SSL para domínios externos. Para domínios próprios isso ainda não é possível, entretanto, há um comprometimento por parte do time de Windows Azure para disponibilizar este ambiente o quanto antes.
- IIS8, Windows Server 2012 e .NET 4.5: para este primeiro preview, WAWS não implementa IIS8, Windows Server 2012 e .NET 4.5. Muito embora as novas versões ainda não sejam suportadas, estas deverão ser naturalmente e automaticamente implementadas à medida em que se tornarem estáveis. Hoje o ambiente é: IIS 7.5, Windows Server 2008 R2 e .NET 4.0.
Uma pergunta que deve estar perturbando sua cabeça neste instante deve ser: “Se o Windows Azure já possuía as web roles, o que justifica a existência de mais um modelo pra host de aplicações web?“. Acertei?
A resposta é simples: Web roles são ambientes que permitem alto grau de personalização através de startup tasks. O objetivo das web roles é disponibilizar um ambiente para host de aplicações web mais robusto e totalmente personalizável, ao passo que o WAWS apresenta outro viés em termos de demanda: a simplicidade em detrimento da personalização.
Se você precisa de um ambiente personalizado como por exemplo, implementar características específicas no IIS ou ainda, adicionar novas confiurações de ambiente, WAWS não são para você. Neste caso, recomendo considerar duas hipóteses: Web Roles ou ainda, o recurso de máquinas virtuais (assunto do nosso próximo post na série).
Se você quiser ver um exemplo de publicação de aplicação construída com ASP.NET Razor no ambiente de Windows Azure Web Sites, recomendo a leitura do post que escrevi aqui mesmo no site. Ele utiliza Git e WAWS para realizar a publicação.
Pingback: Utilizando o WebMatrix para publicar aplicações no Windows Azure – Fabrício Sanchez