/oh_my_log

Oh My Log - the error central project for final week of Acelera Dev - Python on Codenation

Primary LanguagePythonMIT LicenseMIT

Central de Erros - Oh My Log

Projeto final realizado para a plataforma da Codenation no Acelera Dev - Python, apoiado pela Stone.

Índice

1. Sobre o projeto


1.1 Informações cedidas pela Codenation para realização do projeto

1.1.1 Contexto

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.

1.1.2 Objetivo

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;

1.2. Wireframes

1.2.1 Cadastro

Tela de cadastro

1.2.2 Login

Tela de login

1.2.3 Dashboard

Dashboard

1.2.4 Ambientes

Ambientes

1.2.5 Ordenação

Ordenação

1.2.6 Filtro

Filtro

1.2.7 Detalhes do erro

Detalhes do erro

1.2 Prazo

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.

2. Mão na massa


2.3 Ferramentas utilizadas

2.2 Dependências

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

3. Estado atual do projeto:

20/07/2020 - Pausado por um tempo

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.

24/07/2020 - Retornando

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).