- Descrição
- Instalação do ambiente de desenvolvimento
- Base de CEPs
- Dando uma olhada no microsserviço
- Fazendo o build da base e do conteiner Docker
- Executando seu conteiner
- Testando a aplicação com o LOCUST
Leia este documento em outros idiomas: English, Portuguese
Este projeto tem a intenção de demonstrar a construção de um microsserviço utilizando a FastAPI. Nesse projeto vamos criar uma base de CEPs usando SQLite, demonstraremos o uso do LOCUST com a nossa API, como ferramenta de análise de performance. Para criação de nosso ambiente de desenvolvimento, usamos o pipenv
O ambiente de desenvolvimento, está na raíz do projeto, existe um arquivo chamado Pipfile, que contém todas as bibliotecas usadas no projeto, ele é lido pelo pipenv.
Para começar é necessário que você tenha o Python instalado em seu computador, nesse nosso projeto você não precisa instalar o Python com privilégios de administrador. Tutoriais para a instalação do Python estão disponíveis em: https://realpython.com/installing-python/
Aqui vamos usar o Linux, como plataforma de desenvolvimento, caso utilize o Windows, você pode seguir esse tutorial. Caso prefira instalar da Microsoft Store siga esse tutorial.
Para fazer download dos instaladores de Python para Windows clique aqui
Em Linux normalmente o Python já vem instalado, mas você precisa verificar a versão do mesmo, precisa ser 3.8+, caso não tenha essa versão, será necessário instalar, siga esse tutorial, para instalação em Linux.
A seguir como instalar o pipenv:
A base de CEP que foi usada neste projeto, foi encontrada no site CEPlá, você pode baixar a base de: http://cep.la/CEP-dados-2018-UTF8.zip
Existem mais duas bases, eu não sei se elas tem o mesmo formato que essa, portanto pode ser que o programa que constrói a base de CEPs, quebre, caso não esteja no layout da base indicada. O arquivo zip contém um arquivo chamado ceps.txt.
Seu ambiente de testes e desenvolvimento já deve estar preparado com o pipenv
Para rodar o programa, você vai primeiro precisar da base de CEPs, para isso execute:
$ python build_database.py
A seguir como construir o banco de dados usado pelo microsserviço:
Agora sim, com a base de CEPs construida, você pode começar a executar o nosso microsserviço:
$ uvicorn main:app --reload
Onde:
main é a referência ao arquivo main.py, e app a referência ao objeto da nossa aplicação. Na linha 7 do arquivo main.py você verá:
app = ZipCodeApp()
Para poder acessar e testar, abra http://localhost:8000/
Com funciona? O FastAPI usa o uvicorn para executar seu código, assim temos um servidor WEB para receber nossas requisições, todas as alterações feitas no código, quando executamos o uvicorn com a opção --reload, são atualizadas sem a necessidade de parar e subir novamente a aplicação.
Para fazer a instalação do docker no windows, você precisa baixar o Docker Desktop, é necessário configurar o windows para poder fazer funcionar o Docker Desktop.
Feito isto, podemos colocar para construir nosso conteiner:
$ docker build . --tag zipcodes-app
Para verificar se seu conteiner, foi construido execute:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zipcodes-app latest 9c822e63b8df 5 minutes ago 76.2MB
<none> <none> 7999d1981e82 5 minutes ago 345MB
Agora que temos nosso aplicação dentro de um conteiner, vamos colocar para rodar e verificar se está tudo funcionando.
$ docker run -p 8000:8000 zipcodes-app
Acesse o browser com o seguinte endereço: http://127.0.0.1:8000/
Se estiver respondendo, você verá algo como:
Para colocar o Locust em funcionamento você precisa executar:
locust -f locust_zipcode.py
Feito isto, você pode abrir http://localhost:8089/, quando você entrar na página a primeira coisa que vai ver é: