119
CONTINUOUS DELIVERY ENTREGANDO SOFTWARES CONFIÁVEIS

Continuous delivery

Embed Size (px)

Citation preview

Page 1: Continuous delivery

CONTINUOUS DELIVERYENTREGANDO SOFTWARES CONFIÁVEIS

Page 2: Continuous delivery

COM QUAL FREQUÊNCIA VOCÊ ENTREGA SOFTWARE PARA SEUS CLIENTES?

Page 3: Continuous delivery

QUANTO TEMPO VOCÊ PRECISA PARA 1 LINHA DE CÓDIGO SER REFLETIDA EM PRODUÇÃO?

Page 4: Continuous delivery

QUANTO TEMPO VOCÊ PRECISA DEIXAR UM SERVIDOR NOVO OPERACIONAL?

Page 5: Continuous delivery

LEONARDO BERNARDELLI@lbenardelli

Page 6: Continuous delivery

CONTINUOUS DELIVERY

SE SUAS RESPOSTAS FORAM…

▸ Menos que 1 vez ao dia

▸ Mais que 5 minutos

▸ Mais que 5 minutos

Page 7: Continuous delivery

Precisamos conversar

Page 8: Continuous delivery

METODOLOGIAS ÁGEIS

O ANTES E O DEPOIS

Page 9: Continuous delivery

AGILE 101

customer

ANALISE E DESIGN

DEVELOPMENT

TESTES + SHOWCASE

Agile Team

INTEGRAÇÃO + QA DEPLOY E OPERAÇÕES

Operações

The last mileIterações

Page 10: Continuous delivery

WEB 2.0

QUEBRANDO A BARREIRA DE NEGÓCIOS TRADICIONAIS

http://www.slideshare.net/beamrider9/continuous-deployment-at-etsy-a-tale-of-two-approaches

Page 11: Continuous delivery

WEB 2.0

QUEBRANDO A BARREIRA DE NEGÓCIOS TRADICIONAIS

▸ Etsy faz, pelo menos, 25 deploys por dia

http://www.slideshare.net/beamrider9/continuous-deployment-at-etsy-a-tale-of-two-approaches

Page 12: Continuous delivery

WEB 2.0

QUEBRANDO A BARREIRA DE NEGÓCIOS TRADICIONAIS

▸ Etsy faz, pelo menos, 25 deploys por dia

▸ Em 2012 fez 6419 deploys

▸ + 3851 configurações alteradas

▸ 196 pessoas diferentes fizeram deploys em produção

▸ Nov/Dez tiveram 752 deploys

http://www.slideshare.net/beamrider9/continuous-deployment-at-etsy-a-tale-of-two-approaches

Page 13: Continuous delivery

COMO FUNCIONA?

Page 14: Continuous delivery

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Page 15: Continuous delivery

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

Page 16: Continuous delivery

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

Page 17: Continuous delivery

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

Page 18: Continuous delivery

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

}

}

deploys frequentes

pequenas modificações

Page 19: Continuous delivery

OUR HIGHEST PRIORITY IS TO SATISFY THE CUSTOMER THROUGH EARLY AND CONTINUOUS DELIVERY OF VALUABLE SOFTWARE.

Agile Manifesto

RELEASES FREQUENTES

Page 20: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

Page 21: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

Page 22: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

Page 23: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

Page 24: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO

Page 25: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO

Page 26: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO MUITOS PROCESSOS MANUAIS

Page 27: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO MUITOS PROCESSOS MANUAIS

Page 28: Continuous delivery

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO MUITOS PROCESSOS MANUAIS

ESTRUTURA ORGANIZACIONAL FALTA DE CONHECIMENTO

Page 29: Continuous delivery

CONTINUOUS DELIVERY

O IDEAL

Page 30: Continuous delivery

CONTINUOUS DELIVERY

O IDEAL

▸ O código sempre production-ready

Page 31: Continuous delivery

CONTINUOUS DELIVERY

O IDEAL

▸ O código sempre production-ready

▸ Processo de deploy confiável

Page 32: Continuous delivery

CONTINUOUS DELIVERY

O IDEAL

▸ O código sempre production-ready

▸ Processo de deploy confiável

▸ Qualquer pessoa é elegível a realizar o deploy

Page 33: Continuous delivery

CONTINUOUS DELIVERY

O IDEAL

▸ O código sempre production-ready

▸ Processo de deploy confiável

▸ Qualquer pessoa é elegível a realizar o deploy

▸ Os releases acontecem de acordo com as necessidades do negócio

Page 34: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Crie um processo confiável e repetitivo para “deployar" software

Ambientes de provisionamento Database migrations

Page 35: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Automatize tudo que for possível

Page 36: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Build, deploy, test, release

Page 37: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Crie um mecanismo de aprovação para testes manuais

Page 38: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Mantenha tudo relativo ao software no controle de versão

Page 39: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Se tem alguma parte do processo que é penosa, faça-a mais vezes e traga a dor a primeiro plano

Page 40: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ DONE means released

Page 41: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Todo mundo é responsável pelo deploy

Page 42: Continuous delivery

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Melhoria contínua

Page 43: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Page 44: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in

Page 45: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Page 46: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in TriggerFeedback

Page 47: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in TriggerFeedback

Page 48: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Check in

Feedback

Page 49: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

TriggerCheck in

Feedback

Page 50: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

TriggerCheck in

Feedback

Feedback

Page 51: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

Feedback

Feedback

Page 52: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

FeedbackFeedback

Feedback

Page 53: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

FeedbackFeedback

Feedback

Page 54: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

Check in

FeedbackFeedback

Feedback

Page 55: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger

Trigger

TriggerCheck in

Check in

FeedbackFeedback

Feedback

Page 56: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger

Trigger

TriggerCheck in

Check in

Feedback

Feedback

Feedback

Feedback

Page 57: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger

Trigger

Trigger

Trigger

Check in

Check in

Feedback

Feedback

Feedback

Feedback

Page 58: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger

Trigger

Trigger

Trigger

Check in

Check in

Feedback

FeedbackFeedback

Feedback

Feedback

Page 59: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger

Trigger

Trigger

Trigger

Aprovação

Check in

Check in

Feedback

FeedbackFeedback

Feedback

Feedback

Page 60: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger

Trigger

Trigger

Trigger

Aprovação

Check in

Check in

Feedback

Feedback

Feedback

Feedback

Feedback

Feedback

Page 61: Continuous delivery

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger

Trigger

Trigger

Trigger

Aprovação Aprovação

Check in

Check in

Feedback

Feedback

Feedback

Feedback

Feedback

Feedback

Page 62: Continuous delivery

DEPLOYMENT PIPELINE

COMMIT STAGE

▸ Inicia depois de todo check-in

▸ Cria um release candidate

▸ Se falhar, corrija imediatamente

Page 63: Continuous delivery

DEPLOYMENT PIPELINE

ACCEPTANCE STAGE

▸ Testes end-to-end em ambiente cópia de produção

▸ É executado assim que o commit stage está ok

▸ Se falhar, corrija imediatamente

Page 64: Continuous delivery

DEPLOYMENT PIPELINE

MANUAL STAGE

▸ UAT, staging, produção, PCI

▸ O processo é ativado através de um acionamento manual

Page 65: Continuous delivery

CONTINUOUS DELIVERY

TESTES SÃO ESSENCIAIS NO PROCESSO

Page 66: Continuous delivery

CONTINUOUS INTEGRATION E FEATURE BRANCH

Page 67: Continuous delivery

TODOS COMMITAM NO TRUNK TODOS OS DIAS

Page 68: Continuous delivery

CONTINUOUS DELIVERY

FEATURE BRANCH

Page 69: Continuous delivery

CONTINUOUS DELIVERY

FEATURE BRANCH

MERGE

Page 70: Continuous delivery

CONTINUOUS DELIVERY

FEATURE TOGGLES

▸ Togglz - Features flag for Java

▸ Feature Flipping 4 JAVA

▸ rollout gem

▸ feature gem

▸ chili gem

Page 71: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Page 72: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Page 73: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface

Page 74: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

Page 75: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

Page 76: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

Page 77: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

Page 78: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

Page 79: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

Page 80: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface Implementa

Page 81: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface Implementa

Page 82: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface Implementa

Page 83: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface

Page 84: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface

Page 85: Continuous delivery

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Page 86: Continuous delivery

CONTINUOUS DELIVERY

COMPONENTES

▸ Parte de seu sistema pode ser trocado por uma outra implementação

▸ Deixa sua aplicação mais manutenível (melhor encapsulamento e baixo acoplamento)

▸ Deixa a aplicação mais fácil de testar e buildar

Page 87: Continuous delivery

CONTINUOUS DELIVERY

GOING LIVE

É SOMENTE MAIS UM DEPLOY

Page 88: Continuous delivery

CONTINUOUS DELIVERY

RELEASE PLAN

▸ Procedimento de deploy

▸ Smoke test da aplicação e dos serviços dependentes

▸ Remediation plan

▸ Ensaio do procedimento de deploy

Page 89: Continuous delivery

RELEASES COM POUCO RISCO SÃO AQUELAS FEITAS DE FORMA INCREMENTAL

blue-green deploymentcanary releases

dark launching

production immune system

Page 90: Continuous delivery

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

Page 91: Continuous delivery

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

Page 92: Continuous delivery

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

Page 93: Continuous delivery

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 94: Continuous delivery

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 95: Continuous delivery

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 96: Continuous delivery

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

V1.2 V1.2 V1.2

Page 97: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

Page 98: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 99: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 100: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 101: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 102: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 103: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

Page 104: Continuous delivery

CONTINUOUS DELIVERY

CANARY RELEASING

▸ Redução do risco da release

▸ Multi-variant testing

▸ Facilita testes de performance com dados reais

Page 105: Continuous delivery

CONTINUOUS DELIVERY

IMMUNE SYSTEM

Page 106: Continuous delivery

CONTINUOUS DELIVERY

IMMUNE SYSTEM

▸ Imagine que alguém substituiu o botão de finalizar compra por uma imagem em branco.

Page 107: Continuous delivery

CONTINUOUS DELIVERY

IMMUNE SYSTEM

▸ Imagine que alguém substituiu o botão de finalizar compra por uma imagem em branco.

▸ Imagine que você subiu a aplicação e no smoke test foi tudo ok, mas depois de algumas horas o sistema começa a degradar

Page 108: Continuous delivery

http://www.slideshare.net/bgdurrett/continuous-deployment-at-lean-la

Page 109: Continuous delivery

CONTINUOUS DELIVERY

DARK LAUNCHING

▸ Evita bastante a necessidade de rollback

▸ Possibilidade de liberar uma feature para um subset de pessoas

Page 110: Continuous delivery
Page 111: Continuous delivery

COMPROMETA-SE A FAZER PROGRESSOS CONSTANTES

Page 112: Continuous delivery

ESPERE POR OBSTÁCULOS

Page 113: Continuous delivery

TESTES INTERMITENTES SÃO MUITO CUSTOSOS

Page 114: Continuous delivery

CONTINUOUS DELIVERY

BANCO DE DADOS

▸ dbdeploy

▸ flyway

▸ migrations

Page 115: Continuous delivery

CONTINUOUS DELIVERY

BANCO DE DADOS PRECISAM DE ATENÇÃO

▸ Seja rigoroso com os scripts de banco

▸ Sempre faça o que for dolorosos primeiro

▸ Faça refactoring do banco de dados

Page 116: Continuous delivery

Get empowered!

Page 117: Continuous delivery
Page 118: Continuous delivery
Page 119: Continuous delivery

OBRIGADO!