1
I n t e g r a ç ã o C o n t í n u a
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
3
Integração Contínua
O que é
Custos-benefícios
Quando usar/recomendar
Onde a CWI já está usando
4
O que é (como não deve ser)
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
O que é – Níveis de maturidade
Code Build Integrate Test Release Deploy Operate
Development
Continuous Integration
Continuous Delivery
Continuous Deployment
7
O que é – Utopia?
8
O que é - Ferramentas
Jenkins Travis CI
TFS TeamCity
9
O que é
10
Custos-benefícios
Benefícios
Deploy automático
Escalabilidade
Velocidade/Foco
Transparência
Alertas de inconformidades
Execução automática de testes
Redução de riscos
Custos
INFRA
Setup inicial da ferramenta
Setup do ambiente de
execução
Integrar testes (PRJ em
andamento)
Construção dos scripts de build
Construir testes
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
12
Custos-benefícios
Servidor pirataEquipe
Visual Studio Online
Amazon AWS
Servidor Aplicação INFRA Cliente
Equipe
EquipeEquipe
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
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
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
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
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
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."
19
Ferramentas
Cultura
20
“O software que fazemos para automatizar
o processo dos nossos clientes deve nos
motivar para automatizar nosso processo”
21
Obrigado!
Alexandre Machado | alexandrelima@cwi.com.br
Altamir Júnior Dias | ajdias@cwi.com.br

Integração Contínua

  • 1.
    1 I n te g r a ç ã o C o n t í n u a
  • 2.
    2 Quem somos Altamir • 21anos 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
  • 3.
    3 Integração Contínua O queé Custos-benefícios Quando usar/recomendar Onde a CWI já está usando
  • 4.
    4 O que é(como não deve ser)
  • 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
  • 7.
    7 O que é– Utopia?
  • 8.
    8 O que é- Ferramentas Jenkins Travis CI TFS TeamCity
  • 9.
  • 10.
    10 Custos-benefícios Benefícios Deploy automático Escalabilidade Velocidade/Foco Transparência Alertas deinconformidades Execução automática de testes Redução de riscos Custos INFRA Setup inicial da ferramenta Setup do ambiente de execução Integrar testes (PRJ em andamento) Construção dos scripts de build Construir testes
  • 11.
    11 Custos-benefícios “Continuous Integration doesn’tget 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
  • 12.
    12 Custos-benefícios Servidor pirataEquipe Visual StudioOnline Amazon AWS Servidor Aplicação INFRA Cliente Equipe EquipeEquipe
  • 13.
    13 Quando usar/recomendar • Quandovocê 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 CWIjá 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 CWIjá 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 CWIjá 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 CWIjá 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 CWIjá 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."
  • 19.
  • 20.
    20 “O software quefazemos para automatizar o processo dos nossos clientes deve nos motivar para automatizar nosso processo”
  • 21.
    21 Obrigado! Alexandre Machado |alexandrelima@cwi.com.br Altamir Júnior Dias | ajdias@cwi.com.br

Notas do Editor

  • #3 Inconformidades: Build ou Testes quebrados, ambiente inacessível, violações de métricas de qualidade de código (StyleCop, Sonar...)
  • #6 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?
  • #7 Por que gostamos de usar? Por que é bonito.
  • #10 SCM: TFS, Git, SVN
  • #11 Inconformidades: Build ou Testes quebrados, ambiente inacessível, violações de métricas de qualidade de código (StyleCop, Sonar...)
  • #15 Dois anos de utilização BDD Consolidado
  • #17 Package para projetos com RDM/GMUD
  • #18 Fábrica de testes tem controle sobre o deploy
  • #19 Continuous Delivery
  • #20 Acredito que duas coisas definem o que precisamos para essa caminhada. As ferramentas nós já temos.