Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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.

Slide 4

Slide 4 text

Globalcode – Open4education Foco

Slide 5

Slide 5 text

Globalcode – Open4education Shift-Left Testing

Slide 6

Slide 6 text

Globalcode – Open4education Shift-Left Testing

Slide 7

Slide 7 text

Globalcode – Open4education Como estamos organizados

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Globalcode – Open4education O que estamos tentando alcançar

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Globalcode – Open4education Passos não técnicos

Slide 16

Slide 16 text

Globalcode – Open4education Passos não técnicos 3 amigos Sessões de refinamento DOD para User Stories Totalmente testadas em todos os níveis

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Globalcode – Open4education Automatizar primeiro!

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Globalcode – Open4education Constante refatoramento

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Globalcode – Open4education Arredores

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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)

Slide 30

Slide 30 text

Globalcode – Open4education Qual o nosso alvo?

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Globalcode – Open4education Já chegamos lá?

Slide 33

Slide 33 text

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”

Slide 34

Slide 34 text

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!