Translate

Mostrar mensagens com a etiqueta Transação. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Transação. Mostrar todas as mensagens

terça-feira, 14 de outubro de 2014

💣🔥 SYSTEM DESIGN — O DIA EM QUE O COBOL DEIXA DE SER PROGRAMA… E VIRA ARQUITETURA DE PODER 🔥💣

 

Bellacosa Mainframe introduz o System Design

💣🔥 SYSTEM DESIGN — O DIA EM QUE O COBOL DEIXA DE SER PROGRAMA… E VIRA ARQUITETURA DE PODER 🔥💣

Se você programa em COBOL e acha que “system design” é coisa de arquiteto engravatado fazendo diagrama bonito… cuidado.

Você pode estar executando jobs perfeitos… dentro de um sistema mal projetado.

E aí não tem abend que denuncie o problema.


🧠 O QUE É SYSTEM DESIGN (TRADUZINDO PARA COBOL MENTAL)

System Design não é código.

É decidir antes do código existir:

  • Onde o dado nasce
  • Como ele trafega
  • Quem processa
  • Quem valida
  • Quem garante consistência
  • E quem aguenta o tranco quando tudo dá errado

👉 Em linguagem de mainframe:

System Design é o JCL invisível da arquitetura inteira


🏛️ ORIGEM — ANTES DO COBOL, ANTES DO SEU JOB

System Design nasce junto com a computação moderna.

  • Anos 60–70: Mainframes da IBM dominam o mundo corporativo
  • Surge o conceito de processamento batch vs online
  • Sistemas passam a lidar com:
    • milhões de registros
    • concorrência
    • consistência de dados

É aqui que entra o design.

Porque sem design…

👉 o sistema vira um monte de programas que “funcionam”… mas não escalam.


⚙️ A ERA DE OURO DO DESIGN: CICS, DB2 E O NASCIMENTO DA ARQUITETURA

Quando surgem tecnologias como:

  • CICS
  • DB2

o problema muda:

Antes:

Rodar programa

Depois:

Orquestrar milhares de transações simultâneas

E aí nasce o System Design moderno:

  • controle transacional
  • isolamento de dados
  • rollback
  • filas
  • throughput

👉 Isso não é mais programação.
👉 Isso é engenharia de sistema.


🔥 ANALOGIA BELLACOSA

Você, programador COBOL:

  • escreve o programa = módulo
  • escreve JCL = execução
  • usa VSAM/DB2 = armazenamento

Mas o System Design pergunta:

“E quando 10 milhões de clientes acessarem ao mesmo tempo… o que acontece?”


🧩 COMPONENTES DE UM SYSTEM DESIGN (TRADUZIDO PARA MAINFRAME)

1. Entrada de dados

  • Arquivo VSAM?
  • MQ?
  • API REST via z/OS Connect?

2. Processamento

  • Batch (JCL)
  • Online (CICS)
  • Híbrido

3. Persistência

  • DB2
  • VSAM
  • GDG

4. Consistência

  • Commit / Rollback
  • Controle de concorrência

5. Escalabilidade

  • Paralelismo de jobs
  • Balanceamento de carga

6. Resiliência

  • Restart automático
  • Checkpoints
  • Logs (SMF, JES)

🧪 EXEMPLO PRÁTICO — SISTEMA BANCÁRIO

Imagine:

👉 Transferência entre contas

Sem design:

  • Um programa COBOL atualiza conta A
  • Outro atualiza conta B

💣 Problema:
Se cair no meio → dinheiro some


Com System Design:

  • Transação controlada no CICS
  • Commit só ocorre quando tudo está consistente
  • Rollback garante integridade

👉 Isso é design salvando o sistema.


🧬 PASSO A PASSO — COMO PENSAR COMO UM ARQUITETO (MESMO SENDO COBOL)

🔹 1. Entenda o fluxo

Antes de codar:

  • de onde vem o dado?
  • para onde vai?
  • quem usa?

🔹 2. Modele falhas

Pergunte:

  • e se cair?
  • e se duplicar?
  • e se atrasar?

🔹 3. Separe responsabilidades

  • programa A = valida
  • programa B = processa
  • programa C = grava

👉 Não misture tudo (anti-pattern clássico COBOL 😄)


🔹 4. Pense em volume

  • 100 registros ≠ 100 milhões

🔹 5. Pense em concorrência

  • 1 usuário ≠ 10.000 simultâneos

🚀 COMO COMEÇAR (CAMINHO REALISTA)

Se você é COBOL:

Aprenda:

  • Conceitos de arquitetura distribuída
  • Filas (MQ)
  • APIs
  • Transações
  • Design patterns

Pratique:

  • Simule um sistema de pagamentos
  • Modele falhas
  • Crie fluxo batch + online

Evolua:

  • Integração com APIs modernas
  • Event-driven architecture
  • Observabilidade

🧠 O QUE VOCÊ PRECISA ENTENDER (DE VERDADE)

System Design não é ferramenta.

É mentalidade.

Você precisa dominar:

  • consistência vs performance
  • acoplamento vs flexibilidade
  • disponibilidade vs integridade

👉 Isso é trade-off.
👉 Isso é engenharia.


🕵️ CURIOSIDADES (QUE POUCOS CONTAM)

  • Muitos sistemas bancários de hoje ainda rodam design criado nos anos 80
  • O que mudou foi a interface, não o core
  • Mainframe já fazia “alta escala” antes da nuvem existir

🥚 EASTER EGG (NÍVEL MAINFRAME ROOT)

O conceito moderno de:

  • microserviços
  • filas
  • event-driven

👉 já existia, de forma conceitual, dentro do mainframe

Só com nomes diferentes:

  • programa = serviço
  • fila = dataset / MQ
  • evento = transação CICS

⚠️ ERRO CLÁSSICO DE PROGRAMADOR COBOL

Achar que:

“Se o programa funciona… o sistema está certo”

Errado.

👉 Um sistema pode estar funcionando perfeitamente… e ainda assim estar errado em design


💣 FRASE FINAL (ESTILO PRODUÇÃO CRÍTICA)

“Código resolve problema local.
Design decide se o sistema sobrevive.”