Como aplicar práticas de DevOps em um sistema
monolítico de mais de 15 anos
Trilha DevOps
Anderson Silveira
Agile Coach | KMP | CSM - CPQD
01
Quem somos nós?
anderson.silveira.br /andersonsilveira /andersonsilvra
Gustavo Brandão
Tech Lead - CPQD
gustavobrandao07 /gustavobrandao07 /gustavolbrandao
#SomosCPqD
Transformação
digital
Conecte-se ao
novo
2
O monolítico de mais de 15 anos...
3
No começo...
“Desenvolver um produto para gerenciar a planta de rede externa e interna dos grandes
fornecedores de telecom”
4
❏ ~ 1 Milhão de linhas de código
❏ ~ Tabelas com mais de 10 Milhões de registros
❏ ~ 11 equipes
❏ ~ 150 pessoas envolvidas
❏ ~ Geração de build de aproximadamente 2 horas
5
Departamentalização sem
um propósito comum
SILOS OPERACIONAIS
- Falta de uma meta compartilhada
- Dificuldade de comunicação
- Carência de visão do todo
- Baixa colaboração
- Política social é predominante
- Métricas de vaidade
6
7
Custo de Transação
“Custo de transação pode ser
observado toda vez que encontramos
um esforço de enviar um lote de
trabalho de uma fase para outra”
Don Reinertsen
Fluxo de valor e o custo de transação
Implementação Teste Homologação Produção
Custos de transação
● Geração da build
● Validação da
funcionalidade
● Instalação manual
● Geração da release
● Instalação manual
● Regressão de
testes
● GMUD
8
Identificação do custo de transação
Fase Testes de
Aceitação
Lorem ipsum dolor sit amet,
consectetur adipiscing. Lorem
ipsum dolor sit.
Fase Testes
Sistêmicos em QA
Lorem ipsum dolor sit amet,
consectetur adipiscing. Lorem
ipsum dolor sit.
Fase
Implementação
Lorem ipsum dolor sit amet,
consectetur adipiscing. Lorem
ipsum dolor sit.
Fase
Implementação
Lorem ipsum dolor sit amet,
consectetur adipiscing. Lorem
ipsum dolor sit.
Início dos Testes de
aceitação manual
Instalação manual dos
ambientes de QA
Validação manual em
ambiente local após
geração da versão de teste
do produto
1h /dia
1h /dia
Geração de uma versão
para testar a funcionalidade
Entrega de funcionalidade para as equipes
de teste sofria com um enorme custo entre
o momento de conclusão da
implementação e o início dos testes.
Conclusão da codificação
da funcionalidade
Fase
Implementação
2h /dia
9
10
Dívida técnica é instaurada
11
Sintomas
● Responsividade ineficiente aos clientes
● Aumento nos tempos gerando atraso nas
entregas
● Muitos defeitos, alto acoplamento
● Aumento do custo do desenvolvimento
● Baixa performance do time
● Baixa colaboração entre as áreas de
desenvolvimento e operação
Reviravolta
Adoção das prática devops para otimização do entrega de valor.
12
13
Quebra de silos e otimização de fluxo de valor
14
Definição
“Um conjunto de práticas para integração entre as equipes de
desenvolvimento de softwares e operações com a adoção de processos
automatizados para produção rápida e segura de aplicações e serviços. ”
Fonte: https://www.4linux.com.br/o-que-e-devops
15
“colaboração…automatização…agilidade” ?
MUITAS ferramentas envolvidas...
16
“Todo mundo tem um
plano até tomar o
primeiro soco”
Mike Tyson
17Fonte: https://www.linkedin.com/pulse/devops-toolchain-ferramentas-de-apoio-ti-modo-2-otoniel-ribeiro/
18
Reduzindo o custo de transação...
Reduzindo o custo de transação
19
Fase
Implementação
Conclusão da codificação
da funcionalidade
Fase Testes de
Aceitação
Início dos Testes de
Aceitação
Uso da Pipeline de Entrega para
validação de qualidade e
instalação nos ambientes
Instalação
~25 minutos
20
Pipeline… definindo o conceito
21Fonte: Pipeline de implementação DevOps acelera feedback e reduz conflitos entre os times - Antonio Muniz
(SulAmerica)
22
Como construir o pipeline de um monolito?
23
Em 90% das vezes o
desenvolvimento era em torno de 4
grandes componentes
https://github.com/tj/git-extras 23
Ex. git effort -- --since='2018-10-01'
24
Desconstruindo o monolito...
Componente A
Componente B
Componente C
Dev
Commit
stage
Code
Analysis
Database
validation
Acceptance
Tests
Deploy to
QA
Deploy to
Homolog
Artifact
Testador OperaçãoDev
Promove a build para o
Testador
Arquiva o
artefato
Marca o card com n° da
pipeline
Recorte conceitual
Job full compiler &
get environment
AWS
instance
AWS
instance
Continuous Integration Continuous Delivery
Atualização completa
Infra as code
26
Commit
Dev
Continuous Integration
Continuous Delivery
Inspeção contínua de código (Tratamento de vazamentos)
https://blog.sonarsource.com/water-leak-changes-the-game-for-technical-debt-management/ 27
● Foram selecionados os principais
componentes e módulos, para
inspeção contínua.
● Sem mutirão! A estratégia foi focar
nos novos códigos ou unidades de
código que serão alteradas na
próxima release
● Fazer ajustes frequentes no quality
gate para garantir que o
vazamento seja controlado.
Ganhos com a automation
pipeline
● Redução do custo de transação
95% na liberação para QA e
Homologação
● Redução de recurso em disco ao
disponibilizar no Artifactory
● Promove colaboração e confiança
entre as áreas
● Frequência de entrega 10x maior
28
Custo de transação
por dia
Recurso em
disco
Confiança de
instalação
Frequência
de entrega
por dia
ANTES ~4 horas >2Gb Baixa 1
DEPOIS ~20 min < 2Gb Alta > 10
29
Melhoria da qualidade interna...
30
Dados de Qualidade Interna 2018/2019
Inspeção contínua: Melhoria na qualidade
31
Dados de tratamento de chamados: 2017/2018/2019
Redução de Downtime em produção
RESUMO
Principais ganhos com as práticas DevOps aplicadas nas
equipes
32
REDUÇÃO DE FILAS
Visualização do fluxo
de valor, facilitou a
redução de filas de
trabalho
REDUÇÃO DO CUSTO
DE TRANSAÇÃO
Com uso da pipeline
reduzimos o custo de
transação de 90%
AUMENTO DA
COLABORAÇÃO
Confiança nas entregas
nas entregas geraram
proximidade e empatia
entre as equipes de
desenvolvimento e
operação
GANHOS NA QUALIDADE
DE INTERNA
Diminuição
significativamente dos
chamados em produção
e downtime
33
Obrigado!
Curtiu?

Como aplicar práticas DevOps em um sistema monólito

  • 1.
    Como aplicar práticasde DevOps em um sistema monolítico de mais de 15 anos Trilha DevOps
  • 2.
    Anderson Silveira Agile Coach| KMP | CSM - CPQD 01 Quem somos nós? anderson.silveira.br /andersonsilveira /andersonsilvra Gustavo Brandão Tech Lead - CPQD gustavobrandao07 /gustavobrandao07 /gustavolbrandao
  • 3.
  • 4.
    O monolítico demais de 15 anos... 3
  • 5.
    No começo... “Desenvolver umproduto para gerenciar a planta de rede externa e interna dos grandes fornecedores de telecom” 4
  • 6.
    ❏ ~ 1Milhão de linhas de código ❏ ~ Tabelas com mais de 10 Milhões de registros ❏ ~ 11 equipes ❏ ~ 150 pessoas envolvidas ❏ ~ Geração de build de aproximadamente 2 horas 5
  • 7.
    Departamentalização sem um propósitocomum SILOS OPERACIONAIS - Falta de uma meta compartilhada - Dificuldade de comunicação - Carência de visão do todo - Baixa colaboração - Política social é predominante - Métricas de vaidade 6
  • 8.
    7 Custo de Transação “Custode transação pode ser observado toda vez que encontramos um esforço de enviar um lote de trabalho de uma fase para outra” Don Reinertsen
  • 9.
    Fluxo de valore o custo de transação Implementação Teste Homologação Produção Custos de transação ● Geração da build ● Validação da funcionalidade ● Instalação manual ● Geração da release ● Instalação manual ● Regressão de testes ● GMUD 8
  • 10.
    Identificação do custode transação Fase Testes de Aceitação Lorem ipsum dolor sit amet, consectetur adipiscing. Lorem ipsum dolor sit. Fase Testes Sistêmicos em QA Lorem ipsum dolor sit amet, consectetur adipiscing. Lorem ipsum dolor sit. Fase Implementação Lorem ipsum dolor sit amet, consectetur adipiscing. Lorem ipsum dolor sit. Fase Implementação Lorem ipsum dolor sit amet, consectetur adipiscing. Lorem ipsum dolor sit. Início dos Testes de aceitação manual Instalação manual dos ambientes de QA Validação manual em ambiente local após geração da versão de teste do produto 1h /dia 1h /dia Geração de uma versão para testar a funcionalidade Entrega de funcionalidade para as equipes de teste sofria com um enorme custo entre o momento de conclusão da implementação e o início dos testes. Conclusão da codificação da funcionalidade Fase Implementação 2h /dia 9
  • 11.
  • 12.
    11 Sintomas ● Responsividade ineficienteaos clientes ● Aumento nos tempos gerando atraso nas entregas ● Muitos defeitos, alto acoplamento ● Aumento do custo do desenvolvimento ● Baixa performance do time ● Baixa colaboração entre as áreas de desenvolvimento e operação
  • 13.
    Reviravolta Adoção das práticadevops para otimização do entrega de valor. 12
  • 14.
    13 Quebra de silose otimização de fluxo de valor
  • 15.
    14 Definição “Um conjunto depráticas para integração entre as equipes de desenvolvimento de softwares e operações com a adoção de processos automatizados para produção rápida e segura de aplicações e serviços. ” Fonte: https://www.4linux.com.br/o-que-e-devops
  • 16.
  • 17.
    16 “Todo mundo temum plano até tomar o primeiro soco” Mike Tyson
  • 18.
  • 19.
    18 Reduzindo o custode transação...
  • 20.
    Reduzindo o custode transação 19 Fase Implementação Conclusão da codificação da funcionalidade Fase Testes de Aceitação Início dos Testes de Aceitação Uso da Pipeline de Entrega para validação de qualidade e instalação nos ambientes Instalação ~25 minutos
  • 21.
  • 22.
    21Fonte: Pipeline deimplementação DevOps acelera feedback e reduz conflitos entre os times - Antonio Muniz (SulAmerica)
  • 23.
    22 Como construir opipeline de um monolito?
  • 24.
    23 Em 90% dasvezes o desenvolvimento era em torno de 4 grandes componentes
  • 25.
    https://github.com/tj/git-extras 23 Ex. giteffort -- --since='2018-10-01'
  • 26.
    24 Desconstruindo o monolito... ComponenteA Componente B Componente C
  • 27.
    Dev Commit stage Code Analysis Database validation Acceptance Tests Deploy to QA Deploy to Homolog Artifact TestadorOperaçãoDev Promove a build para o Testador Arquiva o artefato Marca o card com n° da pipeline Recorte conceitual Job full compiler & get environment AWS instance AWS instance Continuous Integration Continuous Delivery Atualização completa Infra as code
  • 28.
  • 29.
    Inspeção contínua decódigo (Tratamento de vazamentos) https://blog.sonarsource.com/water-leak-changes-the-game-for-technical-debt-management/ 27 ● Foram selecionados os principais componentes e módulos, para inspeção contínua. ● Sem mutirão! A estratégia foi focar nos novos códigos ou unidades de código que serão alteradas na próxima release ● Fazer ajustes frequentes no quality gate para garantir que o vazamento seja controlado.
  • 30.
    Ganhos com aautomation pipeline ● Redução do custo de transação 95% na liberação para QA e Homologação ● Redução de recurso em disco ao disponibilizar no Artifactory ● Promove colaboração e confiança entre as áreas ● Frequência de entrega 10x maior 28 Custo de transação por dia Recurso em disco Confiança de instalação Frequência de entrega por dia ANTES ~4 horas >2Gb Baixa 1 DEPOIS ~20 min < 2Gb Alta > 10
  • 31.
  • 32.
    30 Dados de QualidadeInterna 2018/2019 Inspeção contínua: Melhoria na qualidade
  • 33.
    31 Dados de tratamentode chamados: 2017/2018/2019 Redução de Downtime em produção
  • 34.
    RESUMO Principais ganhos comas práticas DevOps aplicadas nas equipes 32 REDUÇÃO DE FILAS Visualização do fluxo de valor, facilitou a redução de filas de trabalho REDUÇÃO DO CUSTO DE TRANSAÇÃO Com uso da pipeline reduzimos o custo de transação de 90% AUMENTO DA COLABORAÇÃO Confiança nas entregas nas entregas geraram proximidade e empatia entre as equipes de desenvolvimento e operação GANHOS NA QUALIDADE DE INTERNA Diminuição significativamente dos chamados em produção e downtime
  • 35.