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