Publicando sua aplicação Web Python no WebApp do Azure e configurando o CI/CD da sua aplicação.

Luigi Tavolaro
Apr 5 · 7 min read

Série Python + Recursos do Azure

Neste artigo, irei demonstrar como publicar um site ou Api REST em Python no Web App do Azure. Lembrando que o foco do artigo não é exatamente como criar sites ou APIs Rest com o Python, mas ao longo dos artigos, vou avançando na utilização dos recursos e das bibliotecas e explicando um pouco sobre o Flask e como utiliza-lo.

Se você já conhece o Flask, vá direto para a parte do Azure.

Para isso, será utilizado:

· Flask (http://flask.pocoo.org/), que será melhor descrito posteriormente;

· Python (https://www.python.org/) na sua versão 3.6 (essa é a versão mais atual de suporte no Azure).

· Visual Studio Code (https://code.visualstudio.com/) para codificar nossa aplicação. Instale a extensão do Python https://marketplace.visualstudio.com/items?itemName=ms-python.python

· Azure DevOps (https://azure.microsoft.com/pt-br/services/devops/) para utilização do repositório GIT que será utilizado para o deploy da aplicação.

· Postman (https://www.getpostman.com/postman) para consumir nossa API de exemplo.

Começamos da pergunta que mais escuto, por que Python? Se você também se perguntou isso, vou tentar responder rapidamente.

Python é simples, leve, versátil, fácil de aprender, roda em todos os sistemas operacionais, e hoje, graças à estudo do Data Science, é utilizado por muitas empresas. Como já li em outros artigos, Python é o verdadeiro Canivete Suíço.

O que é Flask então?

Flask é um micro-framework (um framework minimalista) desenvolvido em Python e baseado em 3 pilares:

1. WerkZeug é uma biblioteca para desenvolvimento de apps WSGI que é a especificação universal de como deve ser a interface entre um app Python e um web server.

2. Jinja2 é um template engine escrito em Python, você escreve templates utilizando marcações como {{ nome_da_variavel }} ou {% for nome in lista_de_nomes %} Hello {{nome}}!! {% endfor %} e o Jinja se encarrega de renderizar este template, ou seja, ele substitui os placeholders pelo valor de suas variáveis.

3. Good Intentions: O Flask é Pythonico! além do código ter alta qualidade nos quesitos de legibilidade ele também tenta seguir as premissas do Zen do Python e dentro dessas boas intenções nós temos o fato dele ser um micro-framework deixando que você tenha liberdade de estruturar seu app da maneira que desejar.

Então nós temos uma linguagem super poderosa em mãos e um micro-framework que nos facilita começar com a parte Web em Python.

Mãos à massa:

Instale o Python em sua versão 3.6 ou 3.7, baixe em https://www.python.org/

No VS Code abra um novo Terminal

Digite o Comando

python -m pip install flask ¹

O Pip é gerenciador de pacotes do Python, para quem esta familiarizado com o .Net, seria o Nuget do Python.

O comando (1) instala o pacote Flask e suas dependências. Isso significa que podemos já começar a utiliza-lo.

Ainda no VS Code pressione Ctrl+Shift+P e selecione a opção “Python: selecionar interpretador”

Na etapa seguinte, selecione a versão 3.6 ou 3.7 do Python

No canto esquerdo, embaixo, deverá estar da seguinte maneira:

Pronto, o VS Code está configurado para utilizar o Python.

Abra um novo arquivo e digite:

Na linha 7, estou definindo minha rota principal. Onde vai rodar minha aplicação WEB.

e na linha 26, estou criando a rota para a minha API.

No VS Code:

Clicar no debug a esquerda. Após, clicar no play verde que esta destacado pela seta azul. A aplicação esta rodando conforme destacado em amarelo.
A aplicação esta rodando no localhost
Postman retorna o resultado da API rodando via localhost

Sua aplicação Flask já está rodando, tanto a parte web, como a Api.

Agora vamos para parte do Azure:

Se você não tem uma conta no Azure, indico conhecer o programa Visual Studio Dev Essentials (https://visualstudio.microsoft.com/pt-br/dev-essentials/), tem diversos serviços gratuitos ou para experimentar. O Azure é um deles: “Conta gratuita do Azure (inclui um ano de serviços gratuitos, US$200 no primeiro mês)”, se você não tem um cartão de crédito internacional, pode criar uma conta no nubank por exemplo.

Abra o portal do Azure e clique em App Services

Criar um novo WebApp
Clicar nos itens destacados. Inserir o nome, o Resource Group, e o plano que será utilizado.
Após criado o recurso, entre em seu WebApp e vá em configurações, na aba General Settings escolha a Stack, no caso Python

Existe uma versão do Python instalada e é a versão 3.4. A equipe do Azure não atualiza a versão do Python para não “quebrar” os aplicativos que já estão rodando. Porém podemos fazer isso manualmente conforme abaixo:

clicar no link Extensions
Escolher a versão 3.6.4 x64 do Python

Aceite os termos legais

Pronto, agora temos o Python 3.6 instalado. Porém agora precisamos instalar a biblioteca do Flask para rodar nossa aplicação.

Para isso vamos usar o projeto KUDU do Azure, dessa maneira podemos manipular nosso WebApp via linha de comando.

Clicar em Advanced tools e posteriormente em Go
abra o CMD para manipularmos o WebApp
Navegar até a pasta D:\home\python364x64
Executar o mesmo comando (1) do início do artigo
O Flask foi instalado no nosso WebApp

Lembrando que é uma configuração Windows nosso Web App, portanto, estamos utilizando o IIS para rodar a aplicação. Precisamos então de um Web.config para as configurações da aplicação.

Na linha 4 informamos quem é meu arquivo principal, ou seja, quem deve ser executado. No caso, meu arquivo do Flask é o main.py, portanto, na linha 4 deve estar o main.app. Essa configuração é apenas para aplicações Flask

As demais linhas são configurações sobre caminho do Python e do FastCGI que é utilizado para executar o script.

Agora vamos colocar nossa aplicação no repositório do Azure DevOps, entre em https://azure.microsoft.com/pt-br/services/devops/

Poderíamos transferir os dados via ftp também.

Clique em novo projeto e informe nome e a descrição:

Criado o repositório, vamos fazer o push do nosso código. Eu fiz via Web mesmo, mas vocês podem usar a ferramenta de Git que vocês preferirem.

Clique no botão destacado para fazer o upload dos arquivos

Voltando ao Portal do Azure, dentro do seu WebApp.

Clicar em Deployment Center e Logo após escolher o Azure Repos. Vale destacar que poderia ser outros serviços como o GitHub ou até mesmo do OneDrive.
Escolha os itens pedidos.

Pronto, ao finalizar, será feito automaticamente o Deploy da sua aplicação e para cada novo PR, o deploy será automático, sendo assim temos um início de CI/CD da aplicação.

Aplicação rodando na WebApp.
API rodando no WebApp

Referências

Faça parte de comunidades técnicas, é muito importante para sua carreira, conheça as comunidade que sou líder.

DevelopersBR: https://www.meetup.com/pt-BR/DevelopersBR/

Azure Talks: https://www.meetup.com/pt-BR/azure-talks/

Se inscreva no canal do YouTube também: youtube.com/developersbr

Me sigam nas redes sociais.

Linkedin: https://www.linkedin.com/in/luigitavolaro/

GitHub: https://github.com/LuigiTavolaro

Twitter: https://twitter.com/LuigiTavolaro

Valeu e Obrigado

JunDevelopers

O JunDevelopers é um grupo de estudos com sede em Jundiaí — SP, em parceiria com o Developers-BR, fundado em São Paulo — Capital. Nosso foco é promover o networking e disseminar o conhecimento e inclusão em desenvolvimento de software e tecnologia.

Luigi Tavolaro

Written by

JunDevelopers

O JunDevelopers é um grupo de estudos com sede em Jundiaí — SP, em parceiria com o Developers-BR, fundado em São Paulo — Capital. Nosso foco é promover o networking e disseminar o conhecimento e inclusão em desenvolvimento de software e tecnologia.