Giovanni [email protected]
@giovannibassi
Nunca fora do arComo manter uma aplicação sempre disponível com Continuous Delivery
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
Tenha cuidado, posso ser eu na sua
frente
http://bit.ly/lambda3democracia
Uma empresa democrática• Sem gerentes ou estrutura hierárquica• Livros abertos• Decisões por consenso• 100% ágil
Continuous Delivery
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
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
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
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
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
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
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
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
Deployment Pipeline
Deployment Pipeline
Ambiente mais parecido com produção
Esse commit vai para produção a qualquer momento sem meu
envolvimento
Mindset
Nunca fora do ar: green blue deployment
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)
Aplicando green blue deployment
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Banco de dados verde
MinhaEmpresa.com.br
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
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
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server azul
Banco de dados azul
MinhaEmpresa.com.br
Green blue deployment: testando
em produção
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server verde
Banco de dados verde
MinhaEmpresa.com.br
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
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%
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
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%
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
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
Servidor banco de dados
Servidor web
Green blue deployment
Roteador
Web server azul
Banco de dados azul
MinhaEmpresa.com.br
www.lambda3.com.br