nunca fora do ar: como manter uma aplicação sempre disponível com continuous delivery
DESCRIPTION
Palestra ministrada no Agile Vale 2013 sobre entrega continua, ou continuous delivery.TRANSCRIPT
![Page 1: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/1.jpg)
Giovanni [email protected]
@giovannibassi
Nunca fora do arComo manter uma aplicação sempre disponível com Continuous Delivery
![Page 2: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/2.jpg)
Escalador, ciclista, pai Lambda3 Programador (a.k.a não gerente)
C#, Ruby, Node, Coffeescript, Powershell, Bash... OO, Funcional, Estática, Dinâmica... Linux, Windows Desktop, web, mobile, game...
Fundou o .NET Architects Tecnoretórica, blog, palestras, artigos, MVP… Trouxe a Scrum.org pro Brasil Gosta de “humanas” (gestão, coaching, psicologia...)
@GiovanniBassi
![Page 3: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/3.jpg)
Tenha cuidado, posso ser eu na sua
frente
![Page 4: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/4.jpg)
![Page 5: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/5.jpg)
http://bit.ly/lambda3democracia
Uma empresa democrática• Sem gerentes ou estrutura hierárquica• Livros abertos• Decisões por consenso• 100% ágil
![Page 6: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/6.jpg)
Continuous Delivery
![Page 7: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/7.jpg)
Primeiro princípio do manifesto ágil“Nossa maior prioridade é satisfazer o cliente através da entrega contínua (continuous delivery) e adiantada de software com valor agregado.”
http://agilemanifesto.org/principles.html
![Page 8: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/8.jpg)
Continuous Delivery
Software sempre pronto para ir para produção
Todo commit pode ir para produção sem interferência do desenvolvedor
Decisão de ir pra produção vem do negócio, não de TI
![Page 9: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/9.jpg)
Continuous Deployment
Não é Continuous Delivery
É ir para produção a cada commit que passar nos critérios de publicação
Continuous Deployment demanda Continuous Delivery
![Page 10: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/10.jpg)
Como fazer?Testes automatizadosIntegração contínua (build server, fast build, etc)Branches de vida curtaFeature togglesOne click deployment/rollbackBinaries RepositoryDeployment pipelineSempre produzindo código pronto para produção
![Page 11: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/11.jpg)
Build
Um build por push (ou commit)Testes rápidos rodamAnálises de código rodamScripts de deployment geradosDados de testes preparadosRepositório de binários recebe o resultado do build, dos script e dos dados
![Page 12: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/12.jpg)
Feature Toggles
Funcionalidade presente no código mas ainda não finalizada fica desabilitada e pode ir para produçãoPode substituir o uso de branchesMais complexo de escrever e testarPode ser feito facilmente “escondendo” uma funcionalidadeEm alguns cenários não é possível usar
![Page 13: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/13.jpg)
Feature branches, do or do not?
Sem resposta simples, idealmente eviteSe existir, sempre de vida curtaUse pull requestsDevem ser vistos como “ambientes de staging privados”
* branches de ambiente (staging, UAT) são ok
![Page 14: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/14.jpg)
Releasing
Os resultados da compilação progridem de ambiente para ambiente dentro do deployment pipeline
Os resultados do build são usados durante todo o processo, nunca o build é refeito
Ambientes idealmente são sempre criados do zero
![Page 15: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/15.jpg)
Deployment Pipeline
![Page 16: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/16.jpg)
Deployment Pipeline
Ambiente mais parecido com produção
![Page 17: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/17.jpg)
Esse commit vai para produção a qualquer momento sem meu
envolvimento
Mindset
![Page 18: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/18.jpg)
Nunca fora do ar: green blue deployment
![Page 19: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/19.jpg)
Green blue deployments: nunca fora do arCada deploy sobe um ambiente completamente novoO ambiente antigo continua no arO novo ambiente tem outro endereçoTestes são feitos no novo endereçoSe tudo estiver ok, vire o interruptor e desligue o ambiente antigoSuportado pelos principais provedores de cloud (AWS e Azure)
![Page 20: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/20.jpg)
Aplicando green blue deployment
![Page 21: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/21.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Banco de dados verde
MinhaEmpresa.com.br
![Page 22: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/22.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
![Page 23: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/23.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
![Page 24: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/24.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server azul
Banco de dados azul
MinhaEmpresa.com.br
![Page 25: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/25.jpg)
Green blue deployment: testando
em produção
![Page 26: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/26.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Banco de dados verde
MinhaEmpresa.com.br
![Page 27: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/27.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
![Page 28: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/28.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
90%
10%
![Page 29: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/29.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
90%
10%
Logs
![Page 30: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/30.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
50%
50%
![Page 31: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/31.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
50%
50%
Logs
![Page 32: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/32.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Web server azul
Banco de dados verde
Banco de dados azul
MinhaEmpresa.com.br
![Page 33: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery](https://reader035.vdocuments.pub/reader035/viewer/2022062419/558fc3521a28abcd668b47d5/html5/thumbnails/33.jpg)
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server azul
Banco de dados azul
MinhaEmpresa.com.br