Share
Embed
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
Transcript
34 slides
-
Globalcode – Open4education A Saga para o “One Click Release”
Elias Nogueira @eliasnogueira -
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 -
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. -
Globalcode – Open4education Backend Engineers Frontend Engineers Quality Engineers TWO
PAIRS OF SPECIALIZED ENGINEER PER TEAM DELIVERING CLOUD-NATIVE APPS -
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 -
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 -
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 -
Globalcode – Open4education Testes que fazemos, e automatizamos Unit (backend,
frontend) Integration (backend, frontend) Database Testing Data migration Database upgrade API Functional E2E Web -
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 -
Globalcode – Open4education Passos não técnicos 3 amigos Sessões de
refinamento DOD para User Stories Totalmente testadas em todos os níveis -
Globalcode – Open4education Passos não técnicos User Story Acceptance Criteria
e2e Integration Unit Decisão compartilhada em onde testar Acceptance Criteria -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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) -
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 -
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” -
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!