Translate

Mostrar mensagens com a etiqueta UOW. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta UOW. Mostrar todas as mensagens

segunda-feira, 29 de dezembro de 2025

💥 MQ NÃO É FILA — É O SEGURO DE VIDA DO SEU COBOL

 

Bellacosa Mainframe conheça MQ 

💥 MQ NÃO É FILA — É O SEGURO DE VIDA DO SEU COBOL

O guia definitivo de IBM MQ Fundamentals para quem vive no z/OS

Se você é um dev COBOL experiente, já sabe:
👉 o problema nunca foi o código…
👉 o problema sempre foi integração.

E é exatamente aí que entra o IBM MQ — o componente que transformou o mainframe de “ilha isolada” em coração da arquitetura moderna.


🕰️ ORIGEM — POR QUE O MQ EXISTE?

Antes do MQ:

  • Sistemas conversavam via sockets, arquivos, chamadas diretas
  • Tudo era síncrono
  • Se o destino caía → 💥 tudo quebrava

👉 A IBM criou o MQ (antigo WebSphere MQ) para resolver:

✔ Desacoplamento
✔ Confiabilidade
✔ Escalabilidade
✔ Integração heterogênea

💡 Tradução Bellacosa:

“MQ nasceu para impedir que um sistema derrube o outro.”


🧠 CONCEITO CENTRAL (O QUE MUDA TUDO)

👉 Aplicações não se falam diretamente

Elas falam com filas.


📦 MODELO MENTAL

COBOL A → MQ → COBOL B

✔ A envia
✔ MQ guarda
✔ B consome

👉 Simples… e revolucionário


💥 O TRIO QUE VOCÊ NUNCA ESQUECE

ConceitoPapel
MessageUnidade de dados
QueueArmazenamento
Queue ManagerCérebro

🧠 FRASE DE OURO

“Sem Queue Manager… não existe MQ.”


⚙️ COMO ISSO FUNCIONA (PASSO A PASSO REAL)

🔹 1. Aplicação COBOL envia mensagem

CALL 'MQPUT' USING ...

👉 Não importa:

  • Se o destino está online
  • Onde ele está
  • Qual linguagem usa

🔹 2. MQ armazena na fila

✔ Persistente (disco)
✔ Seguro
✔ Ordenado


🔹 3. Outra aplicação consome

CALL 'MQGET' USING ...

👉 Pode ser:

  • COBOL
  • Java
  • .NET
  • SAP

🔄 ASSÍNCRONO — O PODER REAL

👉 Diferente de CICS sync:

✔ Envia → continua
✔ Não bloqueia
✔ Alta performance

💡 Isso muda tudo em batch + online


💾 PERSISTENT vs NON-PERSISTENT

🔥 Persistent

✔ Gravado em disco
✔ Não perde
✔ Entrega garantida

👉 Use em:

  • Financeiro
  • Débito
  • Liquidação

⚡ Non-persistent

✔ Mais rápido
❌ Pode perder

👉 Use em:

  • Consulta
  • Logs
  • Eventos leves

🔄 UOW — TRANSAÇÃO DE VERDADE

👉 Unit of Work = grupo de mensagens

✔ Tudo ou nada

💡 Exemplo:

  • 4 mensagens
  • 1 falha

👉 MQ faz rollback de todas


💀 DLQ — DEAD LETTER QUEUE

👉 Quando dá ruim:

✔ Mensagem vai para DLQ
✔ Com motivo + código

💡 Easter egg de produção:

DLQ cheia = sistema gritando socorro


🔐 SEGURANÇA (NÍVEL ENTERPRISE)

🧠 OAM (Object Authority Manager)

✔ Controla acesso
✔ Quem pode PUT/GET


🔒 SSL / TLS

✔ Criptografia
✔ Autenticação


🔄 CONVERSÃO DE DADOS (A MÁGICA)

👉 COBOL (EBCDIC) ↔ Java (ASCII)

✔ MQ converte automaticamente

💡 Você nem vê acontecer


⚙️ CUSTOM CONVERSION

👉 Quer regra própria?

✔ Use exits

💡 Muito usado em legado


🧩 PADRÕES DE ARQUITETURA (OURO)


📦 Point-to-Point

✔ 1 → 1
✔ Request/Reply

👉 Clássico COBOL ↔ COBOL


💻 Client/Server

✔ Muitos → 1

👉 Centralização (ex: core bancário)


⚖️ Workload Sharing

✔ 1 fila → vários consumidores

👉 Paralelismo brutal

💡 Padrão:

Competing Consumers


📡 Publish/Subscribe

✔ 1 → muitos
✔ Desacoplado

👉 Base de Event-Driven Architecture


💣 PEGADINHAS QUE DERRUBAM SENIOR

❌ MQ é síncrono → ERRADO
❌ Aplicações se conectam direto → ERRADO
❌ Remote queue armazena mensagem → ERRADO
❌ MQ garante non-persistent → ERRADO


🧠 CENÁRIO REAL (BANCO)

👉 Fluxo típico:

  1. COBOL envia transação (MQPUT)
  2. MQ armazena (persistent)
  3. Workers processam (workload)
  4. Evento dispara (pub/sub)

💥 Tudo via MQ


🔥 CURIOSIDADES (EASTER EGGS)

  • MQ existe desde os anos 90 e ainda domina bancos
  • DLQ handler pode automatizar correções
  • MQ roda em:
    • z/OS
    • Linux
    • Windows
  • Pode transportar até 100MB por mensagem

💥 FRASES QUE DEFINEM MQ

“MQ desacopla no tempo, no espaço e na tecnologia.”

“Se caiu, MQ segura. Se voltou, MQ entrega.”

“COBOL não morreu… ele só ganhou MQ.”


🚀 CONCLUSÃO

Se você domina MQ:

✔ Seus sistemas não quebram fácil
✔ Integração deixa de ser dor
✔ Você pensa como arquiteto


💣 VERDADE FINAL

“MQ não é só middleware…
é o que separa sistemas frágeis de sistemas resilientes.”

 

domingo, 7 de dezembro de 2025

💥 O SISTEMA QUE NUNCA PODE PARAR: CICS TS no IBM z17 e o Segredo das Transações que Movem o Mundo

 

Bellacosa Mainframe explorando o CICS TS

💥 O SISTEMA QUE NUNCA PODE PARAR: CICS TS no IBM z17 e o Segredo das Transações que Movem o Mundo

Se você é um dev COBOL sênior e ainda escuta que seu código é “legado”… já passou da hora de virar o jogo.

Porque a verdade é outra:

💎 Você trabalha na plataforma que move bancos, governos e bilhões de transações por dia — o CICS Transaction Server rodando em IBM Z (como o z17).

Este artigo não é básico.
É uma visão de quem quer entender de verdade o coração do processamento transacional.


🏛️ Um pouco de história (e um choque de realidade)

CICS nasceu nos anos 60.

Sim… mais antigo que muita linguagem moderna.

Mas aqui está o plot twist:

👉 Ele nunca parou de evoluir.

Hoje o CICS:

  • Fala REST/JSON
  • Roda Java e Node.js
  • Integra com cloud
  • Expõe APIs
  • Suporta milhões de usuários simultâneos

Enquanto muita tecnologia “moderna” luta para resolver problemas que o CICS resolve há décadas.


⚡ O que é CICS TS (sem romantizar)

💎 CICS é um Transaction Processing Monitor (TP Monitor)

Traduzindo:

👉 Um sistema que garante que operações críticas aconteçam com segurança, velocidade e consistência.


🧠 O papel real do CICS

Ele é responsável por:

  • Executar programas (COBOL, Java, etc.)
  • Gerenciar milhares de usuários simultâneos
  • Controlar acesso a dados
  • Garantir integridade (ACID)
  • Coordenar commits e rollbacks
  • Recuperar falhas automaticamente

👉 Você escreve lógica de negócio.
👉 O CICS garante que ela não quebre o mundo.


💳 O conceito mais importante: TRANSAÇÃO

Uma transação é:

💎 Uma unidade lógica de trabalho que deve ser executada completamente ou não executada


🏦 Exemplo clássico (mas real)

Transferência de R$ 1.000:

  1. Debitar conta A
  2. Creditar conta B

Simples? Só na superfície.


💥 Se algo falhar no meio?

Sem CICS:

❌ Dinheiro some
❌ Sistema inconsistente

Com CICS:

👉 Tudo é desfeito (rollback)


⚖️ ACID no CICS — onde o jogo fica sério

🔹 Atomicidade

Tudo ou nada.

🔹 Consistência

Regras nunca são violadas.

🔹 Isolamento

Concorrência controlada.

🔹 Durabilidade

Após commit → permanente.


💡 Easter egg profissional:

“CICS não garante que sua transação vai terminar.
Ele garante que seu sistema nunca ficará inconsistente.”


🧩 Transaction vs Task vs Unit of Work (o trio que derruba entrevistas)

🏷️ Transaction

O pedido (ex: TRANSFERIR)

🧑‍💻 Task

A execução real para um usuário

🧩 Unit of Work

O conjunto de operações que devem ser concluídas juntas


🧠 Forma de lembrar

👉 Transaction = intenção
👉 Task = execução
👉 UOW = integridade


🔄 Passo a passo de uma transação CICS

Vamos simular algo real:

💳 Compra com cartão

1️⃣ Request chega (API, terminal, app)

2️⃣ CICS cria uma TASK

3️⃣ Programa COBOL é carregado

4️⃣ Locks são aplicados

5️⃣ DB2/VSAM são acessados

6️⃣ Logs são gravados

7️⃣ Syncpoint (commit ou rollback)

8️⃣ Resposta enviada

Tudo isso em milissegundos.


🔒 Concorrência — onde o CICS brilha

Milhões de usuários simultâneos?

Sem problema.


⚡ Multitasking

👉 Várias tasks rodando ao mesmo tempo


🧵 Multithreading

👉 Mesmo programa sendo usado por vários usuários


💎 Reentrância

👉 Código único + dados isolados

Sem isso, o mainframe colapsaria.


💥 Deadlock — quando o sistema entra em “briga”

🧠 Cenário clássico

Transação A segura recurso X e quer Y
Transação B segura Y e quer X

👉 Impasse total


🧯 Solução do CICS

  • Detecta o deadlock
  • Cancela uma transação
  • Libera recursos
  • Preserva integridade

💡 Curiosidade:

Deadlock não é erro — é efeito natural da concorrência.


🏗️ CICS como “SO dentro do SO”

Você não chama o z/OS diretamente.

Você chama o CICS:

EXEC CICS READ FILE(...)
EXEC CICS WRITEQ TS(...)
EXEC CICS LINK PROGRAM(...)

👉 O CICS fala com o sistema por você.


🌐 CICS moderno — muito além do 3270

Se você ainda pensa em tela verde, está atrasado.

Hoje o CICS:

  • Expõe APIs REST via z/OS Connect
  • Roda Java (Liberty JVM)
  • Executa Node.js
  • Integra com cloud
  • Participa de arquiteturas híbridas

📱 Exemplo real moderno

App mobile → API → z/OS Connect → CICS → DB2

Usuário nem imagina que existe um mainframe ali.


☁️ Cloud + CICS

Sim, isso existe.

CICS hoje suporta:

  • Bundles de aplicação
  • Deploy automatizado
  • Políticas de recursos
  • CICSPlex para escala

👉 Conceitos de cloud dentro do mainframe.


🧠 Curiosidades que poucos sabem

💡 CICS pode processar milhões de transações por segundo
💡 Muitos bancos nunca desligam CICS (uptime absurdo)
💡 Grande parte das transações financeiras globais passam por CICS
💡 Node.js roda dentro do CICS (sim, JavaScript no mainframe 😄)
💡 Seu COBOL pode virar API REST sem reescrever nada


🔥 Insight final (nível arquiteto)

💎 CICS não é legado — é infraestrutura invisível da economia mundial

Ele resolve problemas que arquiteturas modernas ainda tentam resolver:

  • Consistência forte
  • Alta concorrência
  • Recuperação automática
  • Baixa latência
  • Escala absurda

🚀 Conclusão — para dev COBOL sênior

Se você domina CICS:

👉 Você não é “dev legado”
👉 Você é especialista em sistemas de missão crítica