Slide 1

Slide 1 text

Continuous Deployment A última fronteira da Entrega Contínua

Slide 2

Slide 2 text

Fernando Ike // linkedin.com/in/fernandoike // twitter.com/fernandoike

Slide 3

Slide 3 text

Lead Time

Slide 4

Slide 4 text

Lead Time For Product

Slide 5

Slide 5 text

Lead Time - Produto

Slide 6

Slide 6 text

Lead Time For Commit

Slide 7

Slide 7 text

Lead Time for Commit

Slide 8

Slide 8 text

Pipeline

Slide 9

Slide 9 text

Pipeline

Slide 10

Slide 10 text

Continuous Integration Continuous Delivery Continuous Deployment

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

O que é Continuous Integration?

Slide 13

Slide 13 text

“É uma prática na qual os membros de uma equipe integram o trabalho com frequência…” “Cada integração é verificada por uma build automatizada (incluindo testes) para identificar erros de integração o mais rápido possível” Continuous Integration - https://martinfowler.com/articles/continuousIntegration.html

Slide 14

Slide 14 text

O que é Continuous Delivery?

Slide 15

Slide 15 text

“É a capacidade de aplicar as alterações de todos os tipos - incluindo novos recursos, alterações de configurações, correções de bugs e experimentos - em produção ou nas mãos dos usuários, com segurança e rapidez, de maneira sustentável.” https://continuousdelivery.com/

Slide 16

Slide 16 text

O que é Continuous Deployment?

Slide 17

Slide 17 text

“Continuous deployment é a prática de liberar toda boa construção de artefato para os usuários” Jez Humble - Continuous Delivery vs Continuous Deployment

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Quais os principais estratégias?

Slide 20

Slide 20 text

Recreate/In-Place

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Recreate/In-Place Processo simplificado Não há múltiplas versões funcionando de forma concorrente Operação pode ser tornar complexa A aplicação fica indisponível no período da troca das versões Prós Contras

Slide 23

Slide 23 text

Rolling Deployment

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Rolling Deployment/Ramped Sem downtime Mitigação do risco de implementação, bugs podem ser identificados antes de completar o deploy em todas as instâncias. Rollback pode ser lento e complexo Retrocompatibilidade com versões anteriores (banco de dados, apis, etc.) Prós Contras

Slide 27

Slide 27 text

Blue/Green

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Blue/Green Sem downtime Rollback instantâneo Segregação de ambientes Necessário o dobro de recursos computacionais Retrocompatibilidade com versões anteriores (banco de dados, apis, etc.) Prós Contras

Slide 31

Slide 31 text

Canary

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

Canary Sem Downtime Testes com usuários de produção Rollback rápido Permite testar múltiplas versões em produção gerenciando tráfego entre elas Mais lento comparado com outras estratégias Os testes devem ter um monitoramento eficiente da infraestrutura envolvida e da stack da aplicação Aplicação e banco de dados preparados para suportar múltiplas versões Gerenciamento da transição (tráfego) é mais complexo Prós Contras

Slide 35

Slide 35 text

A/B Test

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

A/B Test Sem Downtime Testes com usuários de produção Permite múltiplas versões simultâneas Gerenciamento da distribuição de tráfego Rollback rápido Implementação Complexa Os testes devem ter um monitoramento eficiente da infraestrutura envolvida e da stack da aplicação Aplicação e banco de dados preparados para suportar múltiplas versões Gerenciamento da transição (tráfego) é mais complexo Prós Contras

Slide 38

Slide 38 text

Shadow

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Shadow Minimiza o impacto da aplicação em produção Possibilita testar as funcionalidades de backend usando o tráfego legítimo (produção) Cuidado com integração de terceiros que mudam os dados Aumenta a complexidade operacional Ele funciona melhor quando aplicado com outra estratégia como Canary Aumenta o custo de recursos computacionais Prós Contras

Slide 41

Slide 41 text

DarkLaunch

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

DarkLaunch Segrega deploy do release de novas funcionalidades Possibilita realizar testes por segmento de usuários Desabilita facilmente a funcionalidade via Feature Flag/Toggle Necessário implementar ciclo de vida da flag Aumenta a complexidade operacional Observabilidade (Monitoramento, Introspecção, centralização de logs) devem ser implementados para rastrear problemas. Arquitetura da aplicação deve suportar múltiplas versões concorrentes Prós Contras

Slide 45

Slide 45 text

Circles

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Circles Sem Downtime Testes com usuários de produção Permite múltiplas versões simultâneas Gerenciamento da distribuição de tráfego Rollback rápido Multinant Dependente de um orquestrador de container Arquitetura da aplicação deve suportar múltiplas versões concorrentes Aumenta a complexidade operacional Observabilidade (Monitoramento, Introspecção, centralização de logs) devem ser implementados para rastrear problemas. Prós Contras

Slide 49

Slide 49 text

Comparação entre as estratégias

Slide 50

Slide 50 text

Comparação de estratégias Estratégia Downtime Teste real de tráfego Usuário Alvos Custo de Recursos (servidores) Duração de Rollback Impacto para Usuário Complexidade para Implementar Complexidade Operacional Recreate/In-Place Não Não Não Baixo Alto Alto Muito Baixo Alto Rolling Deployment Sim Não Não Baixo Baixo Baixo Baixo Baixo Blue/Green Sim Não Não Alto Muito Baixo Médio Médio Médio Canary Sim Sim Não Baixo Baixo Baixo Médio Médio A/B Testing Sim Sim Sim Baixo Baixo Baixo Alto Alto Shadow Sim Sim Não Alto N/A Muito Baixo Alto Alto Dark Launch Sim Sim Sim Baixo Muito Baixo Baixo Alto Alto Circle Sim Sim Sim Baixo Baixo Baixo Médio Médio

Slide 51

Slide 51 text

Boas práticas Compatibilidade com versões anteriores CD²+CI Automação Gerenciamento de configuração (ambientes mais semelhantes possível) Estratégias de Rollback Observabilidade (Observability)

Slide 52

Slide 52 text

#VEMPRAZUP Temos vagas!! #VempraZup Tire foto do QR Code para ver as oportunidades. zup.com.br/vagas

Slide 53

Slide 53 text

Referências ● Livro Continuous Delivery ● Estratégias de implantação e teste de aplicativos ● Kubernetes Deployment Strategies ● Overview of Deployment Options on AWS ● Istio Mirror ● Ambassador - Traffic Shadow ● Martin Fowler - Continuous Integration ● Continuous Deployment vs Continuous Delivery ● Automating safe, hands-off deployments