$30 off During Our Annual Pro Sale. View Details »

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.

Fernando ike

June 24, 2020
Tweet

More Decks by Fernando ike

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. Lead Time

    View Slide

  4. Lead Time For Product

    View Slide

  5. Lead Time - Produto

    View Slide

  6. Lead Time For Commit

    View Slide

  7. Lead Time for Commit

    View Slide

  8. Pipeline

    View Slide

  9. Pipeline

    View Slide

  10. Continuous Integration
    Continuous Delivery
    Continuous Deployment

    View Slide

  11. View Slide

  12. O que é Continuous Integration?

    View Slide

  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

    View Slide

  14. O que é Continuous Delivery?

    View Slide

  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/

    View Slide

  16. O que é Continuous Deployment?

    View Slide

  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

    View Slide

  18. View Slide

  19. Quais os principais
    estratégias?

    View Slide

  20. Recreate/In-Place

    View Slide

  21. View Slide

  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

    View Slide

  23. Rolling Deployment

    View Slide

  24. View Slide

  25. View Slide

  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

    View Slide

  27. Blue/Green

    View Slide

  28. View Slide

  29. View Slide

  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

    View Slide

  31. Canary

    View Slide

  32. View Slide

  33. View Slide

  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

    View Slide

  35. A/B Test

    View Slide

  36. View Slide

  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

    View Slide

  38. Shadow

    View Slide

  39. View Slide

  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

    View Slide

  41. DarkLaunch

    View Slide

  42. View Slide

  43. View Slide

  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

    View Slide

  45. Circles

    View Slide

  46. View Slide

  47. View Slide

  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

    View Slide

  49. Comparação entre as
    estratégias

    View Slide

  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

    View Slide

  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)

    View Slide

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

    View Slide

  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

    View Slide