Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Padrões além do código

Ivan Rosolen
December 04, 2020

Padrões além do código

Uma boa arquitetura, padrões de código e workflow bem definido podem fazer nossa vida de dev ficar muito mais simples e garantir segurança.

A ideia dessa talk é mostrar o que esses 15 anos de dev e php conference me ensinaram e como eu consegui implementar documentações e
definições que ajudam desde Júnior a Sênior.

Ivan Rosolen

December 04, 2020
Tweet

More Decks by Ivan Rosolen

Other Decks in Technology

Transcript

  1. @ivanrosolen Ivan Rosolen Desenvolvedor há ~20 anos. Palestrante e Co-fundador

    do PHPSP. Apaixonado por inovação e resolver problemas complexos de maneiras simples. Pai do Akira <3
  2. Problemas 6 Pouca documentação Deploy manual Sem controle do banco

    de dados Poucas decisões documentadas Onboarding lento Servidores sem padrão
  3. Equipe Cultura justa Post-mortem Criticidade das aplicações Lista de Bugs

    Decisões documentadas Documentações e fluxos
  4. Backup Banco de dados Configurações de aplicação Arquivos Snapshot /

    Imagem Recuperação de desastre Validar o backup e tempo de restauração
  5. Definição de entregue TASK Branch criado a partir da develop

    Atende completamente os requisitos do ticket Scripts de alteração de banco validados Deploy executado em Dev com sucesso Requisitos do ticket validados em Dev por quem finalizou Merge Request com mínimo de 02 aprovações Deploy executado em Homologação com sucesso Validado pelo QA no ambiente de Homologação
  6. Definição de entregue BUG Branch criado a partir da main

    Corrige o problema pontualmente Tag criada Deploy em produção Validado em produção Branch sincronizado entre main e develop
  7. Commits (conventional-commits) static: alterações no conteúdo de arquivos estáticos (dados

    .json, imagens, etc) cd: Alterações em nossos arquivos e scripts de configuração para CD docs: somente alterações na documentação feat: um novo recurso fix: uma correção de bug da aplicação improve: alguma alteração de código que melhore o comportamento de um recurso perf: uma alteração de código que melhora o desempenho refactor: uma alteração de código que não corrige um bug nem adiciona um recurso style: alterações que não afetam o significado do código (espaço em branco, formatação, ponto e vírgula, etc) test: Adicionando testes ausentes ou corrigindo testes existentes
  8. Merge Request / Code Review Seguir o Conventional Commit Utilizar

    descrições em PT-BR Descrever o porque foi feita a modificação ou adição de funcionalidade Menos de 300 linhas de alterações, se possível (Sem contar os testes) Gitignore global não do repo Sempre marcar "Remove source branch" Mínimo de 02 aprovações Seguir recomendações de revisão do código Giphy <3
  9. Código Definição de entregue Merge Request / Code Review Git

    workflow Commits (conventional-commits)
  10. Git workflow Branch develop recebe os merges do que está

    sendo produzido Branch homolog recebe os merges vindos somente da branch develop Branch main recebe os merges vindos somente da branch homolog
  11. Git workflow TAG 1.2.3 Seguir as definições macro do https://semver.org/lang/pt-BR/

    versão Maior - MAJOR quando fizer mudanças incompatíveis na API versão Menor - MINOR quando adicionar/melhorar funcionalidades mantendo compatibilidade versão de Correção - PATCH quando corrigir falhas mantendo compatibilidade
  12. Git workflow Release Notes #### Fix * mensagens do conventional

    commit #### Melhorias * mensagens do conventional commit #### Adicionados * mensagens do conventional commit
  13. Código Definição de entregue Merge Request / Code Review Git

    workflow Ambiente Dev Commits (conventional-commits)
  14. Ambiente Dev Docker / Vagrant / Ansible Facilita “subir” o

    ambiente de desenvolvimento Documenta as dependências do projeto
  15. Código Definição de entregue Merge Request / Code Review Git

    workflow Ambiente Dev Banco de dados (migrations) Commits (conventional-commits)
  16. Banco de dados (migrations) Permite deploy automatizado Documentar modificações feita

    na base (cuidado com índices) Melhora controle de acesso direto ao banco de produção Dica: validar se “algo” existe antes de executar
  17. Arquivo de configurações JSON / INI / YAML Facilita deploy

    automatizado Controlar funcionalidades por ambiente Controlar mudanças de IP | ULRs | API | Acessos
  18. Arquivos de log Definir nível dos logs para cada ambiente

    Definir folders e tempo de rotação Utilizar “padrões de mercado”
  19. Linguagem ubíqua Documentação para facilitar entendimento de todos (glossário) Feita

    em conjunto com cliente e área de negócio Utilizar PT-BR sempre que possível
  20. Decisões de arquitetura Documentar o que foi feito e o

    cenário atual da aplicação/time/empresa ADR - Palestra Dohms