$30 off During Our Annual Pro Sale. View Details »

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

Elias Nogueira

December 02, 2021
Tweet

More Decks by Elias Nogueira

Other Decks in Technology

Transcript

  1. Globalcode – Open4education
    A Saga para o “One Click Release”
    Elias Nogueira
    @eliasnogueira

    View Slide

  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

    View Slide

  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.

    View Slide

  4. Globalcode – Open4education
    Foco

    View Slide

  5. Globalcode – Open4education
    Shift-Left Testing

    View Slide

  6. Globalcode – Open4education
    Shift-Left Testing

    View Slide

  7. Globalcode – Open4education
    Como estamos organizados

    View Slide

  8. Globalcode – Open4education
    Backend Engineers
    Frontend Engineers
    Quality Engineers
    TWO PAIRS OF
    SPECIALIZED
    ENGINEER PER
    TEAM DELIVERING
    CLOUD-NATIVE
    APPS

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  13. Globalcode – Open4education
    Testes que fazemos, e automatizamos
    Unit (backend, frontend)
    Integration (backend, frontend)
    Database Testing
    Data migration
    Database upgrade
    API
    Functional
    E2E
    Web

    View Slide

  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

    View Slide

  15. Globalcode – Open4education
    Passos não técnicos

    View Slide

  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

    View Slide

  17. Globalcode – Open4education
    Passos não técnicos
    User Story
    Acceptance
    Criteria
    e2e
    Integration
    Unit
    Decisão
    compartilhada
    em onde testar
    Acceptance
    Criteria

    View Slide

  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

    View Slide

  19. Globalcode – Open4education
    Automatizar primeiro!

    View Slide

  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

    View Slide

  21. Globalcode – Open4education
    Constante refatoramento

    View Slide

  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

    View Slide

  23. Globalcode – Open4education
    Arredores

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  30. Globalcode – Open4education
    Qual o nosso alvo?

    View Slide

  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

    View Slide

  32. Globalcode – Open4education
    Já chegamos lá?

    View Slide

  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”

    View Slide

  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!

    View Slide