Continuous Deployment - A última fronteira do Continuous Delivery

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.

168c322e7157a4cfffdeb88ab2309e02?s=128

Fernando ike

June 24, 2020
Tweet

Transcript

  1. Continuous Deployment A última fronteira da Entrega Contínua

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

  3. Lead Time

  4. Lead Time For Product

  5. Lead Time - Produto

  6. Lead Time For Commit

  7. Lead Time for Commit

  8. Pipeline

  9. Pipeline

  10. Continuous Integration Continuous Delivery Continuous Deployment

  11. None
  12. O que é Continuous Integration?

  13. “É 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
  14. O que é Continuous Delivery?

  15. “É 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/
  16. O que é Continuous Deployment?

  17. “Continuous deployment é a prática de liberar toda boa construção

    de artefato para os usuários” Jez Humble - Continuous Delivery vs Continuous Deployment
  18. None
  19. Quais os principais estratégias?

  20. Recreate/In-Place

  21. None
  22. 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
  23. Rolling Deployment

  24. None
  25. None
  26. 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
  27. Blue/Green

  28. None
  29. None
  30. 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
  31. Canary

  32. None
  33. None
  34. 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
  35. A/B Test

  36. None
  37. 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
  38. Shadow

  39. None
  40. 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
  41. DarkLaunch

  42. None
  43. None
  44. 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
  45. Circles

  46. None
  47. None
  48. 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
  49. Comparação entre as estratégias

  50. 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
  51. 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)
  52. #VEMPRAZUP Temos vagas!! #VempraZup Tire foto do QR Code para

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