| Bellacosa Mainframe em Lab TPS |
💣🔥 LAB DE GUERRA — FINTECH NO z/OS: TPS REAL, LEDGER CONSISTENTE E MULTI-REGIÃO SEM ILUSÃO 🔥💣
Aqui não é slide. Aqui é produção simulada.
Você vai montar um fluxo que separa quem roda código de quem segura banco no ar.
⚙️ VISÃO DO LAB (ARQUITETURA)
👉 Dois mundos:
🔴 Região BR (CICS AOR)
- Entrada da transação
- Validação
- Débito local (ledger consistente)
🔵 Região MX (CICS AOR)
- Recebe evento assíncrono
- Aplica crédito
⚫ TOR (Terminal Owning Region)
- Entrada de carga (simulação TPS)
🧠 OBJETIVO DO LAB
Você vai provar na prática:
- 💰 Ledger consistente localmente
- ♻️ Idempotência salvando sua vida
- 🔁 Assíncrono dominando multi-região
- 📊 TPS ≠ Throughput (medido, não teórico)
📦 COMPONENTES
- COBOL (CICS)
- VSAM KSDS (ledger)
- DB2 (controle/idempotência)
- TSQ/TDQ (fila assíncrona simulando Kafka)
- JCL (carga batch TPS)
🧾 1. LEDGER CONSISTENTE (COBOL + VSAM)
💣 Aqui não tem brincadeira: saldo é consistência forte local
Estrutura VSAM
ACCOUNT-ID PIC X(10)
BALANCE PIC S9(15)V99
LAST-UPDATE PIC X(26)
COBOL (CICS - débito)
EXEC CICS READ
FILE('LEDGER')
INTO(WS-ACCOUNT)
RIDFLD(WS-ACCOUNT-ID)
END-EXEC
IF WS-BALANCE < WS-AMOUNT
MOVE 'INSUFFICIENT' TO WS-STATUS
EXEC CICS ABEND END-EXEC
END-IF
SUBTRACT WS-AMOUNT FROM WS-BALANCE
EXEC CICS REWRITE
FILE('LEDGER')
FROM(WS-ACCOUNT)
END-EXEC
🔥 Isso aqui é o seu TPS real
👉 Só conta se COMMITOU
♻️ 2. IDEMPOTÊNCIA (DB2 — ANTI-DUPLICAÇÃO)
💣 Sem isso, retry vira fraude.
Tabela DB2
CREATE TABLE TX_CONTROL (
TX_ID VARCHAR(36) PRIMARY KEY,
STATUS VARCHAR(10),
CREATED_AT TIMESTAMP
);
Lógica COBOL
EXEC SQL
SELECT STATUS INTO :WS-STATUS
FROM TX_CONTROL
WHERE TX_ID = :WS-TX-ID
END-EXEC
IF SQLCODE = 0
MOVE 'DUPLICATE' TO WS-STATUS
GOBACK
END-IF
EXEC SQL
INSERT INTO TX_CONTROL VALUES (:WS-TX-ID, 'NEW', CURRENT TIMESTAMP)
END-EXEC
🔥 Resultado:
- Retry seguro
- Zero duplicação
- TPS protegido
🔁 3. FLUXO ASSÍNCRONO (TSQ/TDQ)
💣 Aqui nasce a escalabilidade.
Após débito (BR)
EXEC CICS WRITEQ TS
QUEUE('TXQUEUE')
FROM(WS-EVENT)
END-EXEC
Consumidor (MX)
EXEC CICS READQ TS
QUEUE('TXQUEUE')
INTO(WS-EVENT)
END-EXEC
🔥 Tradução moderna:
Você acabou de simular Kafka no mainframe raiz.
🌍 4. MULTI-REGIÃO (SIMULADO)
💣 Não existe commit distribuído aqui.
Fluxo:
- BR debita (consistente)
- Evento vai para fila
- MX processa depois
- Reconciliação se falhar
👉 Isso evita:
- lock global
- latência absurda
- TPS morto
📊 5. SIMULAÇÃO REAL — TPS vs THROUGHPUT
JCL de carga
//LOADTPS JOB ...
//STEP1 EXEC PGM=TXGEN
//SYSIN DD *
TPS=10000
DURATION=60
/*
Resultado esperado
| Métrica | Valor |
|---|---|
| Requests/s | 10.000 |
| TPS real | 2.500–4.000 |
| Latência | 50–300ms |
| Retry | 5–15% |
💣 Interpretação Bellacosa:
- Throughput alto = sistema ocupado
- TPS alto = sistema fazendo dinheiro acontecer
⚠️ TESTES DE CAOS (OBRIGATÓRIO)
👉 Derrube o consumidor (MX)
- TPS local continua alto
- Fila cresce
👉 Simule duplicação
- Idempotência segura
👉 Force latência
- TPS cai se você errar arquitetura
☠️ LIÇÃO FINAL
Sistema financeiro NÃO escala com tecnologia.
Escala com decisão arquitetural consciente.
🔥 FECHAMENTO (NÍVEL PRODUÇÃO)
Se você entendeu esse LAB, você já sabe:
- Por que Kafka não salva arquitetura ruim
- Por que consistência custa TPS
- Por que assíncrono é obrigatório
- Por que ledger não negocia