Slide 1

Slide 1 text

Continuous Delivery

Slide 2

Slide 2 text

Vitor Nogueira 2

Slide 3

Slide 3 text

Disciplina de desenvolvimento de software em que você constrói o software de forma que possa ser liberado para produção a qualquer momento 3 https://martinfowler.com/bliki/ContinuousDelivery.html

Slide 4

Slide 4 text

X 4 Dev Ops

Slide 5

Slide 5 text

DevOps 5

Slide 6

Slide 6 text

DevOps é sobre colaboração e automação 6

Slide 7

Slide 7 text

Alinhamento & Autonomia 7

Slide 8

Slide 8 text

CI & CD 8

Slide 9

Slide 9 text

CI 9 Continuous Integration Integrar o código mais rápido possível garantindo a qualidade através da execução de testes de código de maneira automatizada

Slide 10

Slide 10 text

Automatizar processos para aumentar a velocidade de entrega com confiança e garantindo a qualidade 10

Slide 11

Slide 11 text

CD 11 Continuous Delivery Realizar entregas de valor de maneira automatizada após a integração do código mesmo que utilizando intervenção humana para iniciar o processo

Slide 12

Slide 12 text

Automatizar processos para aumentar a velocidade de entrega com confiança e garantindo a qualidade 12

Slide 13

Slide 13 text

CD 13 Continuous Deployment Fazer implementações automaticamente após a integração do código

Slide 14

Slide 14 text

Automatizar processos para aumentar a velocidade da entrega com confiança e garantindo a qualidade 14

Slide 15

Slide 15 text

CD X CD 15

Slide 16

Slide 16 text

Continuous Deployment significa que todas as alterações passam pelo pipeline e são automaticamente colocadas em produção, resultando em muitos deploys de produção todos os dias. 16 https://martinfowler.com/bliki/ContinuousDelivery.html

Slide 17

Slide 17 text

Continuous Delivery significa apenas que você pode fazer deploys frequentes, mas pode optar por não fazê-lo, geralmente devido às empresas que preferem uma taxa mais lenta de implantação 17 https://martinfowler.com/bliki/ContinuousDelivery.html

Slide 18

Slide 18 text

Na prática… … o que precisamos? 18

Slide 19

Slide 19 text

Como começar? 19

Slide 20

Slide 20 text

Garantir que todo código enviado para o repositório está pronto para produção 20

Slide 21

Slide 21 text

Automatizar processos 21 ● Padronização (lint) (eslint, rubocop, rubycritic) ● Segurança (brakeman, npm/yarn audit, snyk) ● Testes de unidade ● Testes de integração ● Cobertura de código (coverage) ● ...

Slide 22

Slide 22 text

Permitir um processo de deploy confiável e padronizado 22

Slide 23

Slide 23 text

Automatizar processos 23 ● Criação de ambiente (Infraestrutura como Código) ● Compilação de código ● Build de imagem Docker ● Push de imagem ● ...

Slide 24

Slide 24 text

Melhorar o fluxo de entrega de software 24

Slide 25

Slide 25 text

Evitar branchs com muito tempo de vida 25

Slide 26

Slide 26 text

Código na branch principal o mais rápido possível 26

Slide 27

Slide 27 text

27 https://trunkbaseddevelopment.com/

Slide 28

Slide 28 text

28 https://trunkbaseddevelopment.com/

Slide 29

Slide 29 text

29 https://trunkbaseddevelopment.com/

Slide 30

Slide 30 text

Implantações de baixo risco 30

Slide 31

Slide 31 text

Feature Toggles 31

Slide 32

Slide 32 text

32

Slide 33

Slide 33 text

33

Slide 34

Slide 34 text

34

Slide 35

Slide 35 text

35

Slide 36

Slide 36 text

36 Feature toggles decouple deployment of code from release of new features

Slide 37

Slide 37 text

Blue and Green Deployment 37

Slide 38

Slide 38 text

38

Slide 39

Slide 39 text

Canary Release 39

Slide 40

Slide 40 text

40

Slide 41

Slide 41 text

41

Slide 42

Slide 42 text

42

Slide 43

Slide 43 text

Conclusão 43

Slide 44

Slide 44 text

Colaboração antes de automação 44

Slide 45

Slide 45 text

Qualidade e segurança antes de velocidade 45

Slide 46

Slide 46 text

Automação é automatizar processos manuais 46

Slide 47

Slide 47 text

Valide os processos 47

Slide 48

Slide 48 text

Automatize os processos 48

Slide 49

Slide 49 text

Referências 49 ● GitLab CI/CD ● https://docs.gitlab.com/ee/ci/introduction/index.html#introduction-to-cicd-methodologies ● O que é Continuous Delivery, Continuous Integration e Continuous Deployment? ● What is Continuous Delivery? - Continuous Delivery ● Bitbucket Pipelines - Continuous Delivery ● GitHub Actions · GitHub ● Jenkins ● Drone CI – Automate Software Testing and Delivery ● CircleCI: Continuous Integration and Delivery ● Travis CI - Test and Deploy Your Code with Confidence ● Continuous Integration

Slide 50

Slide 50 text

Referências 50 ● ContinuousDelivery ● Continuous integration vs. continuous delivery vs. continuous deployment ● Why you should not use (long-lived) feature branches ● Long-lived branches with Gitflow | Technology Radar ● Trunk Based Development ● Feature Toggles! - Lucas Mazza ● jnunemaker/flipper: feature flipping for ruby (performant and simple) ● Continuous Integration: What is CI? Testing, Software & Process Tutorial ● Continuous Delivery Tutorial ● CI/CD Bitbucket Pipelines Reusable steps. Deploying to Kubernetes ● CI/CD DevOps: Explorando DevOps com foco em CI/CD

Slide 51

Slide 51 text

Referências 51 ● CanaryRelease ● DeploymentPipeline ● BlueGreenDeployment ● Feature Toggles (aka Feature Flags) ● Feature Flags in Nodejs + react. Enable continuous deployment and… | by Clément Walter | Sicara's blog ● Unleash/unleash: Unleash is the open source feature toggle service ● A Comprehensive Guide to Canary Releases | by Daniel Bryant