Evoluindo o sistema: testes, logs e automações do ambiente
Aqui você vai aprender sobre documentação, testes e diversas automações que vão auxiliar no seu dia a dia como desenvolvedor e tornar seu sistema web com muito mais qualidade.
Description
Criar um bom sistema web vai além do código do sistema em si, muitos outros fatores podem influenciar na qualidade e na rapidez do software entregue. O objetivo deste tutorial é melhorar as habilidades das pessoas por trás desses sistemas e fornecer mais ferramentas para que o desenvolvimento se torne além de mais rápido, com mais qualidade, seguro e profissional.
Criar um bom sistema web vai além do código do sistema em si, muitos outros fatores podem influenciar na qualidade e na rapidez do software entregue. O objetivo deste tutorial é melhorar as habilidades das pessoas por trás desses sistemas e fornecer mais ferramentas para que o desenvolvimento se torne além de mais rápido, com mais qualidade, seguro e profissional.
Iniciaremos o tutorial disponibilizando um código já pronto de um sistema simples, escrito em FastAPI de acordo com boas práticas de programação.
A partir desse código pronto, criaremos a documentação da API, que explorará a capacidade de entendimento dos códigos disponibilizados, e ressaltar o valor desse artefato.
Criaremos testes unitários e de ponta a ponta, explorando as funcionalidades previamente entendidas, e realizaremos uma modificação em um endpoint, para observar a segurança promovida pelos testes e impacto dessa modificação no escopo.
Adicionaremos logs que permitam uma melhor observabilidade do comportamento do sistema, dedicando tempo a explorar conceitos como níveis, formatação, armazenamento e introduzir uma alternativa à biblioteca padrão de logging do python.
Finalizaremos com a instrumentalização do ambiente, com formatadores, analisadores sintáticos e automações que tem impacto direto no dia a dia e na produtividade de devs.
Requirements
Necessário trazer notebook para o treinamento.
Pré-requisitos sobre a linguagem Python:
* funções é essencial;
* decoradores e orientação a objetos é bastante importante também.
Pré-requisitos práticos:
* já ter desenvolvido algum sistema web, independente da linguagem ou framework;
Pré-requisitos teóricos:
* desejável algum conhecimento sobre testes;
Para as máquinas, é necessário que você tenha permissão para instalação de pacotes. Preferencialmente Linux ou ter docker instalado.
Uma IDE da sua preferência.