continuous delivery

Post on 09-Apr-2017

209 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CONTINUOUS DELIVERYENTREGANDO SOFTWARES CONFIÁVEIS

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

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

QUANTO TEMPO VOCÊ PRECISA DEIXAR UM SERVIDOR NOVO OPERACIONAL?

LEONARDO BERNARDELLI@lbenardelli

CONTINUOUS DELIVERY

SE SUAS RESPOSTAS FORAM…

▸ Menos que 1 vez ao dia

▸ Mais que 5 minutos

▸ Mais que 5 minutos

Precisamos conversar

METODOLOGIAS ÁGEIS

O ANTES E O DEPOIS

AGILE 101

customer

ANALISE E DESIGN

DEVELOPMENT

TESTES + SHOWCASE

Agile Team

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

Operações

The last mileIterações

WEB 2.0

QUEBRANDO A BARREIRA DE NEGÓCIOS TRADICIONAIS

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

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

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

COMO FUNCIONA?

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

RELEASES FREQUENTES

▸ Feedback dos usuários

▸ Redução dos riscos da release

Changes

Tempo

}

}

deploys frequentes

pequenas modificações

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

Agile Manifesto

RELEASES FREQUENTES

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO MUITOS PROCESSOS MANUAIS

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO MUITOS PROCESSOS MANUAIS

CONTINUOUS DELIVERY

LEAD TIME MUITO DEMORADO

LAST MILE É MUITO PENOSA

POUCA COLABORAÇÃO MUITOS PROCESSOS MANUAIS

ESTRUTURA ORGANIZACIONAL FALTA DE CONHECIMENTO

CONTINUOUS DELIVERY

O IDEAL

CONTINUOUS DELIVERY

O IDEAL

▸ O código sempre production-ready

CONTINUOUS DELIVERY

O IDEAL

▸ O código sempre production-ready

▸ Processo de deploy confiável

CONTINUOUS DELIVERY

O IDEAL

▸ O código sempre production-ready

▸ Processo de deploy confiável

▸ Qualquer pessoa é elegível a realizar o deploy

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

CONTINUOUS DELIVERY

PRINCÍPIOS

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

Ambientes de provisionamento Database migrations

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Automatize tudo que for possível

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Build, deploy, test, release

CONTINUOUS DELIVERY

PRINCÍPIOS

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

CONTINUOUS DELIVERY

PRINCÍPIOS

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

CONTINUOUS DELIVERY

PRINCÍPIOS

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

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ DONE means released

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Todo mundo é responsável pelo deploy

CONTINUOUS DELIVERY

PRINCÍPIOS

▸ Melhoria contínua

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in TriggerFeedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in TriggerFeedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Check in

Feedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

TriggerCheck in

Feedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

TriggerCheck in

Feedback

Feedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

Feedback

Feedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

FeedbackFeedback

Feedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

FeedbackFeedback

Feedback

CONTINUOUS DELIVERY

DEPLOYMENT PIPELINE

DELIVERY TEAM VERSION CONTROL UNIT TEST ACCEPTANCE

TESTUSER

ACCEPTANCE RELEASE

Check in Trigger

Trigger TriggerCheck in

Check in

FeedbackFeedback

Feedback

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

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

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

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

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

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

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

DEPLOYMENT PIPELINE

COMMIT STAGE

▸ Inicia depois de todo check-in

▸ Cria um release candidate

▸ Se falhar, corrija imediatamente

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

DEPLOYMENT PIPELINE

MANUAL STAGE

▸ UAT, staging, produção, PCI

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

CONTINUOUS DELIVERY

TESTES SÃO ESSENCIAIS NO PROCESSO

CONTINUOUS INTEGRATION E FEATURE BRANCH

TODOS COMMITAM NO TRUNK TODOS OS DIAS

CONTINUOUS DELIVERY

FEATURE BRANCH

CONTINUOUS DELIVERY

FEATURE BRANCH

MERGE

CONTINUOUS DELIVERY

FEATURE TOGGLES

▸ Togglz - Features flag for Java

▸ Feature Flipping 4 JAVA

▸ rollout gem

▸ feature gem

▸ chili gem

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface Implementa

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

Interface

CONTINUOUS DELIVERY

BRANCH BY ABSTRACTION

Aplicação

Componente 2

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

CONTINUOUS DELIVERY

GOING LIVE

É SOMENTE MAIS UM DEPLOY

CONTINUOUS DELIVERY

RELEASE PLAN

▸ Procedimento de deploy

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

▸ Remediation plan

▸ Ensaio do procedimento de deploy

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

blue-green deploymentcanary releases

dark launching

production immune system

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

BLUE-GREEN DEPLOYMENTS

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

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

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

CANARY RELEASING

ROUTER

web server app server db server

V1.1 V1.1 V1.1

V1.2 V1.2 V1.2

CONTINUOUS DELIVERY

CANARY RELEASING

▸ Redução do risco da release

▸ Multi-variant testing

▸ Facilita testes de performance com dados reais

CONTINUOUS DELIVERY

IMMUNE SYSTEM

CONTINUOUS DELIVERY

IMMUNE SYSTEM

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

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

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

CONTINUOUS DELIVERY

DARK LAUNCHING

▸ Evita bastante a necessidade de rollback

▸ Possibilidade de liberar uma feature para um subset de pessoas

COMPROMETA-SE A FAZER PROGRESSOS CONSTANTES

ESPERE POR OBSTÁCULOS

TESTES INTERMITENTES SÃO MUITO CUSTOSOS

CONTINUOUS DELIVERY

BANCO DE DADOS

▸ dbdeploy

▸ flyway

▸ migrations

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

Get empowered!

OBRIGADO!

top related