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