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
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
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...”
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 4
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.
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 6
CONCEITOS
Integração contínua
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 7
CONCEITOS
Integração contínua
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 8
CONCEITOS
Integração contínua
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
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
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 11
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 12
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 13
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 14
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 15
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 16
Princípios básicos
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 17
Princípios básicos: construir software a cada mudança
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 18
Princípios básicos: construir software a cada mudança
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 19
Continuous Testing
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 20
Continuous Inspection
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 21
Continuous Inspection
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 22
Continuous Inspection
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 23
Continuous Inspection
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 24
Continuous Feedback
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 25
Continuous Feedback
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 26
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
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
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
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
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 31
Princípios da entrega de software
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 32
Princípios da entrega de software
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 33
Princípios da entrega de software
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 34
Continuous Integration, Delivery and Deployment
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
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
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 37
Segurança
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 38
Segurança
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 39
Segurança
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 40
Segurança
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 41
Tudo é uma jornada (nas estrelas?)
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 42
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
Seção de apoio ao desenvolvimento - SESIS - Configuração e qualidade
Novembro/21 44
Referências e perguntas

Integração contínua - Rumo à automação e ao DEVOPS

  • 1.
    Integração contínua Rumo aautomaçã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 apoioao 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 apoioao 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 apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 4
  • 5.
    Seção de apoioao 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 apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 6 CONCEITOS Integração contínua
  • 7.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 7 CONCEITOS Integração contínua
  • 8.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 8 CONCEITOS Integração contínua
  • 9.
    Seção de apoioao 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 apoioao 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 apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 11
  • 12.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 12
  • 13.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 13
  • 14.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 14
  • 15.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 15
  • 16.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 16 Princípios básicos
  • 17.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 17 Princípios básicos: construir software a cada mudança
  • 18.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 18 Princípios básicos: construir software a cada mudança
  • 19.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 19 Continuous Testing
  • 20.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 20 Continuous Inspection
  • 21.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 21 Continuous Inspection
  • 22.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 22 Continuous Inspection
  • 23.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 23 Continuous Inspection
  • 24.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 24 Continuous Feedback
  • 25.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 25 Continuous Feedback
  • 26.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 26
  • 27.
    Seção de apoioao 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 apoioao 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 apoioao 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 apoioao 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 apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 31 Princípios da entrega de software
  • 32.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 32 Princípios da entrega de software
  • 33.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 33 Princípios da entrega de software
  • 34.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 34 Continuous Integration, Delivery and Deployment
  • 35.
    Seção de apoioao 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 apoioao 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 apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 37 Segurança
  • 38.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 38 Segurança
  • 39.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 39 Segurança
  • 40.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 40 Segurança
  • 41.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 41 Tudo é uma jornada (nas estrelas?)
  • 42.
    Seção de apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 42
  • 43.
    Seção de apoioao 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 apoioao desenvolvimento - SESIS - Configuração e qualidade Novembro/21 44 Referências e perguntas

Notas do Editor

  • #4 sair de silos
  • #12 2007
  • #16 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.
  • #17 Avoid getting broken code: sempre trabalhar localmente com código que um build foi concluído com sucesso
  • #20 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
  • #30 Harold
  • #39 SAST – Static Application Security Testing - caixa branca
  • #43 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).