Projeto final realizado para a plataforma da Codenation no Acelera Dev - Python, apoiado pela Stone.
Em projetos modernos é cada vez mais comum o uso de arquiteturas baseadas em serviços ou microsserviços. Nestes ambientes complexos, erros podem surgir em diferentes camadas da aplicação (backend, frontend, mobile, desktop) e mesmo em serviços distintos. Desta forma, é muito importante que os desenvolvedores possam centralizar todos os registros de erros em um local, de onde podem monitorar e tomar decisões mais acertadas. Neste projeto vamos implementar um sistema para centralizar registros de erros de aplicações.
Como o programa (ou aceleração) possui ênfase no backend, o objetivo principal é:
- Criar endpoints para serem usados pelo frontend da aplicação;
- Criar um endpoint que será usado para gravar os logs de erro em um banco de dados relacional;
- A API deve ser segura, permitindo acesso apenas com um token de autenticação válido;
Porém, a implementação do frontend (não obrigatória) também pode ocorrer nos seguintes moldes:
- Deve implementar as funcionalidades apresentadas nos wireframes;
- Deve ser acessada adequadamente tanto por navegadores desktop quanto mobile;
- Deve consumir a API do produto;
- Desenvolvida na forma de uma Single Page Application;
O projeto deverá ser entregue até o dia 20/07/2020, juntamente com um vídeo de explicação/apresentação do realizado pelo participante.
Para testar o projeto em sua máquina, é necessário seguir os seguintes passos:
- Instalar a biblioteca virtualenv globalmente para criar um virtual environment:
pip3 install virtualenv
- Criar um novo virtual environment:
cd venv
python -m venv .
- Ativar o virtual environment para execução:
cd ..
source venv/bin/activate
- Instalar as bibliotecas necessárias:
pip install -r requirements.txt
Decidi pausar o desenvolvimento desse projeto pois não estava me dando bem com as libs de URL do Django REST, chegando até mesmo a cortar dois Models (quase 3) para simplificar a URL (/machine/id/application/id/execution/id/event/id) devido a perder muito tempo configurando e tentando entender os lookups, filters, etc. Quando cheguei perto, o tempo já estava no limite (infelizmente).
Dificuldades encontradas até aqui e "superações":
- Decidir entre Flat VS Nested URL (/machine?application_id vs /machine/id/application/id..).: Quase superada, pois travei ao seguir pelo caminho das URLs aninhadas ao utilizar implementações via libs do Django Rest Framework. O erro fatal foram configurações específicas nas quais 1 recurso filho não deveria aparecer em outro recurso-pai que não o possuísse.
- Definir um padrão a seguir na API:: Superada ao tentar utilizar as especificações do JSON:API.
- Criação de filtros fora das classes padrões do Django: Não realizado.
- Entender o ecossistema Django e seu funcionamento: Ganhei uma boa noção, porém, ainda faltam vários tópicos para ter um entendimento melhor do assunto.
- Workflow no Git: ainda faço uns commits que poderiam ser melhores (no quisito texto, necessidade, etc), mas foi uma experiência muito boa!
Planos pro futuro
- Terminar a parte da URL.
- Criar os filtros.
- Criar wireframes melhores.
- Fazer um prótipo de telas.
- Colocar "no ar" a API.
- Criar a parte de Front-end.
- Juntar tudo e ter a aplicação completa.
Após algumas pesquisas, decidi retornar aos poucos com o desenvolvimento do projeto, visto que, em teoria, falta pouco para se tornar uma aplicação completa (ainda que eu termine após o prazo estipulado).