O documento discute integração contínua, definindo-a como a integração frequente de código por membros de uma equipe de desenvolvimento, preferencialmente diariamente. Apresenta os benefícios da integração contínua como a redução de riscos e detecção rápida de bugs. Também discute integração contínua como um pilar do DevOps.
1. Integração contínua
Rumo a automação e ao DEVOPS
Fabiano Guilherme de Souza
Líder equipe Configuração e Qualidade - SESIS
Sun Certified Enterprise Architect for J2EE Platform I, Microsoft Certified Solution
Developer - MCSD .NET, ITIL Foundation. (SCJP, SCAJ, SCBCD, SCWCD, MCP,
MCP+SB, MCAD)
Especialista em engenharia de software
Analista Judiciário com especialidade em TI no TRT da 3ª Região. Possui mais de 20
anos de experiência na área de TI, atuando em empresas privadas e públicas
como Fiat, Unisys, Unimed-BH e Serpro.
Novembro 2021
2. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 2
AGENDA
Integração contínua
▪ O que é integração contínua
▪ Como fazer e benefícios
▪ Práticas de integração contínua
▪ CI como um do pilares do DEVOPS
3. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 3
CONCEITOS
Integração contínua
A Integração contínua originalmente é um conceito que lida com:
● Integração de software
● Repetição automatizada da integração
No conceito do Sommmerville:
“Assim que o trabalho de uma tarefa é concluído, ele é integrado ao sistema
como um todo...”
4. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 4
5. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 5
CONCEITOS
Integração contínua
▪ Conceito original do Extreme Programming popularizado pelo Martin Fowler a
partir de 2000
Integração Contínua é uma prática de desenvolvimento
de software onde membros de um time integram seu
trabalho frequentemente, geralmente cada pessoa
integra ao menos diariamente - levando a 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.
6. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 6
CONCEITOS
Integração contínua
7. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 7
CONCEITOS
Integração contínua
8. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 8
CONCEITOS
Integração contínua
9. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 9
Passos para chegar lá
▪ Código fonte gerenciado e centralizado
● Commits diários para o branch principal
▪ Processo de build automatizado
▪ Suíte de testes automatizada
▪ Melhor versão do sistema e mais completa sempre disponível
▪ Acompanhar (e atuar!!!!) nas métricas geradas pelo build como padrão
de codificação, análise de dependência, complexidade, débitos
técnicos
10. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 10
Benefícios
▪ Redução de riscos / previsibilidade
▪ Builds reproduzíveis
▪ Detecção rápida de bugs
● Bugs são cumulativos
▪ Deploy frequente
● recursos liberados mais rápidos
● feedback mais rápido
● ajuda na integração usuário / desenvolvimento
11. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 11
12. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 12
13. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 13
14. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 14
15. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 15
16. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 16
Princípios básicos
17. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 17
Princípios básicos: construir software a cada mudança
18. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 18
Princípios básicos: construir software a cada mudança
19. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 19
Continuous Testing
20. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 20
Continuous Inspection
21. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 21
Continuous Inspection
22. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 22
Continuous Inspection
23. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 23
Continuous Inspection
24. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 24
Continuous Feedback
25. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 25
Continuous Feedback
26. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 26
27. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 27
Princípios da entrega de software
▪ Criar um processo de liberação de software repetível e confiável
▪ Automatizar (quase) tudo
▪ Mantenha tudo versionado
● Documentos de requisitos
● Scripts de testes
● Casos de testes automatizados
● Scripts de criação de banco de dados
● Bibliotecas
● Documentação técnica
28. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 28
Como melhorar a entrega
▪ Fuja dos antipatterns
● Deploy manual de software
● Deploy num ambiente similar a produção apenas quando o
desenvolvimento está completo
● Gerência manual das configurações dos ambientes de produção
29. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 29
Princípios da entrega de software
▪ Se machuca, faça mais frequentemente e antecipe a dor
30. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 30
Princípios da entrega de software
▪ Pronto significa liberado
▪ Todos são responsáveis pelo processo de Entrega
▪ Melhoria contínua
31. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 31
Princípios da entrega de software
32. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 32
Princípios da entrega de software
33. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 33
Princípios da entrega de software
34. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 34
Continuous Integration, Delivery and Deployment
35. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 35
Processo deploy tradicional
Manual
Cópia de arquivos
Ação de vários papéis
Não reproduzível
Baixa rastreabilidade
Rollback manual
36. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 36
Processo deploy com CI e práticas de Devops
Automatizado
GitOps
Desenvolvedor controla o deploy nos diversos ambientes
Reproduzível
Alta rastreabilidade
Rollback automático
37. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 37
Segurança
38. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 38
Segurança
39. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 39
Segurança
40. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 40
Segurança
41. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 41
Tudo é uma jornada (nas estrelas?)
42. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 42
43. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 43
Conclusão
▪ Integração contínua:
● Um dos pilares do desenvolvimento de software atual
com Devops
● Facilita e tem sinergia com diversas práticas de
engenharia de software
● Melhora o desempenho da organização e deixa o
desenvolvedor mais feliz
44. Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 44
Referências e perguntas
Notas do Editor
sair de silos
2007
Jez Humble: levante a mão quem faz integração contínua, a maioria levanta a mão
Por favor mantenham as mãos para cima se todos no time fazem commit e pushes para o branch principal diariamente.
metade baixam as mãos
Então ele pergunta se a cada commit temo um build e testes automatizado. De novo baixam metade das mãos
Finalmente ele pergunta se um build falhar, volta ao verde dentro de 10 minutos
Apenas algumas mãos ficam levantadas. Esses passaram no teste de certificação.
Avoid getting broken code: sempre trabalhar localmente com código que um build foi concluído com sucesso
Run faster tests first: testes unitários, testes de componentes, testes sistêmicos
Make component test repeatable: uso de mocks
Limit test cases to one asset: não colocar várias Asserções num único teste
Frequência de deploy
Lead time for changes - The amount of time it takes a commit to get into production.
MTTR - Mean time to restore service - tempo de reação a uma falha na produção
Change failure rate - how often deployment failures occur in production that require immediate remedy (particularity, rollbacks).