Sign inSign up

henriquesebastiao/manejo-api

By henriquesebastiao

•Updated over 1 year ago

API async robusta para gestão de rebanhos construída com FastAPI.

Image
0

247

henriquesebastiao/manejo-api repository overview

⁠API - Projeto de Modernização do Manejo

Repositório: https://github.com/henriquesebastiao/modernizacao-manejo-api/⁠

API para o backend do projeto de modernização do manejo desenvolvida com FastAPI.

Esta API, construída com FastAPI, é a parte central de um projeto voltado para o setor agropecuário. Nosso objetivo é viabilizar uma gestão eficiente de informações sobre o rebanho de bovinos e seu desempenho, auxiliando os produtores rurais a tomar decisões mais assertivas e estratégicas.

A API visa proporcionar uma solução abrangente para o controle eficiente de informações relacionadas ao gado. Através dela, oferecemos funcionalidades robustas para realizar operações de CRUD no banco de dados, abrangendo desde o registro inicial até as análises avançadas de desempenho.

⁠Deploy 🚀

Você pode acessar a API aqui⁠.

Você também pode visualizar o deploy do banco de dados usando Adminer neste link⁠.

Use a senha manejo123.

Este usuário é apenas para leitura, fique a vontade para bisbilhotar :)

⁠Tecnologias utilizadas
⁠Como núcleo da aplicação
  • Python e FastAPI, para o desenvolvimento de uma API asyncrona e robusta.
  • Postgres como banco de dados.
  • SQLAlchemy, para interação com o banco de dados via ORM.
  • Pydantic, para validação de dados.
⁠Ferramentas usadas na implantação
  • Docker, para desenvolvimento em containers.
  • Uvicorn como servidor ASGI de aplicação.
  • Nginx, como servidor web.
  • OpenTelemetry, Prometheus e Grafana para observabilidade e telemetria.
⁠Ferramentas usadas no desenvolvimento
  • PyTest, para testes de integração.
  • Ruff como linter e formatador de código.
  • Locust, para testes de carga.

⁠Principais Recursos

CRUD Completo: Gerencie suas informações sobre o gado com facilidade, desde a adição de novos registros até a atualização e exclusão de dados existentes.

Análises de Desempenho: Utilize recursos avançados para avaliar o desempenho do gado, possibilitando a tomada de decisões mais estratégicas no manejo.

⁠Executar localmente em modo desenvolvimento

Toda a aplicação pode ser executada via Docker, logo você precisa somente dele instalado! ✅

Clone o repositório e entre nele com o seguinte comando:

git clone https://github.com/henriquesebastiao/modernizacao-manejo-api && cd modernizacao-manejo-api

Crie um arquivo .env que conterá as variáveis de ambiente exigidas pela aplicação, você pode fazer isso apenas copiando o arquivo de exemplo:

cat .env.example > .env

Agora execute o docker compose e toda aplicação será construída e iniciada em modo de desenvolvimento 🚀

docker compose watch

Pronto! Você já pode abrir seu navegador e acessar as seguintes URLs:

Para acessar o banco de dados local pelo Adminer, selecione o sistema PostgreSQL e use as seguintes credenciais:

  • Servidor: database
  • Usuário: user
  • Senha: password
  • Banco de dados: db
⁠Diagrama do Banco de Dados 💾

Um diagrama do banco de dados para facilitar o entendimento da estrutura e dos relacionamentos entre as tabelas. O diagrama serve como uma referência visual para desenvolvedores e colaboradores, destacando como os dados estão organizados e conectados, e auxiliando na manutenção e na extensão do sistema.

Diagrama do Banco de Dados

⁠Observabilidade com OpenTelemetry 🔍

O projeto conta com ferramentas para observação de métricas da aplicação, sendo elas:

  • Prometheus, para coleta de métricas.
  • Loki, para coleta de logs.
  • Tempo, para coletas de traces.

Por fim, todos os dados são enviados para o Grafana, onde podemos ver os dados em um dashboard.

Acesse o Grafana em: https://localhost:3000⁠

As credencias padrão são:

  • Usuário: admin
  • Senha: admin

Para visualizar o dashboard, clique em Dashboards no menu lateral direto e selecione Manejo API.

⁠Testes de carga com Locust

Você pode executar testes de carga na aplicação para simular acessos aos endpoints, como possivelmente seria em um ambiente de produção.

Execute os testes com o seguinte comando:

task locust

Após isso você verá as métricas de acessos a API subindo constantemente no dashboard do Grafana. Para parar o testes pressione ctrl + c.

Captura de tela de 2024-11-19 16-37-10

Tag summary

Content type

Image

Digest

sha256:57986dd2f…

Size

88.3 MB

Last updated

over 1 year ago

docker pull henriquesebastiao/manejo-api