Translate

segunda-feira, 4 de janeiro de 2021

Big Ball of Mud Rules: Quando um Programador COBOL Descobriu que a Matrix Não Era um Sistema... Era uma Enorme Bola de Lama Digital

 

Bellacosa Mainframe e a big ball of mud rules

☕ Um Café no Bellacosa Mainframe

Big Ball of Mud Rules sem Mistérios

Quando um Programador COBOL Descobriu que a Matrix Não Era um Sistema... Era uma Enorme Bola de Lama Digital

"A Matrix não caiu porque era antiga. Ela quase caiu porque ninguém mais conseguia explicar onde começava, onde terminava e por que tudo dependia de tudo."


Prólogo — A Cidade Perdida Dentro da Matrix

Neo recebe sua missão mais difícil.

Não é derrotar o Agente Smith.

Não é salvar Zion.

Não é conversar com o Arquiteto.

Sua missão é muito pior.

Documentar um sistema legado.

Morpheus entrega um HD antigo.

Na etiqueta existe apenas uma inscrição.

COREBANK
1986

Neo pergunta:

— Quantos programas existem?

Morpheus responde:

— Não sabemos.

— Quantos bancos de dados?

— Também não.

— Existe documentação?

Morpheus sorri.

— Existia...

em 1994.

Neo conecta o sistema.

Começa a navegar.

Programa chama programa.

Programa chama JCL.

JCL chama PROC.

PROC chama SORT.

SORT chama outro programa.

CICS chama MQ.

MQ chama outro CICS.

Db2 chama Stored Procedure.

Stored Procedure chama Java.

Java chama REST.

REST chama Python.

Python grava novamente no Db2.

Neo pergunta:

— Onde começa a transação?

Morpheus responde:

— Essa pergunta já destruiu a sanidade de muitos arquitetos.

O Oráculo aproxima-se.

Olha para Neo.

E diz:

"Você não entrou em um sistema. Você entrou em uma Big Ball of Mud."


O que é Big Ball of Mud?

Big Ball of Mud (Grande Bola de Lama) é um antipadrão arquitetural que descreve um sistema gigantesco, complexo e sem uma arquitetura clara.

Ao contrário do Spaghetti Code, que normalmente se refere ao código interno de um programa...

A Big Ball of Mud descreve:

o sistema inteiro.

Ela representa aplicações que cresceram durante anos ou décadas sem planejamento arquitetural consistente.

Tudo funciona.

Mas ninguém sabe exatamente por quê.


A origem do termo

O conceito foi formalizado em 1997 por:

  • Brian Foote

  • Joseph Yoder

No famoso artigo:

Big Ball of Mud

Eles observaram que muitos sistemas corporativos bem-sucedidos não possuíam arquitetura elegante.

Mesmo assim...

continuavam funcionando.

Esses sistemas cresciam organicamente.

Como uma bola de lama rolando morro abaixo.

Cada alteração adicionava mais material.

Sem nunca reorganizar a estrutura.


Matrix explica perfeitamente

Imagine a Matrix.

Milhões de linhas de código.

Milhares de programas.

Centenas de agentes.

Regras antigas.

Novas regras.

Exceções.

Correções.

Remendos.

Durante décadas.

Agora imagine.

Ninguém mais possui o diagrama original.

Essa é exatamente uma Big Ball of Mud.


O nascimento da Bola de Lama

Curiosamente...

ela raramente nasce por incompetência.

Ela nasce por sucesso.

O sistema funciona.

Recebe novas funcionalidades.

Mais clientes.

Mais integrações.

Mais regras.

Mais urgências.

Mais exceções.

Mais mudanças.

Depois de trinta anos.

Virou um universo próprio.


O COBOL conhece bem isso

Muitos sistemas bancários começaram assim.

Programa pequeno.

Novo módulo.

Internet Banking.

Mobile.

APIs.

Cloud.

Open Finance.

IA Generativa.

Tudo conectado.

Sem jamais parar para reorganizar completamente.


Um exemplo simples

Sistema original.

Tela

↓

COBOL

↓

Db2

Quarenta anos depois.

Internet

↓

Portal

↓

Gateway

↓

API

↓

MQ

↓

Java

↓

REST

↓

CICS

↓

COBOL

↓

Db2

↓

ETL

↓

Data Lake

↓

Kafka

↓

Analytics

↓

IA

Nenhuma etapa é necessariamente ruim.

O problema é:

ninguém possui a visão completa.


O Programador COBOL Padawan

Imagine.

Primeiro dia na empresa.

Seu líder diz.

"Você ficará responsável pelo CORE."

Você pergunta.

"Existe documentação?"

Resposta.

"Boa sorte."


Como reconhecer?

Existem sinais muito claros.

Tudo depende de tudo

Alterar um campo quebra cinco sistemas.


Não existe dono

Todos mexem.

Ninguém conhece.


Documentação desatualizada

Fluxos reais são diferentes.


Regras duplicadas

Mesma regra aparece vinte vezes.


Arquitetura desconhecida

Cada desenvolvedor explica de um jeito.


Matrix Reloaded

Neo conversa com o Arquiteto.

O Arquiteto mostra diversas versões anteriores da Matrix.

Cada uma herdou partes da anterior.

Nenhuma foi totalmente reconstruída.

Software corporativo evolui exatamente assim.


O efeito psicológico

Existe um fenômeno interessante.

Quanto maior o sistema...

menor a coragem para reorganizá-lo.

Então cada desenvolvedor pensa:

"Vou alterar só este pedacinho."

Todos fazem isso.

Durante vinte anos.

A lama cresce.


O Agente Smith adora isso

Porque sistemas gigantescos produzem:

medo.

Especialistas tornam-se indispensáveis.

Mudanças ficam lentas.

Arquitetura desaparece.

Smith não precisa atacar.

O próprio sistema torna-se resistente à evolução.


Um exemplo COBOL

Imagine.

Existem.

4.200 programas.

3.800 COPYBOOKs.

1.600 JCLs.

780 PROCs.

320 CICS.

410 tabelas Db2.

Pergunta.

Existe mapa de dependências?

Não.

Bem-vindo.


Como nasce?

Etapa 1.

Sistema simples.

Etapa 2.

Urgências.

Etapa 3.

Novos clientes.

Etapa 4.

Integrações.

Etapa 5.

Exceções.

Etapa 6.

Mais remendos.

Etapa 7.

Ninguém mais entende.


O custo invisível

Nova funcionalidade.

Implementação:

2 dias.

Descobrir impacto:

3 semanas.


O impacto financeiro

Mais testes.

Mais homologação.

Mais reuniões.

Mais especialistas.

Mais CPU.

Mais incidentes.

Tudo fica caro.


Atenção!

Big Ball of Mud não significa:

Sistema ruim.

Muitos dos maiores bancos do mundo operam sistemas extremamente antigos.

Que continuam confiáveis.

O problema não é idade.

É ausência de organização.


Curiosidade

Alguns sistemas COBOL possuem mais de:

50 milhões de linhas de código.

Mesmo assim.

Continuam processando bilhões de dólares diariamente.

Isso mostra que:

idade

não é defeito.


A diferença

Sistema Legado

Pode possuir excelente arquitetura.


Big Ball of Mud

Arquitetura praticamente desapareceu.


Como evitar?

Documentação contínua

Nunca espere o projeto acabar.


Diagramas

Fluxos atualizados.


Refatoração

Pequenas melhorias constantes.


Modularização

Divida responsabilidades.


APIs

Reduza acoplamento.


Testes

Protegem mudanças.


Descoberta arquitetural

Ferramentas ajudam.


Ferramentas modernas

IBM possui soluções excelentes.

  • IBM ADDI

  • Application Discovery

  • IBM Developer for z/OS

  • IBM COBOL Check

  • Z Open Editor

  • Instana

  • OpenTelemetry

Elas conseguem descobrir dependências automaticamente.


O papel da IA

Hoje IA ajuda muito.

Ela pode:

explicar programas.

Criar diagramas.

Resumir módulos.

Encontrar dependências.

Mas existe um limite.

Se o sistema inteiro virou lama...

nem a IA faz milagres.


Matrix e Zion

Imagine Zion construída durante cem anos.

Sem planta.

Sem mapas.

Cada engenheiro criou túneis.

Cada geração abriu novos corredores.

Depois de décadas.

Ninguém sabe onde passam todos os cabos.

É exatamente isso.


Os riscos

Mudanças lentas


Bugs inesperados


Alto acoplamento


Baixa produtividade


Custos elevados


Dependência de especialistas


Dificuldade para integrar IA


Big Ball of Mud e DevOps

DevOps acelera deploy.

Mas não resolve arquitetura ruim.

Aliás.

Pode acelerar problemas.


O papel do Arquiteto

Arquitetos modernos fazem uma pergunta simples.

"Este sistema ainda possui forma?"

Se ninguém conseguir responder.

Talvez a bola de lama já exista.


Um exemplo inspirado na Matrix

Neo pergunta.

"Qual programa calcula o saldo?"

Resposta.

"Depende."

"Depende do quê?"

"Da agência."

"E se for PIX?"

"Outro programa."

"E TED?"

"Outro."

"DOC?"

"Também."

"Open Finance?"

"Mais três."

"Cartão?"

"Depende."

Neo suspira.


Existe cura?

Sim.

Mas ela raramente acontece através de uma grande reescrita.

O caminho normalmente é:

Mapear.

Entender.

Documentar.

Refatorar.

Modularizar.

Modernizar.

Gradualmente.


Erros clássicos

  • Reescrever tudo.

  • Não documentar.

  • Misturar responsabilidades.

  • Criar dependências ocultas.

  • Duplicar regras.

  • Ignorar arquitetura.


Aplicabilidade

Big Ball of Mud aparece em:

  • COBOL

  • Java

  • ERP

  • Sistemas Bancários

  • Telecom

  • Governo

  • Seguradoras

  • Cloud

  • Microsserviços

  • ERPs gigantes


Curiosidades

O artigo original afirma algo curioso.

Muitas Big Balls of Mud foram extremamente lucrativas.

Porque resolviam problemas reais.

O problema aparecia décadas depois.

Quando evoluir passou a ser mais caro que criar.


O ensinamento do Oráculo

O Oráculo entrega uma pequena esfera de barro para Neo.

Ela pergunta.

"O que você vê?"

Neo responde.

"Lama."

Ela amassa.

A esfera cresce.

Depois cresce novamente.

Depois outra vez.

Ela sorri.

"Toda exceção adiciona um pouco mais."


Lições para um Programador COBOL Padawan

Você provavelmente trabalhará em sistemas que nasceram antes mesmo da Internet comercial. Não tenha preconceito com isso. Muitos desses sistemas sustentam operações críticas de bancos, seguradoras e governos com níveis de disponibilidade impressionantes.

Ao mesmo tempo, não aceite a desorganização como algo inevitável. Sempre que possível:

  • documente o que descobrir;

  • desenhe fluxos;

  • elimine duplicações;

  • isole responsabilidades;

  • proponha APIs claras;

  • registre decisões arquiteturais;

  • compartilhe conhecimento com a equipe.

Cada pequena melhoria reduz um pouco da lama acumulada ao longo dos anos e prepara o sistema para as próximas décadas.


Conclusão — A Matrix Não Era um Monólito... Era uma Bola de Lama Viva

No final da saga Matrix, Neo entende que o sistema nunca foi estático. Ele evoluiu continuamente, acumulando regras, exceções e adaptações para sobreviver.

Os grandes sistemas corporativos fazem exatamente o mesmo.

Uma Big Ball of Mud não surge porque alguém decidiu construir um software ruim. Ela surge porque o sistema foi útil durante muito tempo, recebeu centenas de melhorias, integrou novas tecnologias e continuou entregando valor ao negócio sem uma renovação arquitetural proporcional.

Para um Programador COBOL, essa é uma lição fundamental. O legado não deve ser visto como inimigo, mas como um organismo vivo que precisa de cuidados constantes. Modernizar não significa destruir; significa compreender, documentar, simplificar e evoluir.

No universo Bellacosa Mainframe existe uma máxima digna do Arquiteto da Matrix:

"Todo sistema começa como uma ideia elegante. O que determina seu futuro é a disciplina com que ele evolui."

Porque a verdadeira missão do Programador COBOL Padawan não é apenas manter a Matrix funcionando.

É impedir que ela se transforme em uma bola de lama tão grande que ninguém mais consiga encontrar a saída.

Sem comentários:

Enviar um comentário