Nunca fora do ar
Como manter uma aplicação sempre
disponível com Continuous Delivery

Giovanni Bassi
giovanni@lambda3.com....
@GiovanniBassi
 Escalador, ciclista, pai
 Lambda3
 Programador (a.k.a não gerente)










C#, Ruby, Node, Co...
Tenha cuidado,
posso ser eu na sua
frente
Uma empresa democrática
•
•
•
•

Sem gerentes ou estrutura hierárquica
Livros abertos
Decisões por consenso
100% ágil

htt...
Continuous Delivery
Primeiro princípio do manifesto
ágil

“Nossa maior prioridade é satisfazer o
cliente através da entrega contínua
(continuo...
Continuous Delivery
Software sempre pronto para ir para produção

Todo commit pode ir para produção sem
interferência do d...
Continuous Deployment
Não é Continuous Delivery 

É ir para produção a cada commit que passar nos
critérios de publicação...
Como fazer?
Testes automatizados
Integração contínua (build server, fast build, etc)
Branches de vida curta
Feature toggle...
Build
Um build por push (ou commit)
Testes rápidos rodam
Análises de código rodam
Scripts de deployment gerados
Dados de t...
Feature Toggles
Funcionalidade presente no código mas ainda não
finalizada fica desabilitada e pode ir para produção
Pode ...
Feature branches, do or do not?
Sem resposta simples, idealmente evite
Se existir, sempre de vida curta
Use pull requests
...
Releasing
Os resultados da compilação progridem de
ambiente para ambiente dentro do deployment
pipeline

Os resultados do ...
Deployment Pipeline
Deployment Pipeline

Ambiente mais parecido com produção
Mindset
Esse commit vai para
produção a qualquer
momento sem meu
envolvimento
Nunca fora do ar: green blue
deployment
Green blue deployments: nunca fora do
ar
Cada deploy sobe um ambiente completamente
novo
O ambiente antigo continua no ar
...
Aplicando green blue
deployment
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Green blue deployment:
testando em produção
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Green blue deployment
Servidor web

90%
MinhaEmpresa.com.br

10%

Servidor banco de
dados
Green blue deployment
Servidor web

90%
MinhaEmpresa.com.br

10%

Logs

Servidor banco de
dados
Green blue deployment
Servidor web

50%
MinhaEmpresa.com.br

50%

Servidor banco de
dados
Green blue deployment
Servidor web

50%
MinhaEmpresa.com.br

50%

Logs

Servidor banco de
dados
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Green blue deployment
Servidor web

MinhaEmpresa.com.br

Servidor banco de
dados
Dúvidas?
Giovanni Bassi
giovanni@lambda3.com.br
@giovannibassi
Obrigado!
Giovanni Bassi
giovanni@lambda3.com.br
@giovannibassi
www.lambda3.com.br
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery
Próximos SlideShares
Carregando em…5
×

Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery

1.995 visualizações

Publicada em

Palestra ministrada no Agile Vale 2013 sobre entrega continua, ou continuous delivery.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.995
No SlideShare
0
A partir de incorporações
0
Número de incorporações
682
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery

  1. 1. Nunca fora do ar Como manter uma aplicação sempre disponível com Continuous Delivery Giovanni Bassi giovanni@lambda3.com.br @giovannibassi
  2. 2. @GiovanniBassi  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...)
  3. 3. Tenha cuidado, posso ser eu na sua frente
  4. 4. Uma empresa democrática • • • • Sem gerentes ou estrutura hierárquica Livros abertos Decisões por consenso 100% ágil http://bit.ly/lambda3democracia
  5. 5. Continuous Delivery
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. Como fazer? Testes automatizados Integração contínua (build server, fast build, etc) Branches de vida curta Feature toggles One click deployment/rollback Binaries Repository Deployment pipeline Sempre produzindo código pronto para produção
  10. 10. Build Um build por push (ou commit) Testes rápidos rodam Análises de código rodam Scripts de deployment gerados Dados de testes preparados Repositório de binários recebe o resultado do build, dos script e dos dados
  11. 11. Feature Toggles Funcionalidade presente no código mas ainda não finalizada fica desabilitada e pode ir para produção Pode substituir o uso de branches Mais complexo de escrever e testar Pode ser feito facilmente “escondendo” uma funcionalidade Em alguns cenários não é possível usar
  12. 12. Feature branches, do or do not? Sem resposta simples, idealmente evite Se existir, sempre de vida curta Use pull requests Devem ser vistos como “ambientes de staging privados” * branches de ambiente (staging, UAT) são ok
  13. 13. 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
  14. 14. Deployment Pipeline
  15. 15. Deployment Pipeline Ambiente mais parecido com produção
  16. 16. Mindset Esse commit vai para produção a qualquer momento sem meu envolvimento
  17. 17. Nunca fora do ar: green blue deployment
  18. 18. Green blue deployments: nunca fora do ar Cada deploy sobe um ambiente completamente novo O ambiente antigo continua no ar O novo ambiente tem outro endereço Testes são feitos no novo endereço Se tudo estiver ok, vire o interruptor e desligue o ambiente antigo Suportado pelos principais provedores de cloud
  19. 19. Aplicando green blue deployment
  20. 20. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  21. 21. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  22. 22. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  23. 23. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  24. 24. Green blue deployment: testando em produção
  25. 25. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  26. 26. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  27. 27. Green blue deployment Servidor web 90% MinhaEmpresa.com.br 10% Servidor banco de dados
  28. 28. Green blue deployment Servidor web 90% MinhaEmpresa.com.br 10% Logs Servidor banco de dados
  29. 29. Green blue deployment Servidor web 50% MinhaEmpresa.com.br 50% Servidor banco de dados
  30. 30. Green blue deployment Servidor web 50% MinhaEmpresa.com.br 50% Logs Servidor banco de dados
  31. 31. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  32. 32. Green blue deployment Servidor web MinhaEmpresa.com.br Servidor banco de dados
  33. 33. Dúvidas? Giovanni Bassi giovanni@lambda3.com.br @giovannibassi
  34. 34. Obrigado! Giovanni Bassi giovanni@lambda3.com.br @giovannibassi
  35. 35. www.lambda3.com.br

×