2. 2
Quem somos
Altamir
• 21 anos de TI
• 5 anos de agilidade
• 4 anos com automação e
Integração Contínua
• 2 anos de CWI
2 projetos na CWI com
Integração Contínua
Alexandre
• 14 anos de TI
• 4 anos de agilidade
• 3 anos com Integração
Contínua
• 4 anos de CWI
8 projetos na CWI com
Integração Contínua em 6
clientes
5. 5
O que é – By the book
“Integração Contínua é uma pratica de desenvolvimento de
software onde os membros de um time integram seu trabalho
frequentemente, geralmente cada pessoa integra pelo menos
diariamente – podendo haver múltiplas integrações por dia.
Cada integração é verificada por um build automatizado
(incluindo testes) para detectar erros de integração o mais
rápido possível. Muitos times acham que essa abordagem leva
a uma significante redução nos problemas de integração e
permite que um time desenvolva software coeso mais
rapidamente.”
- Martin Fowler, Chief Scientist, ThoughtWorks
6. 6
O que é – Níveis de maturidade
Code Build Integrate Test Release Deploy Operate
Development
Continuous Integration
Continuous Delivery
Continuous Deployment
11. 11
Custos-benefícios
“Continuous Integration doesn’t get rid of bugs,
but it does make them dramatically easier to
find and remove.”
- Martin Fowler, Chief Scientist, ThoughtWorks
“Integração Contínua não te livra dos bugs, mas
torna o processo de encontrar e resolver
drasticamente mais fácil” – Tradução livre
13. 13
Quando usar/recomendar
• Quando você disponibiliza um serviço online (Web,
SaaS, Apis)
• Novas funcionalidades com urgência
• Quando o tempo para entrega é muito extenso
• Quando o projeto é para uma startup
• Quando a equipe de DEV é relativamente grande
• Quando o projeto necessita de correções frequentes
de segurança
14. 14
Onde a CWI já está usando
Unimed POA / Mais Unimed
• Jenkins como ferramenta de integração contínua
• O servidor fica no cliente
• Usado para:
• Automatização do Build
• Deploy
• Testes
• Usado a mais de 2 anos
• Todo o processo roda em 40 minutos, executando 41 casos de testes de aceitação
(13 processos de negócios diferentes)
• Segundo Diego Haggstron (CWI) "Queremos atingir um percentual maior de
cobertura de testes de aceitação."
15. 15
Onde a CWI já está usando
Lojas Renner (todos os projetos)
• Jenkins como ferramenta de integração contínua
• O servidor fica na CWI
• Usado para garantir:
• Qualidade do código produzido
• Cobertura de testes unitários
• Usam desde o início do projeto
• Todo o processo roda em 10 minutos
• Segundo Gustavo Jotz (CWI) "Conseguimos manter uma qualidade e muito boa
cobertura de testes, mas ainda há espaços para melhorar."
16. 16
Onde a CWI já está usando
Projeto TNT Express – EMS
• Jenkins como ferramenta de integração contínua
• Durante o desenvolvimento ficou no mesmo servidor da aplicação. Quando os
fontes foram migrados para um servidor do cliente, o CI foi junto
• Usado para a execução:
• De testes unitários
• De integração
• Visualização dos resultados, Build e package da aplicação
• Liberação em diversos ambientes para teste e homologação.
• Usam desde o início do projeto
• Todo o processo roda em 3 minutos, executando mais 800 testes, cobrindo 85% do
código do projeto
• Segundo Lucas Balensiefer (CWI) "Atingimos o objetivo esperado com a utilização"
17. 17
Onde a CWI já está usando
Mobile Commerces de Casas Bahia, Extra e Ponto Frio
• Go como ferramenta de integração contínua
• O servidor de integração contínua esta em uma instância EC2 da Amazon.
• Usado para a execução:
• De integração do que é instalado em cada ambiente
• De testes unitários e funcionais
• Automação do deploy de ambientes de DEV, QA e STG e Status check de produção (em
planejamento)
• Usam desde o início do projeto, no sprint de iniciação
• Todo o processo roda em 23 minutos
• Segundo Daniel Wayhs (CWI) "Conseguimos delegar para a fabrica de testes os
triggers de deploy para os ambientes. Eles conseguem verificar as features que
estão entrando em cada deploy. E consigo fazer um deploy em produção com
tranquilidade sabendo que o build passou por todos os níveis do pipeline"
18. 18
Onde a CWI já está usando
Coca-Cola – Embaixadores
• Jenkins e uDeploy como ferramenta de integração contínua
• O servidor Jenkins fica na CWI e o uDeploy no cliente
• Usado para:
• Build
• Testes unitários
• Testes de aceitação de serviços
• Deploy (apenas este no cliente)
• Usado desde o início do projeto
• Todo o processo roda em 3 minutos
• Segundo Jonas Flesch (CWI) "O processo só não esta melhor por que a ferramenta
do cliente (uDeploy) exige alguns processos manuais."
Inconformidades: Build ou Testes quebrados, ambiente inacessível, violações de métricas de qualidade de código (StyleCop, Sonar...)
A muito tempo atrás existia um desenvolvedor de software que não aguentava mais encontrar bugs em seu sistema. Certo dia ele pensou: como posso diminuir estes bugs? Tem como eu testar mais fácil meu software?
Por que gostamos de usar? Por que é bonito.
SCM: TFS, Git, SVN
Inconformidades: Build ou Testes quebrados, ambiente inacessível, violações de métricas de qualidade de código (StyleCop, Sonar...)
Dois anos de utilização
BDD
Consolidado
Package para projetos com RDM/GMUD
Fábrica de testes tem controle sobre o deploy
Continuous Delivery
Acredito que duas coisas definem o que precisamos para essa caminhada. As ferramentas nós já temos.