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

Aumentando a agildade do seu time com CI e CD -...

Interágil
November 23, 2019

Aumentando a agildade do seu time com CI e CD - André Guimaraes

Interágil

November 23, 2019
Tweet

More Decks by Interágil

Other Decks in Technology

Transcript

  1. Integração contínua é uma prática de desenvolvimento de software onde

    membros do time integram seu trabalho frequentemente
  2. Integração contínua é uma prática de desenvolvimento de software onde

    membros do time integram seu trabalho frequentemente. Cada integração é verificada por uma build automatizada
  3. Integração contínua é uma prática de desenvolvimento de software onde

    membros do time integram seu trabalho frequentemente. Cada integração é verificada por uma build automatizada que incluem testes automatizados para detectar erros o mais rápido possível Traduzido de Fowler, Martin, and Matthew Foemmel. "Continuous integration." Thought-Works) http://www. thoughtworks. com/Continuous Integration. pdf 122 (2006): 14.
  4. • Testes automatizados para cada nova feature, melhoria ou correção

    • Um servidor de integração contínua para monitorar o repositório e executar testes • Merges frequentes
  5. TEMPO Testes funcionais Teste de API Teste de integração Teste

    de componente Teste unitário CUSTO Pirâmide de teste ideal
  6. • Menos bugs pois a regressão é automatizada • Release

    simplificada • Devs recebem o feedback rapidamente se algo der errado • QAs mais focados em melhorias
  7. • Base forte de CI com uma coleção sólida de

    testes • Ambientes que suportam deploy automatizado • Cuidado para não dar deploy em feature incompleta
  8. • Menos complexidade para realizar deploys • Pode fazer deploys

    mais frequentes • Encoraja a adoção de melhorias e refatorações
  9. Acelera ainda mais o loop de feedback, com código indo

    pra produção em apenas algumas horas
  10. • Culturas de teste fortíssima • Documentação capaz de acompanhar

    a velocidade • Coordenação de várias áreas para garantir o que está sendo entregue
  11. • Desenvolvimento mais rápido já que não precisa parar para

    fazer release • Releases são rápidas e constantes • Cliente vê um fluxo contínuo de novidades e melhorias
  12. Comparação - Manual PR para Homolog Testes manuais em DEV

    Deploy manual em DEV Code review para DEV no repositório Build Local Desenvolvimento Local • Vai compilar? • Vai rodar no ambiente? • Vai quebrar funcionalidades antigas? • O ambiente ta pronto? • As regras de negócio estão corretas? • Defeitos de lógica • Defeitos de estilo • Defeitos de gramática • Defeitos de consistência • Falta de tratamento de erros • Algumas horas
  13. Comparação - Manual PR para Homolog Deploy manual em DEV

    Pull Request para DEV no repositório Build Local Desenvolvimento Local • As funcionalidades antigas vão funcionar neste ambiente? • A integração com a funcionalidade nova está correta? • A funcionalidade está fazendo o esperado? • Erros em tempo de compilação • Realmente o processo de build funciona • Ambiente parece estar preparado (pode não estar) • 1 dia
  14. Comparação - Manual PR para Homolog Testes manuais em DEV

    Deploy manual em DEV Pull Request para DEV no repositório Build Local Desenvolvimento Local • Os ambientes de homolog e prod estão preparados? • Vai funcionar com dados reais? • Defeitos de funcionalidade • Defeitos de regra de negócio • Defeitos de integração com funcionalidade antiga • Defeitos de layout • 1-2 dias pelo menos
  15. Comparação - Manual PR para Homolog Testes manuais em DEV

    Deploy manual em DEV Pull Request para DEV no repositório Build Local Desenvolvimento Local
  16. Comparação - Manual Deploy manual para HMG PR para Homolog

    Testes manuais em DEV Deploy manual em DEV Pull Request para DEV no repositório Build Local Desenvolvimento Local • As funcionalidades antigas vão funcionar neste ambiente? • A funcionalidade está fazendo o esperado neste ambiente? • Ambiente parece estar preparado (pode não estar) • 3-4 dias
  17. Comparação - Manual Testes manuais em HMG Deploy manual para

    HMG PR para Homolog Testes manuais em DEV Deploy manual em DEV Pull Request para DEV no repositório Build Local Desenvolvimento Local • As funcionalidades antigas vão funcionar neste ambiente? • A integração com a funcionalidade nova está correta? • A funcionalidade está fazendo o esperado? • Defeitos com dados mais próximos do real • Defeitos relacionado ao ambiente • 3 dias
  18. PR para Produção Comparação - Manual Testes manuais em HMG

    Deploy manual para HMG PR para Homolog Testes manuais em DEV Deploy manual em DEV Pull Request para DEV no repositório Build Local Desenvolvimento Local • 7 dias? Um mês? Um ano?
  19. Deploy manual para Produção PR para Produção Comparação - Manual

    Testes manuais em HMG Deploy manual para HMG PR para Homolog Testes manuais em DEV Deploy manual em DEV Pull Request para DEV no repositório Build Local Desenvolvimento Local
  20. Comparação - Automatizado PR para Homolog Testes manuais em DEV

    Deploy manual em DEV Testes no envio para repositório Build Local Desenvolvimento Local • Vai rodar no ambiente DEV? • As regras de negócio estão corretas? • Vai compilar! • Garantia dos testes que executaram • Não quebrou nada antigo ainda • 1 minuto
  21. Comparação - Automatizado PR para Homolog Code review para DEV

    no repositório Testes no envio para repositório Build Local Desenvolvimento Local • Vai rodar no ambiente? • O ambiente ta pronto? • As regras de negócio estão corretas? • Defeitos de lógica que os testes unitários não identificaram • Defeitos de estilo que o LINT não detectou • Defeitos de gramática • Defeitos de consistência que os testes unitários não identificaram • Falta de tratamento de erros que os testes unitários não identificaram • 1 hora
  22. Comparação - Automatizado PR para Homolog Deploy automatizado com testes

    Code review para DEV no repositório Testes no envio para repositório Build Local Desenvolvimento Local • Os ambientes de homolog e prod estão preparados? • Vai funcionar com dados reais? • Defeitos de funcionalidade • Defeitos de regra de negócio • Defeitos de integração com funcionalidade antiga • Defeitos de layout • 1 hora
  23. Comparação - Automatizado PR para Homolog Deploy automatizado com testes

    Code review para DEV no repositório Testes no envio para repositório Build Local Desenvolvimento Local • Os ambientes de homolog e prod estão preparados? • Vai funcionar com dados reais? • Defeitos de funcionalidade • Defeitos de regra de negócio • Defeitos de integração com funcionalidade antiga • Defeitos de layout • 1 hora Maior parte dos defeitos
  24. Comparação - Automatizado Testes manuais Deploy automatizado com testes Code

    review para DEV no repositório Testes no envio para repositório Build Local Desenvolvimento Local • Os ambientes de homolog e prod estão preparados? • Vai funcionar com dados reais? • Defeitos de funcionalidade em fluxos alternativos • Defeitos em testes exploratório manuais • Algumas horas
  25. Comparação - Automatizado Testes manuais Deploy automatizado com testes Code

    review para DEV no repositório Testes no envio para repositório Build Local Desenvolvimento Local • Os ambientes de homolog e prod estão preparados? • Vai funcionar com dados reais? • Defeitos de funcionalidade em fluxos alternativos • Defeitos em testes exploratório manuais • Algumas horas Mais focado em fluxos alternativos
  26. Comparação - Automatizado Deploy automatizado para HMG com teste Testes

    manuais Deploy automatizado com testes Code review para DEV no repositório Testes no envio para repositório Build Local Desenvolvimento Local • Fluxos alternativos com dados mais reais funcionam? • Ambiente parece preparado • Testes rodam novamente para garantir o funcionamento neste ambiente • 1 dia
  27. Comparação - Automatizado Testes manuais em HMG Deploy automatizado para

    HMG com teste Testes manuais Deploy automatizado com testes Code review para DEV no repositório Testes no envio para repositório Build Local Desenvolvimento Local • Os ambientes de homolog e prod estão preparados? • Vai funcionar com dados reais? • Defeitos de funcionalidade em fluxos alternativos • Defeitos em testes exploratório manuais • 2 dias
  28. Comparação - Automatizado Testes manuais em HMG Deploy automatizado para

    HMG com teste Testes manuais Deploy automatizado com testes Code review para DEV no repositório Testes no envio para repositório Build Local Desenvolvimento Local Deploy automatizado em Prod
  29. Ferramentas - Circle CI • Serviço de integração contínua na

    Nuvem • Define um pipeline de ações a serem executadas • Comandos rodam em containers docker • Baixa o código, executa a build e testa de forma automatizada • Exibe o status de cada passo para identificar o problema • Notifica o time em caso de erros
  30. • Permite deploy automatizado de infra- estrutura • Descrição dos

    recursos em forma de código • Permite versionamento
  31. • Na fase inicial do projeto é necessário fazer mais

    setup • Configurar e testar CircleCI • Escrever Cloudformation • Testes automatizados se tornam essenciais
  32. Vantagens • Falhas acontecem mais rápido! • Maior segurança em

    deploys • Mais confiança para realizar refactor e melhorias • Feedback claro para o time todo do estado do produto • Testes automatizados trazem uma boa garantia • QAs podem ficar mais focados em achar defeitos em caminhos mais alternativos