Por: Felipe Rezende
DevCamp 2014
Quanto tempo seu time demora para colocar em produção uma modificação representada por apenas uma linha de código?” Essa palestra aborda os princípios e práticas do continuous delivery, além de uma visão global sobre o conceito, demonstrando o que empresas como Microsoft, Amazon e Facebook têm feito para reduzir o tempo entre a ideia e o software em produção. Temas como segregação de ambientes, automação de testes, continuous integration, continuous deployment, feature flags, % ramp up, a/b tests serão discutidos e demonstrados.
2. 2 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Sócio da especificacoes.com - Consultoria de ALM - e Sócio-Diretor de
Negócios na esx - empresa focada na entrega contínua de software de valor
através de desenvolvimento de software ágil.
Teve uma carreira em TI passando pelas áreas de desenvolvimento, testes,
requisitos, operação, consultoria de TI e negócio e consultoria em ALM.
Atuou em diversos projetos de clientes de grande porte e complexidade.
Engenheiro de Software formado pela Universidade Federal de Uberlândia, é
MCP (Microsoft Certified Professional) e certificado Scrum Master pela
Scrum.org.
Felipe Rezende – Sócio da esx
felipe.rezende@esx.com.br
@felipersb
3. 3 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
EVOLUÇÃO DAS APLICAÇÕES
4. 4 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
EVOLUÇÃO DAS APLICAÇÕES
MAINFRAME
5. 5 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
EVOLUÇÃO DAS APLICAÇÕES
CLIENT/SERVER
6. 6 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
EVOLUÇÃO DAS APLICAÇÕES
WEB
7. 7 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
EVOLUÇÃO DAS APLICAÇÕES
WEB 2.0 ...
8. 8 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
EVOLUÇÃO DAS APLICAÇÕES
WEB 2.0 ...
9. 9 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
DINAMISMO DOS NEGÓCIOS
10. 10 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Delivery - Business
Continuous Deployment - TI
Continuous Integration - Dev
CONTINUOUS DELIVERY
11. 11 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Vou contar a história de um time.
Um time normal, de pessoas normais, sem super-heróis!
Um time que só estava afim de fazer algo diferente.
Vou contar o percurso que este time percorreu para sair do zero até alcançar o estado de entrega contínua de software
de valor.
12. 12 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Definição da plataforma de ALM
Estruturação dos fontes no repositório
Continuous Delivery – Nível 100
Gestão de Fontes / SCM
13. 13 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Extreme Go Horse
EGH
Continuous Delivery – Nível 100
Metodologia
14. 14 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Delivery – Nível 100
Geração manual de builds ( F5 )
Deployment manual
Build Deploy Operate
15. 15 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
La Garantia Soy Yo
Continuous Delivery – Nível 100
Qualidade
16. 16 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Definidação da estratégia de branch
Release Branch
Definição de políticas de checkin
Code Analysis, Code Metrics, Rastreabilidade, Comentários
Continuous Delivery – Nível 200
Gestão de Fontes / SCM
17. 17 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Processo Ágil
SCRUM
Continuous Delivery – Nível 200
Metodologia
18. 18 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Automação de Build
Build noturno
Continuous Delivery – Nível 200
Build Deploy Operate
19. 19 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Descoberta das métricas de qualidade
Nível de cobertura por testes automatizados, análise estática de código, complexidade
ciclomática, profundidade de herança, acoplamento de classes, linhas de código
Início da escrita de testes unitários
Definição da 1ª meta do nível de cobertura de testes
Criação de planos e casos de testes funcionais
Cobertura dos principais cenários de negócio
Continuous Delivery – Nível 200
Qualidade
20. 20 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Integration
Todo mundo “comitando” na baseline todo dia
Continuous Delivery – Nível 300
Gestão de Fontes / SCM
21. 21 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Processo ágil fluido
Sistemas Complexos Adaptativos
Múltiplas causas por efeito, efeitos opostos, atraso entre causa e efeito
Mais pensamento estatístico / probabilístico, menos pensamento determinístico
Continuous Delivery – Nível 300
Metodologia
22. 22 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Integration
Gatilho da automação de build
Continuous Delivery – Nível 300
Build Deploy Operate
23. 23 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Avaliação contínua das métricas de qualidade
Maintainability Index, nível de cobertura de testes automatizados
Automação dos casos de testes
Testes de interface automatizados
Continuous Delivery – Nível 300
Qualidade
24. 24 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Gestão madura dos fontes
Continuous Delivery – Nível 400
Gestão de Fontes / SCM
25. 25 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Kanban
Mais gestão de throughput e leadtime, menos gestão de ocupação
Utilização de conceitos como
liquidez, gargalo, sistema puxado, classes de serviços, depreciação,
custo de atraso, LRM (last responsible moment), MTTR (main time to repair)
Management 3.0
energize, empower, align constraints, develop competences, grow, improve
Continuous Delivery – Nível 400
Metodologia
26. 26 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Deployment
Distribuição automatizada para ambientes de homologação através
da integração contínua
Build Test Deploy
Gerenciamento automático dos ambientes de teste
One-click Deploy
para ambiente de produção
Continuous Delivery – Nível 400
Build Deploy Operate
27. 27 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Feedback
TDD, Pair Programming, Code Review, User Feedback
Análise de Impacto
Continuous Delivery – Nível 400
Qualidade
28. 28 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Políticas de branch definidas
Estratégia de branch: No Branch
Feature Flags
Off, on, staff, user-list
Users ramp-up
0-100%, A/B Test
Continuous Delivery – Nível 500
Gestão de Fontes / SCM
29. 29 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
ShuHaRi
Desapego
Continuous Improvment
Build-Meassure-Learn, Kaizen
Felicidade
Happiness Index, Kudobox, Moving Motivators
Continuous Delivery – Nível 500
Metodologia
30. 30 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Delivery
Distribuição automatizada para ambiente de produção através da
integração contínua
DevOps
Monitoramento de aplicações críticas em produção
Information Radiators
Dashboards e alertas
Continuous Delivery – Nível 500
Build Deploy Operate
31. 31 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Definition of Ready + Definition of Done
Quality Enablement
Só comitta com teste unitário, funcional, regressão, code review,
definition of done, acceptance criteria
Eventual teste de carga
Continuous Delivery – Nível 500
Qualidade
32. 32 | Continuous Delivery – do zero à entrega contínua de software de valor – Felipe Rezende – DevCamp 2014
Continuous Delivery – Nível 500
Qualidade
33. “We don’t optimize for being right. We optimize for
quickly detecting when we’re wrong.”
Kellan Elliott-McCrea, CTO Etsy.com