36
Giovanni Bassi [email protected] @giovannibassi Nunca fora do a Como manter uma aplicação sempre disponível com Continuous Delivery

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

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
Page 5: Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous Delivery

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

Continuous Delivery

Page 7: Nunca fora do ar: como manter uma aplicação sempre disponível com 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

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

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

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

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

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

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

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

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

Deployment Pipeline

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

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

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

Nunca fora do ar: green blue deployment

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

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

Aplicando green blue deployment

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

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

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

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

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

Green blue deployment: testando

em produção

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

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

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

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

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

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

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

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

Servidor banco de dados

Servidor web

Green blue deployment

Roteador

Web server azul

Banco de dados azul

MinhaEmpresa.com.br

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

Giovanni [email protected]

@giovannibassi

Dúvidas?

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

Giovanni [email protected]

@giovannibassi

Obrigado!

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

www.lambda3.com.br