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

A saga para o One Click Release

A saga para o One Click Release

Relato de experiência de como estamos implementando um processo de Continuous Delivery contando acertos e erros neste jornada.

Apresentado na Trilha Modern Devs - Oracle no The Developers Conference
https://thedevconf.com/tdc/2021/index.html

Baaa72bd2671a244ba9211e015f72d28?s=128

Elias Nogueira

December 02, 2021
Tweet

Transcript

  1. Globalcode – Open4education A Saga para o “One Click Release”

    Elias Nogueira @eliasnogueira
  2. Elias Nogueira Eu ajudo engenheiros de software (backend, frontend, qa)

    a desenvolver um mindset de qualidade e entregar software livre de erros para que eles possam se tornar os melhores profissionals 🏢 Backbase 👨💻 Principal Software Engineer 📍 Utrecht, the Netherlands 🌐 eliasnogueira.com 🐦 @eliasnogueira bit.ly/eliasnogueira
  3. Globalcode – Open4education DISCLAIMER ESTA APRESENTAÇÃO MOSTRA COMO UMA EMPRESA

    ESTÁ TENTANDO IMPLEMENTAR A ABORDAGEM SHIFT- LEFT DE UMA PERSPECTIVA TÉCNICA. ISTO VAI MOSTRAR A NOSSA ABORDAGEM, LUTAS E O QUE PODEMOS VER É UMA BOA PRÁTICA BASEADA NO NOSSO CONTEXTO.
  4. Globalcode – Open4education Foco

  5. Globalcode – Open4education Shift-Left Testing

  6. Globalcode – Open4education Shift-Left Testing

  7. Globalcode – Open4education Como estamos organizados

  8. Globalcode – Open4education Backend Engineers Frontend Engineers Quality Engineers TWO

    PAIRS OF SPECIALIZED ENGINEER PER TEAM DELIVERING CLOUD-NATIVE APPS
  9. Globalcode – Open4education O que estamos tentando alcançar

  10. Globalcode – Open4education O que estamos tentando alcançar O que

    Feedback mais rapido Por que Para entregar um produto mais confiável Como Verificando cada estágiondo SDLC automaticamente
  11. Globalcode – Open4education O que estamos tentando alcançar Estado atual

    Executamos testes (excluindo unit e integration) em ondas porque nós temos diferentes dependências internas entre microserviços. Os testes são executados em 3 ondas: Onda 1: principais microserviços Onda 2: microserviços mais importantes (perspectiva do cliente) Onde 3: demais microserviços Tempo para release: 1 semana
  12. Globalcode – Open4education O que estamos tentando alcançar O que

    nós queremos Queremos nos livrar do processo “em ondas” (intermediário entre CI/CD) e aplicar a abordagem de Sift-Left Testing para ter um CD (Continuous Deployment): Sem mais 1 semana de release Branch principal “ready to production” ”True” Continuous Delivery
  13. Globalcode – Open4education Testes que fazemos, e automatizamos Unit (backend,

    frontend) Integration (backend, frontend) Database Testing Data migration Database upgrade API Functional E2E Web
  14. Globalcode – Open4education O que estamos tentando alcançar Abordagem anterior

    Unit Integration Database API Web Backend | Frontend Engineer Backend | Frontend Engineer Quality Engineer Quality Engineer Quality Engineer
  15. Globalcode – Open4education Passos não técnicos

  16. Globalcode – Open4education Passos não técnicos 3 amigos Sessões de

    refinamento DOD para User Stories Totalmente testadas em todos os níveis
  17. Globalcode – Open4education Passos não técnicos User Story Acceptance Criteria

    e2e Integration Unit Decisão compartilhada em onde testar Acceptance Criteria
  18. Globalcode – Open4education Passos não técnicos: quality engineering Quality Advocate

    > Testers Trabalho em conjunto: todos somos engenheiros de software QE’s trabalhando próximo a todas as áreas QE como papel técnico Conhecimentos em 4 linguagens (Java, Typescript, Grooby, Bash) Experiência em 4 domínios Qualidade DevOps Frontend Backend
  19. Globalcode – Open4education Automatizar primeiro!

  20. Globalcode – Open4education Automatizar primeiro Todos os testes são automatizados

    (sim, em todos os níveis) Definimos, em conjunto, o nível adequado Grande foco em testes nas APIs Todo trabalho manual é transformado em um script Testes pelos QEs são feito em paralelo com o desenvolvimento, não depois de pronto
  21. Globalcode – Open4education Constante refatoramento

  22. Globalcode – Open4education Constante refatoramento Analisando o tempo de execução

    dos testes em todos os níveis nós entendemos que: Precisávamos de uma ingestão de dados mais rápida Alguns testes devem ficar em layers específicas, sem duplicidades Uso inteligente de pre e pos condições de teste Evitar ao máximo steps desnecessários
  23. Globalcode – Open4education Arredores

  24. Globalcode – Open4education Pipelines Tudo é um pipeline Processo normal

    do software como um processo CI/CD Execução de qualquer ação que seria manual Ciclo complete com multi-pipelines
  25. Globalcode – Open4education Ambientes Efêmeros Nós implementamos uma abordagem de

    criação de ambientes efêmeros usando Kubernetes (helm) Isso nos ajuda a criar ambientes “on the fly” de 3 a 5 minutos, baseados em: Qualquer versão anterior Desenvolvimento corrente Imagens docker baseadas em branchs de desenvolvimento
  26. Globalcode – Open4education Mesmo processo, algumas mudanças Abordagem anterior Unit

    Integration Database API Web Backend | Frontend Engineer Backend | Frontend Engineer Quality Engineer Quality Engineer Quality Engineer
  27. Globalcode – Open4education Mesmo processo, algumas mudanças Abordagem anterior Unit

    Integration Database API Web Backend | Frontend Engineer Backend Engineer Frontend Engineer Quality Engineer Quality Engineer Quality Engineer Quality Engineer Sim, QEs também escrevem e revisam testes de integração, movendo testes funcionais para a camada de integração
  28. Globalcode – Open4education Mesmo processo, algumas mudanças Abordagem anterior Unit

    Integration Database API Web Backend | Frontend Engineer Automatico Quality Engineer Quality Engineer Backend Engineer Frontend Engineer Quality Engineer Testes executados automaticamente durante o processo de merge
  29. Globalcode – Open4education Mesmo processo, algumas mudanças Abordagem anterior Unit

    Integration Database API Web Backend | Frontend Engineer Quality Engineer Quality Engineer Quality Engineer Backend Engineer Frontend Engineer Quality Engineer Execução mais rápido por ter movido os testes de integração e revisado problemas estruturais (pre e pos condições)
  30. Globalcode – Open4education Qual o nosso alvo?

  31. Globalcode – Open4education O que queremos atingir Backend | Frontend

    Engineers enviam suas mudancas Quality Engineers trabalham em paralelo Multi Pipelines para executar testes em todos os níveis antes do merge
  32. Globalcode – Open4education Já chegamos lá?

  33. Globalcode – Open4education Já chegamos lá? Não! Definimos OKRs para

    as melhorias técnicas Constante mentoria técnica em todos os papéis Trabalho em conjunto “Negócio x Técnico”
  34. Obrigado! SCAN ME Você pode me seguir no Twitter @eliasnogueira

    e também encontrar os exemplos práticos desta apresentação. Não deixe de simular os exemplos no código!