Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous Deployment - A última fronteira do C...

Continuous Deployment - A última fronteira do Continuous Delivery

Apresentação sobre estratégia as principais estatégias de deploy, as vantagens e desvantagens, cenários de uso e boas práticas.

Fernando ike

June 24, 2020
Tweet

More Decks by Fernando ike

Other Decks in Technology

Transcript

  1. “É 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
  2. “É 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/
  3. “Continuous deployment é a prática de liberar toda boa construção

    de artefato para os usuários” Jez Humble - Continuous Delivery vs Continuous Deployment
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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)
  14. #VEMPRAZUP Temos vagas!! #VempraZup Tire foto do QR Code para

    ver as oportunidades. zup.com.br/vagas
  15. 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