O objetivo deste artigo é demonstrar o deployment de um projeto ASP.NET Core 1.0 no Azure App Service, solução PaaS que integra o Microsoft Azure.

Introdução

Inúmeros são os desafios durante a implementação de uma aplicação Web. Um dos aspectos centrais em projetos deste tipo diz respeito ao deployment da solução que está sendo construída. Neste processo de implantação deverão ser considerados fatores como um ou mais locais para hospedagem do sistema, o software (servidor de aplicação) responsável por tal gerenciamento, escalabilidade e segurança.

Disponibilizar uma aplicação em ambientes de homologação e produção envolve, via de regra, uma maior interação entre os times de desenvolvimento e operações. A esta última equipe costuma ser atribuída uma maior responsabilidade pelo planejamento envolvendo questões de infraestrutura. Isto engloba, do ponto de vista prático, atividades como a aquisição de hardware e licenças de softwares, além da configuração de todos esses recursos.

Soluções baseadas na ideia de Plataform as a Service (PaaS) podem simplificar bastante este trabalho. Deixando a cargo dos desenvolvedores apenas tarefas como a implementação da aplicação e o acesso a dados (sem maiores preocupações com infraestrutura, portanto), a escolha por alternativas deste tipo pode resultar em um aumento de produtividade, maior eficiência e redução de custos.

O Microsoft Azure conta com o Azure App Service como opção no segmento de PaaS. Compatível com .NET, Node.js, Java, PHP e Python, este serviço dispõe de um excelente suporte a aplicações Web, mobile e APIs REST. Dentre as vantagens adicionais pelo Azure App Service estão a integração com a IDE do Visual Studio, escalabilidade horizontal (múltiplas instâncias de uma mesma aplicação) e vertical (upgrade do hardware empregado), assim como integração contínua utilizando o Visual Studio Online, o GitHub ou o BitBucket.

A finalidade deste artigo é demonstrar o deployment de projetos ASP.NET Core 1.0 no Azure App Service, através de um exemplo descrito em maiores detalhes nas próximas seções.

Criando a aplicação de exemplo

Para a geração do projeto apresentado neste artigo foram utilizados como recursos:
  • O Microsoft Visual Studio Community 2015 Update 3 como IDE de desenvolvimento;
  • O .NET Core 1.0;
  • O ASP.NET Core 1.0.
Como primeiro passo será criado um projeto do tipo ASP.NET Core Web Application (.NET Core) chamado TesteDeployAppServices:



Selecionar na sequência o template Web Application em ASP.NET Core Templates:



OBSERVAÇÃO: embora seja possível configurar o deployment para o Azure App Service no momento da criação do projeto (opção Host in the cloud, indicada na imagem anterior), a ideia deste artigo é descrever tal procedimento para aplicações já existentes.

A View Index.cshtml (associada a HomeController) também será alterada, com a adição do seguinte trecho HTML ao final da mesma:

...
 
<h2>Teste de utilização do ASP.NET Core 1.0
no Azure App Service</h2>

Deployment inicial

Para publicar o projeto TesteDeployAppServices selecionar, a partir do menu de contexto na janela Solution Explorer, a opção Publish...:



OBSERVAÇÃO: para utilizar o Azure App Service será necessária uma conta de acesso ao Microsoft Azure.

Em Select a publish target escolher a alternativa Microsoft Azure App Service:



Na janela App Service acionar o botão New...:



Em Create App Service preencher então:
  • O nome do site/aplicação em Web App Name. Será gerado, por default, um endereço que segue o padrão http://<nome_aplicacao>.azurewebsites.net/ (é possível associar uma aplicação a um domínio específico);
  • O nome de um grupo de recursos em Resource Group (ao qual os itens criados para a aplicação de testes estarão ligados);
  • O plano com as configurações da aplicação em App Service Plan (cujas definições deverão ser fornecidas na janela Configure App Service Plan, que aparecerá ao se clicar no botão New...).


Já em Configure App Service Plan informar:
  • O nome do plano em App Service Plan;
  • O data center (preferencialmente o mais próximo) em Location;
  • Em Size será especificado um valor indicando o tipo de máquina e o número de instâncias para hospedagem da aplicação (o default Free permite atualmente a hospedagem de até 10 sites gratuitamente, com uma única instância para fins de testes).


Após confirmar as definições da aplicação em Create App Service (por meio da opção Create), o foco voltará para a janela Publish. Na seção Connection constarão o local para publicação do projeto, bem como a URL do mesmo (campo Destination URL):



Já na seção Settings (ainda na janela Publish) serão exibidas informações como o framework utilizado pelo projeto (campo Target Framework):



Por fim, na seção Preview serão listados todos os itens que constarão nesta primeira publicação. Para confirmar o deployment acionar a opção Publish:



O término deste processo será indicado na janela Output do Visual Studio:



Acessando a URL http://testedeployappservices.azurewebsites.net/ será possível observar o site já publicado:

Publicando alterações

Uma nova publicação do projeto TesteDeployAppServices contemplará apenas as últimas modificações, o que resultará em uma atualização bem mais rápida.

A fim de exemplificar isto a View Index.cshtml será alterada, com a adição de uma nova mensagem ao final da mesma:

...
 
<h3>2a. Atualização</h3>

Este procedimento de deployment é idêntico àquele descrito na seção anterior (ao selecionar a opção Publish... na janela Solution Explorer). Em Preview aparecerão os itens que passaram por ajustes:



Na próxima imagem é possível observar, logo após a conclusão desta segunda atualização, o último ajuste efetuado no site (destacado em vermelho):

Azure App Service no portal do Azure

O gerenciamento de uma aplicação hospedada no Azure App Service será feito a partir do portal do Microsoft Azure.

Na imagem a seguir estão destacados o site e o plano criados para o exemplo detalhado por este artigo:



Acessando o item testedeployappservices será exibido um painel para configuração da aplicação. Em vermelho está assinalada a opção Escalar verticalmente, a qual permite a escolha de servidores com maior poder de processamento (inclusive que habilitam a possibilidade de escalar horizontalmente um sistema, através da execução de múltiplas instâncias do mesmo):



Ao se optar por escalar verticalmente aparecerão diversas alternativas de hospedagem:

Conclusão

O Azure App Service é uma alternativa bastante simples e eficiente para o deployment de aplicações baseadas no ASP.NET Core 1.0, conforme demonstrado ao longo deste artigo. Um dos grandes benefícios deste serviço está na possibilidade de escalar facilmente uma aplicação, através da seleção dos recursos mais adequados para cada contexto. Outro ponto que pesa a favor desta solução é o fato da mesma ser compatível com inúmeras plataformas de desenvolvimento, como Node.js, Java, PHP, Python, além do próprio .NET Framework.

Referências

Announcing the new Azure App Service
http://weblogs.asp.net/scottgu/announcing-the-new-azure-app-service

App Service | Microsoft Azure
https://azure.microsoft.com/pt-br/services/app-service/