☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta IBM Z. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta IBM Z. Mostrar todas as mensagens

segunda-feira, 28 de setembro de 2026

☕ ALAN TURING ENTRA NO CPD — O MAPA DOS AGENTES DE IA EXPLICADO POR UM MAINFRAMER

 


☕ UM CAFÉ NO BELLACOSA MAINFRAME

☕ ALAN TURING ENTRA NO CPD — O MAPA DOS AGENTES DE IA EXPLICADO POR UM MAINFRAMER

De currículo invisível, PF3 e SDSF até WLM, JES2, CICS, Db2, MQ e IMS — nove conversas sobre agentes de inteligência artificial que acabaram revelando que alguns dos problemas mais modernos da computação possuem parentes muito antigos.



🎬 PRÓLOGO — EU NÃO ESTAVA ESCREVENDO UMA SÉRIE

Existe uma coisa curiosa em escrever durante muitos anos.

Às vezes você pensa que está escrevendo artigos independentes.

Um assunto aparece.

Você investiga.

Escreve.

Publica.

Toma outro café.

Algumas semanas depois aparece outra pergunta.

Outro artigo.

Outro café.

Até que um dia você olha para trás e percebe:

Espere um pouco...

Esses textos estão conversando entre si.

Foi exatamente o que aconteceu com uma sequência de artigos que comecei a construir usando Alan Turing como nosso visitante imaginário dentro de um CPD.

No começo, a pergunta parecia relativamente simples:

Como devemos preparar pessoas para trabalhar com inteligência artificial?

Depois apareceu outra:

Como será a interface de um agente que não apenas responde, mas executa ações?

E outra:

Como descobriremos o que esse agente está fazendo?

Depois:

Quem decide qual agente é mais importante?

Quem coloca o trabalho para executar?

Como controlamos uma transação?

Onde guardamos o estado?

Como agentes conversam sem depender uns dos outros?

Como organizamos memória e contexto?

Quando percebi, Alan Turing já estava andando pelo corredor do CPD acompanhado de alguns velhos conhecidos:

ISPF
SDSF
WLM
JES2
CICS
Db2
MQ
IMS

E foi aí que apareceu a hipótese que une esta série inteira:

Talvez alguns dos problemas que estamos descobrindo agora nos agentes de IA sejam novos em implementação, escala e comportamento — mas não necessariamente novos como problemas de engenharia.

O mainframe passou décadas resolvendo problemas como:

IDENTIDADE
AUTORIZAÇÃO
EXECUÇÃO
PRIORIDADE
OBSERVABILIDADE
TRANSAÇÃO
ESTADO
MENSAGERIA
RECUPERAÇÃO
AUDITORIA
CONCORRÊNCIA
DEPENDÊNCIAS

Naturalmente:

JES2 não é um framework de agentes.

SDSF não é observabilidade de LLM.

WLM não é um scheduler de prompts.

CICS não é LangGraph.

Db2 não é memória de IA.

MQ não é protocolo mágico entre agentes.

IMS não foi inventado para armazenar a infância digital de um robô.

😂

A comparação é conceitual.

E justamente por isso ela é tão interessante.

Este artigo é o mapa dessa viagem.



🧠 CAPÍTULO 1 — O CURRÍCULO INVISÍVEL DA INTELIGÊNCIA ARTIFICIAL

Antes de construir o agente, precisamos construir quem vai trabalhar com ele

👉 ALAN TURING E O CURRÍCULO INVISÍVEL DA INTELIGÊNCIA ARTIFICIAL

Nossa viagem começa antes da arquitetura.

Começa nas pessoas.

Existe uma tentação enorme diante de qualquer revolução tecnológica:

NOVA TECNOLOGIA
      ↓
NOVO CURSO
      ↓
NOVA FERRAMENTA
      ↓
CERTIFICADO
      ↓
PRONTO

Mas nunca foi tão simples.

Quem viveu várias gerações da informática sabe disso.

Aprender COBOL não significava apenas conhecer:

MOVE
PERFORM
IF
EVALUATE

O programador acabava aprendendo silenciosamente muitas outras coisas:

  • decomposição de problemas;

  • leitura de documentação;

  • disciplina operacional;

  • análise de impacto;

  • debugging;

  • responsabilidade sobre dados;

  • relacionamento com usuários;

  • conhecimento do negócio;

  • avaliação de riscos.

Existe, portanto, um currículo formal e outro quase invisível.

Com IA acontece algo semelhante.

Prompt engineering pode ser útil.

Conhecer modelos também.

Mas trabalhar seriamente com IA começa a exigir algo muito maior:

IA
│
├── pensamento crítico
├── validação
├── segurança
├── privacidade
├── conhecimento de domínio
├── avaliação de resultados
├── automação
├── ética
├── governança
└── capacidade de perguntar

Este primeiro artigo estabelece o fundamento humano da série.

Antes de perguntar:

O que o agente pode fazer?

precisamos perguntar:

Quem saberá dizer se aquilo que ele fez está correto?

Esse detalhe acompanhará todos os capítulos seguintes.



🤖 CAPÍTULO 2 — A UX DOS AGENTES

Quando PF3 voltou para salvar a inteligência artificial

👉 ALAN TURING E A UX DOS AGENTES — QUANDO PF3, MAXCC E RACF VOLTARAM PARA SALVAR A INTELIGÊNCIA ARTIFICIAL

Então demos autonomia à máquina.

E imediatamente apareceu outro problema.

Um chatbot responde.

Um agente age.

Essa diferença parece pequena até colocarmos ferramentas nas mãos dele.

Imagine:

USUÁRIO
   ↓
OBJETIVO
   ↓
AGENTE
   ├── consulta arquivos
   ├── chama API
   ├── pesquisa banco
   ├── altera documento
   ├── envia mensagem
   └── executa processo

De repente a interface precisa responder perguntas que o velho chatbot não precisava responder:

O QUE ESTÁ FAZENDO?

POR QUE ESTÁ FAZENDO?

QUAL ETAPA ESTÁ EXECUTANDO?

POSSO PARAR?

POSSO DESFAZER?

QUEM AUTORIZOU?

O QUE JÁ FOI ALTERADO?

E eis que aparece nosso velho amigo:

PF3

O PF3 torna-se uma metáfora perfeita para interruptibilidade.

O artigo também traz RACF para a conversa por meio do princípio de menor privilégio.

Se um agente precisa ler relatórios:

READ

por que entregar:

ALTER
DELETE
CONTROL

?

Não entregue uma bazuca para matar um mosquito.

E jamais resolva problemas de autorização usando a filosofia:

DÊ ACESSO A TUDO
       ↓
DEPOIS A GENTE VÊ

Quatro décadas de segurança corporativa já ensinaram como essa história termina.

O capítulo estabelece uma nova regra:

Autonomia sem controle não é sofisticação. É risco operacional.



🔭 CAPÍTULO 3 — O SDSF DOS AGENTES

Não basta o robô trabalhar. Precisamos enxergar o que está acontecendo.

👉 ALAN TURING E O SDSF DOS AGENTES — O QUE DIABOS O ROBÔ ESTÁ FAZENDO?

Agora o agente está trabalhando.

Maravilha.

Só existe uma pequena pergunta:

O que ele está fazendo?

Quem trabalhou com batch conhece uma rotina quase instintiva:

SUBMIT
  ↓
SDSF
  ↓
ST
  ↓
JOB
  ↓
OUTPUT

Não ficamos olhando para o terminal durante quinze minutos vendo:

Working...

Queremos estado.

Queremos evidência.

Queremos saber onde o processamento está.

A documentação da IBM confirma exatamente essa função histórica do SDSF: monitorar e controlar processamento, visualizar jobs e seus outputs e permitir ações como hold, release e cancel.

Transportando o princípio para agentes:

AGENTE FINANCEIRO

OBJETIVO:
Consolidar relatório mensal

STATUS:
Executando

ETAPA 1 — localizar arquivos       OK
ETAPA 2 — validar período          OK
ETAPA 3 — consultar Db2            OK
ETAPA 4 — reconciliar valores      RUNNING
ETAPA 5 — gerar relatório          WAITING
ETAPA 6 — enviar relatório         APPROVAL

Esse talvez seja um dos conceitos mais importantes da série.

Autonomia aumenta a necessidade de observabilidade.

Quanto menos diretamente o humano controla cada passo, mais importante se torna enxergar o estado da execução.



⚖️ CAPÍTULO 4 — O WLM DOS AGENTES

Quando descobrimos que nem todo trabalho possui a mesma importância

👉 ALAN TURING E O WLM DOS AGENTES

Agora temos outro problema.

Imagine mil agentes querendo trabalhar simultaneamente.

Um está:

resumindo newsletter

Outro:

processando fraude bancária

Outro:

gerando imagem

Outro:

atendendo cliente VIP

Outro:

fechando folha de pagamento

Todos deveriam receber os mesmos recursos?

Evidentemente não.

Bem-vindo ao velho problema de workload management.

No z/OS, WLM trabalha justamente com classes de serviço, metas de desempenho e importância relativa do trabalho. Quando todos os objetivos não podem ser satisfeitos simultaneamente, essa importância participa das decisões de gerenciamento dos recursos.

Nos agentes podemos imaginar:

AGENT WORKLOAD
│
├── CRITICAL
│   └── fraude
│
├── HIGH
│   └── atendimento
│
├── NORMAL
│   └── relatórios
│
└── DISCRETIONARY
    └── indexação histórica

E aparece outra ideia fundamental:

Agentes competirão por recursos.

Tokens custam.

GPU custa.

CPU custa.

APIs possuem limites.

Bancos possuem capacidade.

Pessoas disponíveis para aprovação humana também são um recurso limitado.

O problema deixa de ser:

O agente consegue executar?

e passa a ser:

Qual trabalho merece recursos primeiro?

Alan Turing acaba de conhecer o WLM.



🏭 CAPÍTULO 5 — O JES2 DOS AGENTES

Alguém precisa receber, organizar e despachar o trabalho

👉 ALAN TURING E O JES2 DOS AGENTES

Temos prioridades.

Temos recursos.

Temos agentes.

Agora alguém precisa organizar a bagunça.

No mundo batch, JES recebe jobs, mantém trabalhos em filas, encaminha jobs para execução e administra seus outputs. É exatamente assim que a própria documentação introdutória do z/OS descreve suas funções fundamentais.

Conceitualmente:

SUBMISSÃO
    ↓
  FILA
    ↓
CLASSIFICAÇÃO
    ↓
DESPACHO
    ↓
EXECUÇÃO
    ↓
 RESULTADO

Agora substitua JOB por TASK:

TASK-8472
OBJETIVO = analisar contratos
PRIORIDADE = HIGH
AGENTE = LEGAL-07
STATUS = WAITING

Começamos a perceber que um ecossistema corporativo de agentes precisará responder:

Quem recebeu a tarefa?

Onde ela está?

Quem executará?

Está esperando?

Está rodando?

Falhou?

Pode reiniciar?

Existe dependência?

Qual resultado produziu?

Não significa transformar JES2 em orquestrador de LLM.

Significa reconhecer que gerenciamento do ciclo de vida do trabalho é um problema antigo.


⚡ CAPÍTULO 6 — O CICS DOS AGENTES

Quando inteligência encontra transação

👉 ALAN TURING E O CICS DOS AGENTES

Até aqui nossos agentes estavam realizando trabalho.

Mas empresas não vivem apenas de trabalho.

Vivem de transações.

Comprar.

Vender.

Reservar.

Cancelar.

Transferir.

Atualizar.

Consultar.

Registrar.

CICS existe justamente no universo de processamento transacional. Uma transação dispara programas associados, pode envolver diversos programas e recursos, e muitas instâncias podem executar concorrentemente.

Agora imagine um agente recebendo:

Resolva o problema deste cliente.

Ele talvez precise:

CONSULTAR PEDIDO
      ↓
CONSULTAR PAGAMENTO
      ↓
VALIDAR ENTREGA
      ↓
CALCULAR CRÉDITO
      ↓
ATUALIZAR CADASTRO

Não estamos mais falando apenas de linguagem.

Estamos mexendo no estado real do negócio.

Aqui surge uma fronteira essencial:

PENSAR
≠
AGIR

e:

GERAR UMA RESPOSTA
≠
EXECUTAR UMA TRANSAÇÃO

Quando um agente atravessa essa fronteira, entram em cena concorrência, integridade, autorização, recuperação e consistência.

O simpático chatbot acabou de entrar em produção.

Agora a brincadeira ficou séria.


🗄️ CAPÍTULO 7 — O DB2 DOS AGENTES

Quando o agente descobriu que memória também precisa de COMMIT

👉 ALAN TURING E O DB2 DOS AGENTES

Um agente sem estado vive eternamente no presente.

Para realizar trabalhos complexos ele precisa guardar coisas.

Por exemplo:

objetivos
tarefas
resultados
aprovações
clientes
documentos
eventos
checkpoints
estado do workflow

Mas guardar informação introduz um problema:

Quando uma mudança se torna definitiva?

O velho Db2 imediatamente levanta a mão.

No Db2, uma unidade de trabalho representa uma sequência recuperável de operações; COMMIT confirma as mudanças e ROLLBACK pode desfazer alterações ainda não confirmadas.

Isso produz uma analogia poderosa para agentes.

Imagine:

LER
 ↓
ANALISAR
 ↓
PROPOR ALTERAÇÃO
 ↓
VALIDAR
 ↓
APROVAÇÃO
 ↓
COMMIT

Se algo falhar:

ROLLBACK

Mas existe uma pegadinha deliciosa.

Nem tudo no mundo possui rollback.

Se o agente:

ENVIAR EMAIL

não existe:

ROLLBACK EMAIL

que retire a mensagem da cabeça de quem leu.

😂

Portanto sistemas de agentes precisam distinguir ações reversíveis de ações irreversíveis.

O Db2 nos ensina algo maior que SQL:

Estado precisa possuir fronteiras de consistência.


📨 CAPÍTULO 8 — O MQ DOS AGENTES

Mensagem enviada não significa destinatário disponível

👉 ALAN TURING E O MQ DOS AGENTES — MENSAGEM ENVIADA NÃO SIGNIFICA CONVERSA SÍNCRONA

Então nossos agentes começaram a conversar.

E imediatamente alguém inventou:

AGENTE A
   ↓
AGENTE B
   ↓
AGENTE C

Parece maravilhoso.

Até o agente B ficar indisponível.

Ou lento.

Ou ocupado.

Ou reiniciar.

Ou o agente C morar em outro ambiente.

É exatamente aqui que décadas de mensageria corporativa começam a parecer extremamente atuais.

IBM MQ permite que aplicações se comuniquem através de mensagens e filas, inclusive executando em momentos, velocidades e locais diferentes. Produtor e consumidor podem ficar desacoplados.

Portanto:

AGENTE A
   ↓
 MENSAGEM
   ↓
  FILA
   ↓
AGENTE B

A existência da fila muda completamente a arquitetura.

O produtor não precisa necessariamente ficar parado olhando para o consumidor.

Podemos construir sistemas:

ASSÍNCRONOS
RESILIENTES
DESACOPLADOS
DISTRIBUÍDOS

Mas surgem novos problemas:

ordenação
duplicidade
correlação
persistência
retry
dead letter
idempotência
timeout

A IBM também documenta que filas mantêm mensagens até que aplicações possam recuperá-las e que consumidores e produtores podem operar desacoplados.

De repente, multiagentes deixam de parecer uma reunião de robôs conversando.

Começam a parecer...

sistemas distribuídos.

Bem-vindo ao inferno.

Tem café na entrada.


🌳 CAPÍTULO 9 — O IMS DOS AGENTES

Quando Alan Turing descobriu que encontrar um filho é fácil se você souber quem é o pai

👉 ALAN TURING E O IMS DOS AGENTES — QUANDO O MUNDO VIROU UMA ÁRVORE

Finalmente chegamos ao IMS.

E aparece uma pergunta fascinante:

Toda memória precisa ser representada como tabela?

Não.

IMS trabalha historicamente com modelo hierárquico.

Temos relações:

ROOT
 │
 ├── CHILD
 │     ├── CHILD
 │     └── CHILD
 │
 └── CHILD

Na terminologia oficial do IMS, segmentos possuem relações parent/child; um segmento pode inclusive ser filho de um segmento e pai de outro.

Isso oferece uma metáfora extraordinariamente útil para determinados tipos de contexto de agentes.

Imagine:

CLIENTE
│
├── PEDIDOS
│   ├── PEDIDO 8472
│   │   ├── ITENS
│   │   ├── PAGAMENTO
│   │   └── ENTREGA
│   └── PEDIDO 9011
│
├── CONTRATOS
│
└── ATENDIMENTOS

Contexto frequentemente possui relações naturais.

A própria IBM explica uma diferença fundamental: numa base hierárquica IMS, segmentos ao longo de um caminho hierárquico já possuem relações implícitas com pais e filhos, enquanto no modelo relacional relacionamentos normalmente são construídos explicitamente por joins.

Isso não significa:

Vamos substituir vector databases por IMS!

Calma.

😂

A lição é mais interessante:

A forma como representamos conhecimento influencia profundamente a maneira como conseguimos navegar por ele.

E assim chegamos da execução à memória.


🗺️ CAPÍTULO 10 — AGORA OLHE PARA O MAPA INTEIRO

Depois dos nove artigos, podemos finalmente enxergar a arquitetura escondida.

┌───────────────────────────────────────┐
│       CURRÍCULO INVISÍVEL             │
│ Quem está preparado para trabalhar?   │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│          UX / PF3 / RACF              │
│ Como controlar autonomia?             │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               SDSF                    │
│ O que está acontecendo?               │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│                WLM                    │
│ Qual trabalho é mais importante?      │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               JES2                    │
│ Quem recebe e despacha o trabalho?    │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               CICS                    │
│ Como executar ações de negócio?       │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               Db2                     │
│ Como manter estado consistente?       │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│                MQ                     │
│ Como componentes conversam?           │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               IMS                     │
│ Como organizar e navegar contexto?    │
└───────────────────────────────────────┘

Agora a série revela algo que talvez não estivesse completamente evidente quando escrevemos o primeiro artigo.

Não estamos mais discutindo simplesmente:

INTELIGÊNCIA ARTIFICIAL

Estamos discutindo:

SISTEMAS DE INTELIGÊNCIA ARTIFICIAL

Essa diferença é gigantesca.


🧩 CAPÍTULO 11 — O AGENTE DEIXOU DE SER O CENTRO

Durante algum tempo olhamos para IA assim:

PROMPT
  ↓
LLM
  ↓
RESPOSTA

Só que um sistema corporativo real começa a parecer muito mais com:

                    USUÁRIO
                       │
                       ↓
                   OBJETIVO
                       │
                       ↓
                 ORQUESTRADOR
                       │
        ┌──────────────┼──────────────┐
        ↓              ↓              ↓
     AGENTE A       AGENTE B       AGENTE C
        │              │              │
        └──────────────┼──────────────┘
                       ↓
                    TOOLS
        ┌──────────────┼──────────────┐
        ↓              ↓              ↓
       DB             MQ             API
        │
        ↓
      ESTADO

E ao redor disso precisamos:

IDENTIDADE
AUTORIZAÇÃO
OBSERVABILIDADE
AUDITORIA
PRIORIZAÇÃO
RECUPERAÇÃO
LIMITES
CHECKPOINTS
APROVAÇÕES
MENSAGERIA
TRANSAÇÕES

O LLM continua importante.

Mas ele passa a ser um componente da arquitetura.

Essa talvez seja a evolução mais importante de toda a série.


🧙 CAPÍTULO 12 — TURING FAZ A PERGUNTA ERRADA

Alan Turing olha para nosso jovem programador COBOL.

E pergunta:

— Então finalmente construímos uma máquina que pensa?

O programador olha para o CPD.

Olha para:

SDSF
WLM
JES2
CICS
DB2
MQ
IMS

Depois olha para o pequeno agente trabalhando no terminal.

E responde:

— Não sei.

Turing fica surpreso.

— Depois de tudo isso?

— Talvez a pergunta tenha mudado.

— Como assim?

O programador pega uma caneta.

E escreve no quadro:

CAN MACHINES THINK?

Risca.

Embaixo escreve:

CAN MACHINES WORK
SAFELY,
RELIABLY,
OBSERVABLY
AND
RESPONSIBLY?

Turing olha.

Sorri.


🦖 CAPÍTULO 13 — O MAINFRAME NÃO PREVIU A IA

E precisamos deixar uma coisa muito clara.

O mainframe não previu os LLMs.

JES2 não é ancestral tecnológico direto de agentes.

WLM não administra pensamentos.

CICS não executa raciocínio.

Db2 não possui consciência.

MQ não faz robôs fofinhos conversarem.

IMS não é cérebro artificial.

O valor da comparação está em outro lugar.

Durante décadas sistemas corporativos precisaram responder:

Quem pode executar?

O que pode executar?

Quando executará?

Com qual prioridade?

Sobre quais recursos?

Como sabemos que terminou?

O que acontece quando falha?

Como desfazemos mudanças?

Como componentes se comunicam?

Como reconstruímos o que aconteceu?

Essas perguntas reaparecem quando agentes deixam o laboratório e começam a operar sistemas reais.

Não copiamos a solução.

Reaproveitamos o conhecimento de engenharia.


🥚 EASTER EGG — O PROGRAMA QUE JÁ ESTAVA RODANDO

Turing caminha até o último terminal do CPD.

Na tela existe apenas:

READY

Ele digita:

WHO

A máquina responde:

TURING

Ele pergunta:

STATUS

Resposta:

ACTIVE

Turing sorri.

— Interessante.

O programador COBOL pergunta:

— O quê?

— Passamos nove capítulos tentando descobrir como controlar agentes inteligentes.

— Sim.

Turing aponta para o CPD.

— E vocês passaram cinquenta anos construindo sistemas para controlar humanos, programas, jobs, transações e mensagens.

Silêncio.

O operador do outro lado da sala grita:

— JOB ABENDOU!

Turing pergunta:

— S0C7?

— S0C7!

Turing pega seu café.

— Algumas coisas realmente nunca mudam.

😂


☕ EPÍLOGO — TALVEZ O FUTURO TENHA CHEIRO DE CPD

Existe uma tendência natural na tecnologia de acreditar que tudo começou ontem.

Cada nova geração cria novas palavras.

Novos frameworks.

Novos diagramas.

Novas abstrações.

E muitas delas realmente representam avanços extraordinários.

Mas engenharia também possui memória.

Quando vejo agentes de IA discutindo:

orchestration
observability
workload
state
messaging
transactions
authorization
checkpoints
recovery

é impossível para quem viveu mainframe não sentir um estranho déjà-vu.

Não porque sejam as mesmas tecnologias.

Não são.

Mas porque computadores continuam enfrentando alguns problemas fundamentais:

TRABALHO PRECISA SER ORGANIZADO.

RECURSOS SÃO FINITOS.

ESTADO PRECISA SER PROTEGIDO.

FALHAS ACONTECEM.

MENSAGENS SE PERDEM.

SISTEMAS FICAM INDISPONÍVEIS.

USUÁRIOS COMETEM ERROS.

PROGRAMAS COMETEM ERROS.

AUTOMAÇÃO AMPLIFICA ERROS.

E agora acrescentamos uma criatura nova:

AGENTES PODEM ESCOLHER A PRÓXIMA AÇÃO.

Isso muda muita coisa.

Mas não apaga setenta anos de engenharia de sistemas.

Talvez faça justamente o contrário.

Torne esse conhecimento ainda mais valioso.

Por isso esta série não é apenas sobre Alan Turing.

Não é apenas sobre mainframe.

E nem sequer é apenas sobre inteligência artificial.

É sobre algo muito mais antigo:

COMO CONSTRUÍMOS SISTEMAS NOS QUAIS PODEMOS CONFIAR?

Começamos ensinando pessoas.

Depois demos autonomia à máquina.

Criamos formas de observá-la.

Priorizamos seu trabalho.

Organizamos suas filas.

Controlamos suas transações.

Protegemos seu estado.

Permitimos que conversasse com outros sistemas.

Finalmente começamos a organizar sua memória.

E talvez este seja apenas o começo.

Porque no fundo do CPD existe uma porta.

Turing acabou de encontrá-la.

Na porta existe uma pequena placa:

AGENTS
AUTHORIZED PERSONNEL ONLY

Ele olha para nós.

— Vamos?

O programador COBOL suspira.

Salva tudo.

Confere o spool.

E responde:

— Só depois do café.

☕

Bellacosa Mainframe

quarta-feira, 23 de setembro de 2026

🐷 A FÁBULA DOS PORCOS ASSADOS NO MAINFRAME

 

Bellacosa Mainframe entre porcos e computadores visoes do sistema legado

☕ Um Café no Bellacosa Mainframe

🐷 A FÁBULA DOS PORCOS ASSADOS NO MAINFRAME

Ou: como uma empresa construiu 47 subsistemas, 312 jobs, 18 filas de MQ e uma War Room para continuar incendiando a floresta

Era uma vez uma enorme empresa que possuía um mainframe.

Ninguém sabia exatamente quando o primeiro programa havia entrado em produção.

Alguns diziam 1974.

Outros juravam ter encontrado um comentário COBOL contendo:

* ALTERADO EM 12/08/1969 - J.SILVA

Mas ninguém tinha coragem de investigar aquilo profundamente.

O importante era que o mainframe funcionava.

E dentro daquele mainframe existia o mais importante sistema corporativo da empresa:


🐷 O SISTEMA DE ASSAR PORCOS

A história começara décadas antes.

Certo dia, um incêndio acidental atingiu uma floresta próxima ao Data Center.

Havia porcos na floresta.

Quando o incêndio terminou, descobriram que os porcos haviam sido assados.

E estavam deliciosos.

Um programador teve então uma ideia:

— Quando precisarmos de porcos assados, podemos incendiar outra floresta.

Funcionou.

Foi criado o primeiro procedimento operacional:

PROC-PORCO-001 — Procedimento para Incêndio Controlado de Floresta para Produção de Porcos Assados.

Durante algum tempo, tudo correu maravilhosamente.

Quando alguém queria porco assado:

  1. colocavam os porcos na floresta;

  2. incendiavam a floresta;

  3. esperavam;

  4. recolhiam os porcos;

  5. serviam o jantar.

Era simples.

Até a empresa crescer.



🖥️ A INDUSTRIALIZAÇÃO DO PORCO

O número de clientes aumentou.

Agora não eram dez porcos.

Eram dez mil.

Foi necessário automatizar o processo.

Um programador COBOL escreveu:

PORC001

Outro criou:

PORC002

Depois vieram:

PORC003

PORC003A

PORC003B

PORC003B2

e finalmente:

PORC003B2N

Ninguém sabia onde estava PORC003B1.

Mas havia referências a ele em três copybooks.

Por segurança, ninguém mexia.

O processo passou a ser executado pelo JES2.

Às 22:00:

JOB PORCO01

selecionava os animais.

Às 22:30:

JOB FLOREST1

identificava uma floresta disponível.

Às 23:00:

JOB FIRE001

iniciava o incêndio.

À 01:00:

JOB ASSADO1

calculava o grau provável de cozimento.

Às 03:17, invariavelmente, alguma coisa dava errado.

Então começava a War Room.



🔥 O PRIMEIRO INCIDENTE

Certa madrugada, metade dos porcos saiu crua.

A outra metade virou carvão.

Foi declarado:

SEV1 — CRITICAL INCIDENT

Trinta e sete pessoas entraram na conferência.

— É COBOL?

— Não.

— É CICS?

— Não.

— Db2?

— Normal.

— MQ?

— Algumas filas estão crescendo.

— CPU?

— 43%.

— WLM?

— Dentro da política.

— Storage?

— Normal.

Finalmente alguém perguntou:

— E o fogo?

Silêncio.

Ninguém da reunião pertencia à equipe responsável pelo fogo.

Foi necessário abrir um chamado.

INC00473192

A equipe respondeu:

FIRE SYSTEM OPERATING AS DESIGNED.

O incidente foi encerrado como:

ROOT CAUSE UNKNOWN.



🐷 CRIA-SE A ENGENHARIA DE PORCOS

A direção decidiu que aquilo jamais poderia acontecer novamente.

Foi criado o departamento de:

Enterprise Pig Roasting Architecture — EPRA.

O departamento estabeleceu padrões.

Agora cada porco precisava possuir:

  • PIG-ID;

  • peso;

  • idade;

  • raça;

  • temperatura inicial;

  • floresta de destino;

  • horário de entrada;

  • previsão de cozimento;

  • classificação de criticidade.

Foi criado um banco Db2.

TB_PORCO
TB_FLORESTA
TB_INCENDIO
TB_ASSAMENTO
TB_TEMPERATURA
TB_PORCO_FLORESTA

Um arquiteto observou que TB_PORCO_FLORESTA possuía uma relação N:N problemática.

Foram necessárias seis reuniões.

Enquanto isso, os porcos continuavam queimando.


📊 OBSERVABILIDADE

Alguém afirmou:

— O problema é falta de observabilidade.

Todos concordaram.

Foram instalados sensores.

Dashboards.

Métricas.

Logs.

Tracing.

Alertas.

Agora era possível saber em tempo real:

PIGS_PER_SECOND

MEAN_TIME_TO_ROAST

FOREST_BURN_RATE

AVERAGE_PIG_TEMPERATURE

PIG_ERROR_RATE

CARBONIZED_PIG_PERCENTAGE

Um enorme monitor foi colocado no NOC.

Quando um porco queimava demais, uma linha ficava vermelha.

Os executivos ficaram impressionados.

— Agora temos visibilidade!

Os porcos continuavam queimando.

Mas agora isso podia ser acompanhado num dashboard.


☁️ A MODERNIZAÇÃO

Chegou então um consultor.

Depois de analisar a arquitetura durante três semanas, apresentou 186 slides.

O primeiro dizia:

DIGITAL PIG TRANSFORMATION

A conclusão era clara:

o problema estava no legado.

Era necessário modernizar.

O COBOL PORC001 foi encapsulado por uma API REST.

Agora era possível incendiar a floresta utilizando:

POST /api/v1/pigs/roast

Payload:

{
  "pigId": "0004711",
  "forest": "F023",
  "roastingLevel": "MEDIUM"
}

A API chamava z/OS Connect.

Que chamava CICS.

Que chamava COBOL.

Que gravava Db2.

Que publicava MQ.

Que finalmente executava:

INCENDIAR FLORESTA.

O CIO apresentou o projeto numa conferência:

“Transformamos nosso processo tradicional de produção de alimentos em uma plataforma API-first.”

Todos aplaudiram.

Os porcos continuavam sendo assados incendiando florestas.


☁️🐷 PORCOS NA CLOUD

Um novo estudo concluiu que o problema era outro.

A floresta estava on-premises.

Foi criado então:

Hybrid Cloud Pig Roasting Architecture.

O cadastro dos porcos foi para a cloud.

O sistema de incêndio permaneceu no mainframe.

Kafka transmitia eventos:

PIG_ENTERED_FOREST

FOREST_IGNITED

PIG_TEMPERATURE_CHANGED

PIG_ROASTED

PIG_OVERCOOKED

Um Data Lake armazenava vinte anos de telemetria de porcos queimados.

Machine Learning começou a prever quais porcos provavelmente seriam carbonizados.

A precisão chegou a 94%.

Um executivo perguntou:

— E conseguimos evitar que eles queimem?

O cientista de dados respondeu:

— Ainda não. Mas conseguimos prever com excelente precisão quais irão queimar.

O projeto recebeu um prêmio de inovação.


🤖 CHEGA A INTELIGÊNCIA ARTIFICIAL

Em 2026 surgiu a grande esperança.

IA Generativa.

Foi criado:

PigGPT Enterprise Edition.

A IA recebeu documentação, runbooks, logs, dumps, métricas SMF e quarenta anos de incidentes.

Perguntaram:

— Como melhorar o sistema de assar porcos?

A IA respondeu:

“Talvez seja possível assar os porcos diretamente utilizando uma fonte controlada de calor, sem incendiar uma floresta inteira.”

A resposta foi classificada como:

LOW CONFIDENCE / REQUIRES HUMAN VALIDATION

Um comitê de governança de IA foi convocado.

Após oito reuniões decidiu-se que a sugestão representava risco arquitetural porque não respeitava o processo corporativo estabelecido.


👨‍💻 JOÃO BOM-SENSO ENTRA NO CPD

Foi então que apareceu João.

João era programador COBOL.

Não era Distinguished Engineer.

Não era Enterprise Architect.

Não possuía certificação em transformação digital de porcos.

Ele estava apenas acompanhando um incidente.

Olhou os diagramas.

Olhou os jobs.

Olhou os dashboards.

Olhou os milhares de linhas COBOL.

Olhou Kafka.

Olhou MQ.

Olhou Kubernetes.

Olhou o Data Lake.

Depois perguntou:

— Por que vocês incendeiam uma floresta inteira?

A sala ficou silenciosa.

Um arquiteto respondeu:

— Para assar os porcos.

— Sim. Mas por que não fazemos uma pequena fogueira e colocamos o porco sobre ela?

Silêncio.

Alguém desligou o microfone.

Outro escreveu no chat privado:

“Quem convidou esse cara?”


🧪 A PROVA DE CONCEITO

João pegou um porco.

Algumas brasas.

Uma grelha.

Esperou.

O porco ficou perfeitamente assado.

Nenhuma floresta foi incendiada.

Nenhum batch foi executado.

Nenhuma mensagem MQ.

Nenhuma chamada REST.

Nenhum evento Kafka.

Nenhum Data Lake.

Nenhum SEV1.

Custo operacional:

quase zero.

O resultado foi apresentado à direção.

Por alguns segundos João acreditou que seria promovido.

Então começaram as perguntas.

— E o departamento de Engenharia de Incêndios?

— Não precisaria mais existir dessa forma.

— E nossos especialistas certificados em Propagação Florestal?

— Também não.

— E os 312 jobs?

— Poderíamos desativá-los.

— E nosso contrato de observabilidade?

— Grande parte deixaria de ser necessária.

— E o Data Lake?

— Continuaria existindo para outras coisas.

— E os vinte anos de dados históricos de incêndios?

— Seriam históricos.

— E nossa API?

— Provavelmente desnecessária para isso.

— E Kafka?

— Para assar um porco?

João começou a perceber o problema.

Ele não estava propondo apenas uma grelha.

Estava propondo destruir um ecossistema.


🏢 O SISTEMA NÃO ERA MAIS O SISTEMA

Durante cinquenta anos a empresa construíra organizações inteiras ao redor do método de incendiar florestas.

Existiam:

engenheiros de incêndio;

analistas de capacidade de incêndio;

DBAs especializados em tabelas de porcos;

operadores de batch;

especialistas em temperatura;

arquitetos de integração;

consultores;

auditores;

fornecedores;

contratos;

KPIs;

SLAs;

certificações;

procedimentos;

comitês;

diretorias.

O objetivo original havia sido:

assar porcos.

Mas lentamente o objetivo transformara-se em:

operar eficientemente o Sistema Corporativo de Incêndio de Florestas.

Essa diferença parecia pequena.

Não era.

Era gigantesca.


🧠 O DIRETOR EXPLICA A REALIDADE

O diretor chamou João.

— Sua ideia é interessante.

João sorriu.

— Obrigado.

— Mas você não compreende toda a complexidade.

João parou de sorrir.

O diretor mostrou o organograma.

Centenas de pessoas dependiam daquele processo.

Havia contratos plurianuais.

Depreciação de ativos.

Compliance.

Auditoria.

Treinamentos.

Orçamento.

Fornecedores.

Roadmaps.

Projetos estratégicos.

— Você está olhando apenas para o problema técnico — explicou o diretor.

João respondeu:

— Eu estou olhando para o porco.

O diretor respirou fundo.

— Exatamente. Esse é o problema.


🐷 O PORCO ESQUECIDO

Naquela noite João caminhou pelo Data Center.

Passou pelos enormes computadores.

Viu os painéis.

Os dashboards.

As luzes.

Os gráficos.

Tudo extraordinariamente sofisticado.

Então percebeu algo.

A organização sabia medir praticamente tudo.

Sabia quantas árvores queimavam.

Quanto combustível utilizava.

Quanto tempo levava.

Quantos processadores consumia.

Quantas mensagens trafegavam.

Quantos incidentes aconteciam.

Quanto custava cada floresta.

Mas havia uma pergunta que quase ninguém fazia:

“Ainda precisamos fazer isso dessa maneira?”

Essa pergunta não aparecia no SMF.

Não estava no RMF.

Não aparecia no Splunk.

Não existia no Grafana.

Não estava no Jira.

Não havia campo para ela no ServiceNow.

Porque nenhum sistema de observabilidade consegue detectar sozinho que o próprio processo observado deixou de fazer sentido.


☕ EPÍLOGO — O VERDADEIRO LEGADO

E aqui está a armadilha.

Legado não é COBOL.

Legado não é mainframe.

Legado não é VSAM.

Legado não é CICS.

Um programa COBOL com cinquenta anos que executa perfeitamente uma função necessária pode ser uma extraordinária peça de engenharia.

Enquanto isso, um microsserviço escrito ontem pode nascer legado se automatizar brilhantemente uma coisa que ninguém deveria continuar fazendo.

Modernização verdadeira não significa trocar:

COBOL → Java

ou:

MAINFRAME → CLOUD

ou:

BATCH → KAFKA

A pergunta anterior é muito mais importante:

POR QUE ESTE PROCESSO EXISTE?

Depois:

QUAL PROBLEMA ELE RESOLVE?

Depois:

AINDA PRECISAMOS RESOLVÊ-LO?

E somente então:

QUAL É A MELHOR TECNOLOGIA?

Porque você pode colocar uma API REST na frente do incêndio.

Pode publicar o incêndio no Kafka.

Pode executar o controle do incêndio em containers.

Pode armazenar os incêndios num Data Lake.

Pode usar IA para prever incêndios.

Pode criar dashboards espetaculares mostrando incêndios em tempo real.

E pode chamar tudo isso de transformação digital.

Mas...

se para conseguir um simples porco assado você ainda precisa incendiar uma floresta inteira,

talvez o problema nunca tenha sido o COBOL.

Talvez o problema seja que, em algum momento dos últimos cinquenta anos,

todo mundo começou a cuidar do SISTEMA e ninguém mais perguntou pelo porco.


🥚 EASTER EGG DO OPERADOR

Dizem que até hoje, exatamente às 03:17, existe um job desconhecido no scheduler:

JOB PORK999

Ninguém sabe quem o criou.

Ele executa apenas:

IF FLORESTA-EM-CHAMAS
    DISPLAY 'MAS POR QUE?'
END-IF.

O programa possui somente um comentário:

*> J.BOM-SENSO - NAO REMOVER.

Ninguém remove.

Afinal...

é legado.

Inspirado em fabula dos porcos Juício a La Escuela Cirigliano, Forcade Tilich Editorial Editorial Humanitas – Buenos Aires, 1974

sábado, 19 de setembro de 2026

🧭 MARCO POLO E A ROTA DA SEDA DIGITAL — QUANDO O COBOL DESCOBRIU O IBM CONFLUENT

 

Bellacosa Mainframe e o IBM Confluent

☕ Um Café no Bellacosa Mainframe

🧭 MARCO POLO E A ROTA DA SEDA DIGITAL — QUANDO O COBOL DESCOBRIU O IBM CONFLUENT

COBOL, CICS, Db2, IBM MQ, Apache Kafka, IBM Confluent, CDC, IBM Data Gate, Kafka Connect, Topics, Partitions, Offsets, Schema Registry, Flink, APIs, Cloud, IA — e o dia em que Marco Polo descobriu que o mainframe não precisava viajar para que seus dados atravessassem o mundo.

Sob a tutela de Marco Polo, mercador, explorador e contador de histórias de mundos que pareciam impossivelmente distantes — até alguém construir uma rota entre eles.



🎬 PRÓLOGO — NÃO PRECISAMOS MOVER O IMPÉRIO

Imagine um jovem programador COBOL diante de um terminal.

Na tela:

EXEC SQL
   UPDATE CONTA
      SET SALDO = SALDO - :WS-VALOR
    WHERE NUM_CONTA = :WS-CONTA
END-EXEC.

EXEC SQL
   COMMIT
END-EXEC.

Ele olha para aquilo e pensa:

— Pronto. Transferência concluída.

Marco Polo, sentado ao lado do terminal com um mapa enorme aberto sobre a mesa, pergunta:

— E quem ficou sabendo?

O programador responde:

— O Db2.

Marco continua:

— E o sistema antifraude?

Silêncio.

— O aplicativo mobile?

Mais silêncio.

— O Data Lake?

Silêncio novamente.

— O sistema de analytics?

O programador começa a desconfiar daquela conversa.

— E a inteligência artificial?

Finalmente ele responde:

— Marco... o que você quer exatamente?

Marco Polo aponta para o COMMIT.

— Quero construir uma rota daqui até lá.

E assim começa nossa viagem.

Porque IBM Confluent não é simplesmente "mais uma ferramenta de integração".

Para compreender sua importância dentro do universo mainframe precisamos entender uma mudança conceitual muito maior:

transformar dados armazenados em dados em movimento.



🗺️ CAPÍTULO 1 — O MAINFRAME NÃO É UMA ILHA

Durante décadas, empresas construíram seus sistemas centrais sobre tecnologias como:

COBOL
CICS
IMS
Db2
VSAM
JCL
IBM MQ

E esses sistemas continuam processando quantidades gigantescas de transações.

Banco.

Cartão.

Seguro.

Companhia aérea.

Varejo.

Governo.

Logística.

Imagine nosso IBM Z como uma grande cidade comercial.

Dentro dela existem mercados:

CICS

Armazéns:

Db2
VSAM
IMS DB

Mensageiros:

IBM MQ

Funcionários:

COBOL
PL/I
Java

Guardas:

RACF

E registros das atividades da cidade:

SMF

Tudo funciona.

O problema aparece quando outras cidades precisam saber rapidamente o que aconteceu.

Cloud.

Aplicações mobile.

Analytics.

Data Lakes.

Sistemas antifraude.

Machine Learning.

IA generativa.

Agentes de IA.

Marco Polo olha para o mapa e percebe:

O problema não é necessariamente reconstruir a cidade. Precisamos construir rotas comerciais.

Essa distinção é fundamental.

Modernização não significa obrigatoriamente:

MAINFRAME
    |
    v
MIGRAR TUDO
    |
    v
CLOUD

Pode significar:

             IBM Z
               |
        SYSTEM OF RECORD
               |
               v
          EVENT STREAM
               |
      +--------+--------+
      |        |        |
    Cloud      IA    Analytics

O COBOL continua processando a transação.

O dado viaja.



🐫 CAPÍTULO 2 — A ROTA DA SEDA DOS DADOS

A antiga Rota da Seda não transportava apenas seda.

Transportava:

  • mercadorias;

  • informações;

  • tecnologias;

  • culturas;

  • ideias;

  • conhecimento.

Confluent faz algo conceitualmente parecido com dados.

Imagine que uma transação ocorreu:

TRANSFERÊNCIA
Conta: 123456
Valor: R$ 850

No mundo tradicional podemos pensar:

COBOL
   |
   v
CICS
   |
   v
Db2
   |
   v
COMMIT

O banco de dados agora sabe que o saldo mudou.

Mas o restante da empresa talvez também precise saber.

Podemos representar esse acontecimento como um evento:

{
  "eventType": "TRANSFER_COMPLETED",
  "account": "123456",
  "amount": 850.00,
  "currency": "BRL"
}

Agora começa a viagem:

IBM Z
  |
  v
EVENTO
  |
  v
CONFLUENT / KAFKA
  |
  +------> Antifraude
  |
  +------> Mobile
  |
  +------> Analytics
  |
  +------> Data Lake
  |
  +------> IA

Uma transação ocorreu uma vez.

Mas vários sistemas podem ter interesse nela.

Essa é uma das ideias centrais do event streaming.



📜 CAPÍTULO 3 — ESTADO E ACONTECIMENTO NÃO SÃO A MESMA COISA

Considere:

CONTA: 123456
SALDO: R$ 4.150

Isso representa estado.

Agora observe:

09:00 PIX recebido       +1000
10:14 Compra             -200
12:07 Saque              -300
14:32 Depósito           +500
18:44 Transferência      -850

Isso representa uma sequência de acontecimentos.

Essa diferença parece pequena.

Mas arquiteturalmente é enorme.

O banco de dados responde muito bem:

Qual é o estado atual?

Um stream de eventos ajuda a responder:

O que aconteceu?

E principalmente:

O que está acontecendo?



📻 CAPÍTULO 4 — APACHE KAFKA: A ESTAÇÃO COMERCIAL DA ROTA

No coração do ecossistema Confluent encontramos o Apache Kafka.

Kafka é uma plataforma distribuída de event streaming.

Para começar, nosso jovem COBOLero precisa conhecer quatro palavras:

Producer
Topic
Consumer
Event

Imagine:

PRODUCER
   |
   | publica evento
   v
TOPIC
   |
   +------> CONSUMER A
   |
   +------> CONSUMER B
   |
   +------> CONSUMER C

Um producer produz eventos.

Um topic organiza eventos.

Consumers consomem eventos.

Parece simples.

E conceitualmente é.

O poder aparece quando colocamos milhões ou bilhões de acontecimentos nessa estrada.


🏷️ CAPÍTULO 5 — TOPIC: A PLACA DA ESTRADA

Imagine uma cidade com diferentes rotas:

payments
customers
accounts
card-transactions
fraud-alerts

No Kafka podemos ter topics semelhantes:

bank.payments
bank.accounts
bank.transactions
bank.fraud

Cada topic representa determinado fluxo de eventos.

Por exemplo:

bank.transactions

poderia receber:

Compra
Compra
PIX
Saque
Transferência
Compra
Depósito

Pense no topic como uma estrada especializada.

Marco Polo não coloca:

seda
cavalos
pimenta
ouro
documentos secretos

sem nenhuma organização na mesma carroça.

Boa arquitetura exige organização.


🧩 CAPÍTULO 6 — PARTITIONS: QUANDO UMA ESTRADA NÃO É SUFICIENTE

Agora imagine:

100 eventos por segundo

Tudo bem.

Mas o banco cresce.

Temos:

100.000 eventos por segundo

Uma única rota pode tornar-se insuficiente.

Kafka permite dividir um topic em partitions:

                 PAYMENTS
                    |
       +------------+------------+
       |            |            |
       v            v            v
 Partition 0    Partition 1    Partition 2

Isso possibilita paralelismo.

Diferentes consumers podem processar diferentes partitions simultaneamente.

O mainframeiro já conhece a ideia geral:

Dividir trabalho mantendo controle.

Nada de particularmente alienígena.

Só trocaram as placas da estrada.


🔑 CAPÍTULO 7 — KEY: NÃO MANDE A CARROÇA ERRADA

Existe um problema.

Imagine eventos da conta:

123456

Chegam:

DEPÓSITO
SAQUE
TRANSFERÊNCIA
COMPRA

A ordem pode ser importante.

Muito importante.

Em Kafka podemos utilizar uma key.

Por exemplo:

KEY = ACCOUNT_NUMBER

Eventos com determinada chave podem ser encaminhados consistentemente para a mesma partition.

Assim conseguimos preservar ordenação dentro daquela partition.

Para sistemas financeiros isso é crucial.

Porque:

CREDITAR 100
DEBITAR 100

pode representar uma história diferente de:

DEBITAR 100
CREDITAR 100

Ordem não é detalhe.

Ordem pode ser negócio.


🔢 CAPÍTULO 8 — OFFSET: O MARCO QUILOMÉTRICO DA ROTA

Cada evento dentro de uma partition possui uma posição.

Chamamos essa posição de:

OFFSET

Imagine:

Partition 0

offset 1001
offset 1002
offset 1003
offset 1004
offset 1005

Um consumidor pode registrar até onde chegou.

Algo como:

— Marco, já percorremos a rota até o marco 1004.

Então continuamos:

1005
1006
1007

Essa característica abre uma possibilidade extremamente poderosa:

REPLAY

Podemos voltar.

Dependendo da retenção disponível, um consumidor pode reler acontecimentos anteriores.

Imagine que criamos hoje um novo sistema analítico.

Ele não necessariamente precisa começar apenas nos eventos novos.

Podemos querer:

REPROCESSAR

eventos históricos disponíveis.

Para um mainframeiro acostumado com restart, checkpoint, logs e reprocessamento, isso começa a soar estranhamente familiar.


📬 CAPÍTULO 9 — "ENTÃO KAFKA É IBM MQ?"

Não.

Essa pergunta precisa aparecer cedo porque a confusão é natural.

IBM MQ

Uma boa simplificação mental:

Entregue esta mensagem.

PRODUTOR
   |
   v
QUEUE
   |
   v
CONSUMIDOR

Exemplo:

PROCESSAR PAGAMENTO 12345

Parece uma ordem.

Faça isso.


Kafka

Uma aproximação melhor:

Isto aconteceu.

PAGAMENTO 12345 FOI PROCESSADO

Então:

                    EVENTO
                       |
       +---------------+---------------+
       |               |               |
       v               v               v
     Fraud           Mobile         Analytics

Não significa que MQ não possa trabalhar com eventos nem que Kafka não possa participar de workflows.

A distinção é um modelo mental inicial, não uma fronteira absoluta.


🧙 CAPÍTULO 10 — CONFLUENT NÃO É APENAS KAFKA COM GRAVATA

Se Apache Kafka é o motor fundamental, Confluent constrói uma plataforma empresarial ao redor desse universo.

Podemos pensar pedagogicamente:

Apache Kafka
     |
     v
motor de event streaming

Enquanto:

Confluent
     |
     +--> Kafka
     +--> Connectors
     +--> Schema Registry
     +--> Governança
     +--> Segurança
     +--> Stream Processing
     +--> Flink
     +--> Operação

Isso importa em grandes empresas.

Porque instalar Kafka é uma coisa.

Operar streaming empresarial envolvendo milhares de aplicações, segurança, schemas, governança e consumidores é outra aventura completamente diferente.

Marco Polo poderia comprar um cavalo.

Mas organizar uma rota comercial entre continentes exigia muito mais que possuir cavalos.


🗄️ CAPÍTULO 11 — Db2 ENCONTRA A ROTA DA SEDA

Agora chegamos ao ponto especialmente interessante para IBM Z.

Imagine:

COBOL
  |
  v
CICS
  |
  v
Db2

O programa executa:

UPDATE ACCOUNT
SET BALANCE = BALANCE - 500
WHERE ACCOUNT_ID = 123;

Depois:

COMMIT

Db2 precisa registrar alterações para garantir propriedades transacionais e recuperação.

Existem logs.

E aqui surge uma ideia poderosa:

Em vez de consultar constantemente as tabelas procurando alterações, podemos capturar mudanças a partir dos logs.

Isso nos leva a:

CDC — CHANGE DATA CAPTURE


🔍 CAPÍTULO 12 — O VIGIA QUE NÃO FICA PERGUNTANDO

Imagine um sistema fazendo:

Mudou?

Mudou?

Mudou?

Mudou?

Mudou?

Mudou?

Ou pior:

SELECT *
FROM TRANSACTIONS
WHERE LAST_UPDATE > ...

continuamente.

Isso é polling.

Agora imagine outra estratégia:

INSERT aconteceu
UPDATE aconteceu
DELETE aconteceu

Capturamos essas mudanças.

Isso é a essência do Change Data Capture.


🚪 CAPÍTULO 13 — IBM DATA GATE FOR CONFLUENT

Aqui nossa rota chega diretamente ao IBM Z.

O IBM Data Gate for Confluent permite transformar alterações provenientes do Db2 for z/OS em streams consumíveis pelo ecossistema Confluent.

Conceitualmente:

COBOL
   |
   v
CICS
   |
   v
Db2 for z/OS
   |
 INSERT
 UPDATE
 DELETE
   |
 COMMIT
   |
   v
Db2 LOG
   |
   v
IBM Data Gate for Confluent
   |
   v
Kafka Connect
   |
   v
Confluent
   |
   v
Topics

Isso é interessantíssimo.

Porque talvez não seja necessário alterar centenas de programas COBOL apenas para fazer:

PUBLICAR NO KAFKA

A mudança do banco pode ser capturada.

O velho programa continua trabalhando.

A rota moderna aparece ao redor dele.


⚠️ CAPÍTULO 14 — CDC NÃO É EVENTO DE NEGÓCIO

Agora Marco Polo levanta o dedo.

— Cuidado.

Essa talvez seja uma das lições mais importantes de todo este artigo.

Considere:

CUSTOMER.STATUS

A -> B

CDC pode dizer:

Uma coluna mudou.

Mas o negócio talvez queira dizer:

CUSTOMER_ACCOUNT_SUSPENDED

com:

reason = FRAUD_INVESTIGATION

Isso é muito mais rico.

Portanto:

mudança de dado não é automaticamente evento de negócio.

Temos dois conceitos:

CDC
"algo mudou no dado"

e:

BUSINESS EVENT
"algo significativo aconteceu no negócio"

Confundir os dois pode transformar sua arquitetura Kafka num gigantesco banco de dados desmontado em JSON.


📖 CAPÍTULO 15 — SCHEMA REGISTRY: O COPYBOOK DO VIAJANTE

Agora chegamos a algo que fará qualquer COBOLero sorrir.

Temos:

01 PAYMENT-RECORD.
   05 ACCOUNT-NUMBER PIC X(10).
   05 AMOUNT         PIC S9(9)V99 COMP-3.
   05 CURRENCY       PIC X(03).

COPYBOOK define estrutura.

Agora imagine eventos.

Versão 1:

{
  "account": "123",
  "amount": 500
}

Um desenvolvedor decide melhorar:

{
  "accountNumber": "123",
  "amount": 500,
  "currency": "BRL"
}

Pronto.

Talvez quinze consumidores tenham quebrado.

Bem-vindo ao problema de evolução de schemas.

Confluent possui Schema Registry, permitindo administrar schemas e compatibilidade.

Pedagogicamente:

COPYBOOK
   |
estrutura compartilhada
   |
COBOL

versus:

Schema Registry
   |
estrutura dos eventos
   |
Producers / Consumers

Não são tecnologicamente equivalentes.

Mas o velho programador COBOL entende imediatamente por que aquilo existe.


🌊 CAPÍTULO 16 — FLINK: PROCESSANDO A ÁGUA ENQUANTO O RIO PASSA

Transportar eventos é apenas parte da aventura.

Talvez precisemos analisá-los enquanto passam.

Entre em cena:

Apache Flink.

Imagine:

CARD TRANSACTIONS
        |
        v
      FLINK
        |
        v
FRAUD ALERTS

Uma regra conceitual:

SE

5 compras
+
3 países
+
30 segundos

ENTÃO

GERAR ALERTA

Antigamente poderíamos imaginar:

23:00

//FRAUD JOB

O batch analisa o dia.

Streaming permite:

evento
evento
evento
evento
       |
       v
 análise imediata

Batch continua tendo seu lugar.

Mas agora temos outra ferramenta.


🔌 CAPÍTULO 17 — E O z/OS CONNECT?

Outra confusão comum.

API e streaming não são necessariamente concorrentes.

Imagine um cliente solicitando:

POST /transfer

Temos:

Mobile
   |
   v
API
   |
   v
z/OS Connect
   |
   v
CICS
   |
   v
COBOL

A pergunta é:

Faça uma transferência.

Depois a transação ocorre.

Agora:

COBOL
   |
   v
Db2
   |
   v
COMMIT
   |
   v
EVENTO
   |
   v
Confluent

A API entra.

O evento sai.

Nossa arquitetura fica:

                MOBILE
                   |
                   | POST /transfer
                   v
             z/OS Connect
                   |
                   v
                CICS
                   |
                   v
                COBOL
                   |
                   v
                  Db2
                   |
                 COMMIT
                   |
                   v
                EVENTO
                   |
                   v
              CONFLUENT
                   |
       +-----------+-----------+
       |           |           |
       v           v           v
     Fraud        CRM          IA

Agora temos uma arquitetura realmente interessante.


🏰 CAPÍTULO 18 — RACF NÃO PROTEGE O MUNDO INTEIRO

O jovem COBOLero pergunta:

— Mas temos RACF.

Marco Polo responde:

— Dentro das muralhas.

Quando o dado sai:

IBM Z
   |
   v
Confluent
   |
   v
Cloud

a superfície de segurança muda.

Precisamos considerar:

TLS
certificados
autenticação
autorização
ACLs
criptografia
segredos
PII
governança
retenção
auditoria
mascaramento

Uma regra importante:

A política de proteção precisa acompanhar o dado.

Não adianta possuir uma fortaleza maravilhosa se você coloca documentos secretos numa carroça sem escolta assim que eles atravessam o portão.


🤖 CAPÍTULO 19 — IA DESCOBRE O MAINFRAME EM TEMPO REAL

Aqui a história ganha outro nível.

Imagine IA alimentada assim:

23:00 extrair Db2
00:00 ETL
01:00 Data Lake
02:00 processamento

Ela conhece o passado.

Agora:

19:31:01 transação
19:31:02 evento
19:31:02 stream
19:31:03 processamento

Mudamos a pergunta.

Antes:

O que aconteceu ontem?

Agora:

O que está acontecendo agora?

Para antifraude, logística, recomendação, observabilidade e automação, essa diferença pode ser gigantesca.


📜 CAPÍTULO 20 — KAFKA É QUASE UM SMF DO NEGÓCIO?

Aqui temos nosso Easter Egg mainframeiro.

Quem trabalha com z/OS já convive com event streaming conceitualmente há muito tempo.

Pense no SMF:

JOB iniciou
JOB terminou
usuário acessou
CPU consumida
dataset aberto
transação executada

Depois:

SMF
 |
 +--> Segurança
 +--> Auditoria
 +--> Capacity
 +--> Performance
 +--> Billing

Agora observe:

Kafka
 |
 +--> Fraud
 +--> Analytics
 +--> Mobile
 +--> AI
 +--> Data Lake

Marco Polo olha para o velho programador mainframe.

O velho programador olha para Kafka.

Os dois ficam em silêncio.

Finalmente alguém diz:

— Então vocês reinventaram algumas coisas que nós já fazíamos?

😂

Não exatamente.

Mas existem ideias surpreendentemente familiares.

Easter Egg 03:17: se algum incidente acontecer exatamente nesse horário, procure primeiro o consumer lag antes de culpar o COBOL.


🧨 CAPÍTULO 21 — NÃO JOGUE 4.000 TABELAS NO KAFKA

Um arquiteto empolgado entra na sala:

— Temos quatro mil tabelas Db2!

Marco Polo sorri.

— Excelente.

— Vamos colocar todas no Kafka!

Marco fecha o mapa.

Não.

Essa decisão pode produzir:

4.000 tabelas
      |
      v
milhares de topics
      |
      v
schemas
PII
dados inúteis
custos
consumidores desconhecidos
dependências
governança impossível

Antes pergunte:

Qual dado?

Qual evento?

Quem consome?

Por quê?

Qual retenção?

Qual latência?

Qual chave?

Qual schema?

Qual SLA?

Contém PII?

Quem é o owner?

Replay é permitido?

Qual é a classificação de segurança?

Kafka não substitui arquitetura.

Confluent não substitui arquitetura.

Cloud não substitui arquitetura.

IA definitivamente não substitui arquitetura.


🛠️ CAPÍTULO 22 — PASSO A PASSO PARA O PROGRAMADOR COBOL

Se você está começando, estude nessa ordem.

Passo 1 — Entenda a transação

Comece pelo que conhece:

COBOL
CICS
Db2
COMMIT
ROLLBACK

Entenda Unit of Work.

Passo 2 — Entenda evento

Transforme:

UPDATE ACCOUNT

mentalmente em:

ACCOUNT_BALANCE_CHANGED

Depois pergunte se existe um evento de negócio ainda melhor:

PAYMENT_COMPLETED

Passo 3 — Aprenda Kafka básico

Domine:

Producer
Consumer
Topic
Partition
Key
Offset
Consumer Group
Retention
Replay

Passo 4 — Compare MQ

Pergunte:

Estou enviando uma ordem?

ou

Estou anunciando um acontecimento?

Isso já elimina muita confusão.

Passo 5 — Estude CDC

Aprenda:

INSERT
UPDATE
DELETE
LOG
CDC

Passo 6 — Estude Schema Registry

Pense como alguém que já conhece copybook.

Quem é dono do contrato?

Como evolui?

Quem quebra se mudar?

Passo 7 — Estude streaming

Depois avance para:

Flink
windowing
aggregation
filtering
stream processing

Passo 8 — Só então coloque IA

Não comece:

"QUERO IA!"

Comece:

Qual evento?
Qual dado?
Qual qualidade?
Qual latência?
Qual governança?

Depois coloque IA.


☕ CAPÍTULO 23 — A CAFETERIA DE MARCO POLO

Vamos fechar com uma analogia.

Imagine nossa cafeteria.

Db2

É o livro-caixa.

Pergunta:

Qual é o saldo?


API

Cliente pergunta ao balcão:

Quanto custa um espresso?


IBM MQ

Garçom leva uma ordem:

Prepare dois cafés.


Kafka

O sino toca:

DOIS CAFÉS FORAM VENDIDOS.

Então:

estoque escuta
financeiro escuta
fidelidade escuta
analytics escuta
IA escuta

Confluent

É toda a infraestrutura comercial que administra essas rotas.


Data Gate

Observa mudanças relevantes vindas do Db2 e ajuda a colocá-las na rota.


Schema Registry

É o formulário comercial dizendo exatamente como deve ser descrita uma carga.


Flink

É o mercador que analisa as mercadorias enquanto as caravanas ainda estão passando.


🧭 EPÍLOGO — O COBOL NÃO PRECISA FAZER A VIAGEM

Depois de meses viajando pela Rota da Seda Digital, nosso jovem programador retorna ao mesmo terminal.

Na tela ainda existe:

EXEC SQL
   UPDATE CONTA
      SET SALDO = SALDO - :WS-VALOR
    WHERE NUM_CONTA = :WS-CONTA
END-EXEC.

EXEC SQL
   COMMIT
END-EXEC.

Ele olha para Marco Polo.

— Então não precisamos necessariamente reescrever isso?

Marco sorri.

— Finalmente você entendeu a viagem.

O programa COBOL pode continuar fazendo aquilo para o qual foi criado.

Processar uma transação crítica.

Com segurança.

Consistência.

Performance.

Décadas de regras de negócio.

Ao redor dele construímos rotas:

                         IBM Z
                           |
                     CICS / IMS
                           |
                         COBOL
                           |
                          Db2
                           |
                        COMMIT
                           |
                           v
                     Db2 LOG / CDC
                           |
                           v
                     DATA GATE
                           |
                           v
                       CONFLUENT
                           |
                         KAFKA
                           |
          +----------------+----------------+
          |                |                |
          v                v                v
        CLOUD             AI            ANALYTICS
          |                |                |
          +----------------+----------------+
                           |
                           v
                    NOVOS SERVIÇOS

E talvez essa seja uma das ideias mais importantes para um programador COBOL iniciante compreender sobre modernização.

Modernizar não significa necessariamente substituir.

Às vezes significa conectar.

Às vezes significa expor.

Às vezes significa desacoplar.

Às vezes significa transformar uma alteração em evento.

O IBM Z continua sendo o System of Record.

O Db2 continua preservando o estado confiável.

CICS continua processando transações.

COBOL continua executando regras de negócio.

MQ continua transportando mensagens onde mensageria confiável é necessária.

z/OS Connect abre a porta das APIs.

Kafka cria rios de eventos.

Confluent organiza essas novas rotas.

Data Gate ajuda dados do Db2 for z/OS a entrar nelas.

Flink processa acontecimentos enquanto eles passam.

Cloud, analytics e IA tornam-se consumidores dessa informação.

E assim descobrimos algo que Marco Polo provavelmente entenderia melhor que muitos arquitetos modernos:

Você não precisa mover uma cidade inteira para estabelecer comércio com o outro lado do mundo.

Você precisa construir uma boa rota.

No século XIII ela atravessava desertos, montanhas, impérios e oceanos.

No século XXI ela pode começar humildemente assim:

EXEC SQL
   COMMIT
END-EXEC

e terminar milhares de quilômetros — ou alguns milissegundos — depois:

COBOL
  ↓
CICS
  ↓
Db2
  ↓
COMMIT
  ↓
CDC
  ↓
IBM Data Gate
  ↓
Kafka Connect
  ↓
IBM Confluent
  ↓
Topic
  ↓
Partition
  ↓
Consumer
  ↓
Flink
  ↓
Cloud
  ↓
IA

Marco Polo fecha o mapa.

O programador COBOL olha novamente para o terminal.

E percebe que aquele programa de quarenta anos não estava necessariamente preso ao passado.

Talvez apenas estivesse esperando alguém construir uma estrada.

☕ Bellacosa Mainframe

Porque algumas das tecnologias mais interessantes do futuro começam com alguém perguntando o que realmente aconteceu depois do COMMIT.

sexta-feira, 18 de setembro de 2026

⚔️ RICK GLADIATOR E AS TRÊS DUNGEONS DA ARQUITETURA

 

Bellacosa Mainframe e os tipos de arquitetura

☕ Um Café no Bellacosa Mainframe

⚔️ RICK GLADIATOR E AS TRÊS DUNGEONS DA ARQUITETURA

Monolith, Microservices, Serverless, COBOL, CICS, Db2, VSAM, MQ, APIs, eventos, consistência distribuída, observabilidade — e o dia em que um programador iniciante descobriu que quebrar um programa em 47 pedaços não o transformava automaticamente em arquiteto.

Sob a tutela de Rick Gladiator, de Shinmai Ossan Boukensha.

 




🎬 PRÓLOGO — VOCÊ TEM 30 ANOS E AINDA USA UM MONÓLITO?

Rick Gladiator conhece muito bem aquela sensação.

Você chega à Guilda dos Aventureiros e encontra uma turma de jovens prodígios.

Um lança magia.

Outro derrota monstros gigantescos.

Outro provavelmente nasceu com KUBERNETES-SKILL LEVEL 99.

Então alguém olha para o velho programador COBOL e pergunta:

— Você ainda trabalha com monólito?

Silêncio.

O programador olha para o terminal.

Rick coloca a espada sobre a mesa.

E responde:

— Antes de chamar alguma coisa de velha, descubra por que ela ainda está funcionando.

Bem-vindo à dungeon.

Hoje não vamos simplesmente comparar três caixas coloridas de um diagrama:

MONOLITH
MICROSERVICES
SERVERLESS

Vamos descobrir o que realmente muda, onde cada arquitetura funciona, quais problemas aparecem quando distribuímos uma aplicação e, principalmente, como tudo isso conversa com COBOL, CICS, Db2, VSAM, MQ e o Mainframe.

Porque existe uma primeira armadilha escondida no mapa:

Monolith, Microservices e Serverless não são exatamente três alternativas equivalentes.

Rick já percebeu o monstro.

Vamos entrar.



🏰 CAPÍTULO 1 — A PRIMEIRA DUNGEON: O MONÓLITO

Imagine que precisamos desenvolver um comércio eletrônico.

Temos:

Produtos
Carrinho
Pedidos
Pagamentos
Clientes

Uma arquitetura monolítica poderia ser representada assim:

             CLIENTE
                |
                v
       +----------------+
       |   APLICAÇÃO    |
       |----------------|
       | Produtos       |
       | Carrinho       |
       | Pedidos        |
       | Pagamentos     |
       | Clientes       |
       +----------------+
                |
                v
            DATABASE

Existe uma aplicação contendo diferentes responsabilidades.

A definição simplificada costuma ser:

One application = one deployable unit.

Mas Rick imediatamente ergue a mão.

— Cuidado.

No mundo Mainframe isso precisa de uma explicação adicional.

Um sistema COBOL pode possuir:

PGMAUTH
PGMCUST
PGMLIMIT
PGMPAY
PGMBILL
PGMSTAT

Pode utilizar:

COPYBOOKS
SUBPROGRAMAS
CICS
Db2
VSAM
JCL
PROCEDURES

e possuir centenas ou milhares de módulos.

Mesmo assim, arquiteturalmente, esses componentes podem formar uma grande aplicação fortemente relacionada.

Portanto:

Monólito não significa obrigatoriamente um programa gigantesco com três milhões de linhas.

Essa confusão aparece bastante.



🧱 CAPÍTULO 2 — MONÓLITO NÃO SIGNIFICA CÓDIGO RUIM

Rick encontra o primeiro aventureiro da guilda.

Ele possui uma camiseta:

MICROSERVICES OR DIE

Rick pergunta:

— Por quê?

— Porque monólito é ruim.

— Por quê?

— Porque é monólito.

Rick começa a procurar sua espada.

Um monólito pode ser perfeitamente modular.

Imagine:

+--------------------------------+
| SISTEMA DE CARTÕES             |
|                                |
| AUTHORIZATION MODULE           |
| CUSTOMER MODULE                |
| LIMIT MODULE                   |
| BILLING MODULE                 |
| PAYMENT MODULE                 |
| FRAUD MODULE                   |
+--------------------------------+

Cada responsabilidade pode estar adequadamente separada internamente.

Em COBOL:

CALL 'LIMITCHK' USING CUSTOMER-DATA
                      TRANSACTION-DATA
                      RETURN-DATA.

Uma chamada local entre componentes pode ser extremamente rápida.

Não precisamos necessariamente atravessar:

HTTP
TCP/IP
TLS
API Gateway
JSON
Authentication
Load Balancer
Service Discovery

para calcular o limite de um cartão.

A simplicidade também é uma característica arquitetural.



⚡ CAPÍTULO 3 — RICK DESCOBRE QUE A REDE TEM LATÊNCIA

Imagine isto:

CALL 'CALCLIM' USING WS-CUSTOMER
                     WS-LIMIT.

Agora alguém decide:

— CALCLIM precisa virar microservice!

A arquitetura passa a ser algo semelhante a:

COBOL
  |
  v
HTTP CLIENT
  |
  v
TCP/IP
  |
  v
TLS
  |
  v
API GATEWAY
  |
  v
AUTHENTICATION
  |
  v
LIMIT SERVICE
  |
  v
DATABASE

Arquiteturalmente ganhamos várias possibilidades.

O serviço pode ser implantado independentemente.

Pode escalar independentemente.

Outra aplicação pode reutilizá-lo.

Mas Rick pergunta:

— E quanto custou atravessar essa ponte?

Porque agora temos:

latência
timeout
retry
serialização
desserialização
falha de rede
DNS
autenticação
observabilidade

A operação que antes acontecia dentro do mesmo processo agora atravessa uma rede.

Não significa que microservices sejam ruins.

Significa apenas:

Toda arquitetura compra vantagens pagando com alguma forma de complexidade.



🔵 CAPÍTULO 4 — A SEGUNDA DUNGEON: MICROSERVICES

Agora vamos quebrar nosso comércio eletrônico.

                    CLIENT
                       |
                       v
                 API GATEWAY
                       |
          +------------+------------+
          |            |            |
          v            v            v
       PRODUCT        CART        ORDER
       SERVICE       SERVICE      SERVICE
          |            |            |
          v            v            v
       MongoDB        Redis      PostgreSQL

A ideia é que cada serviço represente uma capacidade de negócio relativamente independente.

Podemos ter:

Customer Service
Order Service
Payment Service
Inventory Service
Fraud Service

Idealmente cada um possui autonomia suficiente para evoluir sem exigir um gigantesco deploy coordenado.

Essa palavra é fundamental:

INDEPENDÊNCIA

Queremos independência de:

desenvolvimento
deploy
escalabilidade
tecnologia
ciclo de vida
equipe
dados

Por exemplo, durante a Black Friday:

Product Service = 20 instâncias
Cart Service    = 80 instâncias
Order Service   = 50 instâncias
Fraud Service   = 30 instâncias

Podemos aumentar apenas aquilo que está sofrendo pressão.

Essa é uma diferença importante em relação a muitos monólitos.


🐉 CAPÍTULO 5 — VOCÊ DERROTOU O MONÓLITO E DESBLOQUEOU 17 NOVOS MONSTROS

Rick abre a próxima porta.

Há uma placa:

Distributed Systems Dungeon

Ele imediatamente percebe que alguma coisa vai dar errado.

Imagine uma compra.

Em uma aplicação centralizada poderíamos ter conceitualmente:

BEGIN TRANSACTION

UPDATE INVENTORY
INSERT ORDER
INSERT PAYMENT

COMMIT

Algo falhou?

ROLLBACK

É claro que sistemas reais são mais complexos, mas o banco de dados fornece mecanismos transacionais poderosos.

Agora distribuímos tudo:

Order Service
      |
      +----> Inventory Service
      |
      +----> Payment Service
      |
      +----> Shipping Service

Resultado:

Inventory = OK
Payment   = OK
Shipping  = ERROR

E agora?

Não existe necessariamente um botão mágico:

ROLLBACK UNIVERSO

Temos vários sistemas, bancos e estados independentes.

Bem-vindo a conceitos como:

Eventual Consistency
Saga
Compensating Transactions
Idempotency
Retry
Timeout
Dead-Letter Queue
Circuit Breaker

Rick olha para o programador iniciante.

— Ainda acha que dividir tudo em serviços automaticamente simplifica a aplicação?


🔁 CAPÍTULO 6 — IDEMPOTÊNCIA: ATAQUE O MONSTRO DUAS VEZES SEM MATAR DOIS CLIENTES

Suponha que um serviço receba:

PAY CUSTOMER 100

Ele processa.

Mas a resposta não retorna por causa de um timeout.

O chamador pensa:

"Não funcionou."

E envia novamente.

Se o sistema não estiver preparado:

Pagamento 1 = R$100
Pagamento 2 = R$100

Temos problema.

Uma operação idempotente procura permitir que repetições controladas não produzam efeitos duplicados indevidos.

Podemos trabalhar com algo como:

TRANSACTION-ID = ABC123

Antes de processar novamente:

ABC123 já foi processada?

Se sim, devolvemos o resultado anterior ou tratamos de acordo com a regra definida.

Em sistemas distribuídos, isso deixa de ser detalhe.

É sobrevivência.


👹 CAPÍTULO 7 — O TERRÍVEL DISTRIBUTED MONOLITH

A guilda comemora.

— Conseguimos! Criamos 27 microservices!

Rick pergunta:

— Eles podem ser implantados independentemente?

Silêncio.

Para instalar PAYMENT, precisamos instalar ORDER.

Para instalar ORDER, precisamos instalar CUSTOMER.

Para instalar CUSTOMER, precisamos atualizar PRODUCT.

Então temos:

27 serviços
27 pipelines
27 APIs
27 logs
27 configurações

mas...

1 deploy coordenado

Criamos um:

DISTRIBUTED MONOLITH

Ou seja:

Pegamos algumas desvantagens do monólito e adicionamos várias dificuldades dos sistemas distribuídos.

Esse é um dos maiores perigos de adotar microservices apenas porque eles estão na moda.


🟣 CAPÍTULO 8 — A TERCEIRA DUNGEON: SERVERLESS

Chegamos ao terceiro bloco do desenho.

Mas existe um segredo.

Serverless não está exatamente no mesmo eixo de Monolith e Microservices.

Monolith e Microservices respondem principalmente:

Como organizamos e dividimos a aplicação?

Serverless responde mais diretamente:

Como determinado código será executado e operacionalizado?

Essa diferença muda tudo.

Podemos ter:

Microservices + Serverless

Podemos ter:

Monolith + Serverless Functions

Podemos ter:

Mainframe + Microservices + Serverless

Portanto não pense:

MONOLITH
   ↓
MICROSERVICES
   ↓
SERVERLESS

como uma linha evolutiva.

Não existe um Pokémon arquitetural chamado:

Monolithmon
   ↓
Microservicemon
   ↓
Serverlessmon

☁️ CAPÍTULO 9 — MAS SERVERLESS TEM SERVIDOR!

Sim.

Rick também ficou decepcionado.

Serverless não significa que os servidores desapareceram em alguma magia ancestral.

Eles continuam existindo.

A diferença é que o desenvolvedor normalmente não administra diretamente toda a infraestrutura necessária para executar aquela função.

Um modelo simplificado:

EVENT
  |
  v
FUNCTION
  |
  v
RESULT

Por exemplo:

HTTP REQUEST
     |
     v
API GATEWAY
     |
     v
CREATE-ORDER FUNCTION
     |
     v
DATABASE

Mas o evento também pode ser:

Queue Message
File Upload
Timer
Database Change
Object Created
Event Stream

Por isso Serverless combina muito bem com arquiteturas orientadas a eventos.


🥶 CAPÍTULO 10 — O DRAGÃO DO COLD START

Uma função pode não estar continuamente ativa.

Chega uma solicitação.

A plataforma talvez precise preparar seu ambiente:

REQUEST
   |
   v
START RUNTIME
   |
   v
LOAD DEPENDENCIES
   |
   v
INITIALIZE
   |
   v
EXECUTE FUNCTION

Essa inicialização pode introduzir latência.

É o famoso:

Cold Start

Isso varia conforme plataforma, linguagem, configuração e modelo operacional.

Para algumas aplicações é irrelevante.

Para outras, alguns milissegundos adicionais podem ser importantes.

A lição é novamente:

Não escolha tecnologia olhando apenas o desenho bonito.

Meça.


🏦 CAPÍTULO 11 — RICK GLADIATOR ENTRA NO CICS

Agora começa a parte que faz o velho programador COBOL sorrir.

Considere:

CLIENT
   |
   v
CICS
   |
   v
TRANSACTION
   |
   v
COBOL PROGRAM
   |
   +----> Db2
   |
   +----> VSAM

O programador COBOL normalmente não precisa escrever do zero toda a infraestrutura necessária para:

gerenciar processos
controlar recursos
coordenar transações
gerenciar milhares de solicitações
proteger recursos

O CICS oferece um ambiente transacional gerenciado.

Isso não significa que CICS seja Serverless no sentido moderno.

Mas existe uma analogia pedagógica deliciosa.

Décadas antes da palavra "serverless" virar assunto de conferência, o Mainframe já trabalhava profundamente com ideias como:

execução gerenciada
workload
transações
eventos
resource management
security
recovery

Rick olha para a arquitetura moderna.

Depois olha para o CICS.

— Eu já vi alguns desses golpes antes...


🌉 CAPÍTULO 12 — O COBOL NÃO PRECISA VIRAR MICROSERVICE

Imagine um banco com:

Mobile Banking
Internet Banking
Open Finance
Parceiros
ATM

Podemos construir:

Mobile
   |
   v
API Gateway
   |
   v
Microservices
   |
   v
z/OS Connect
   |
   v
CICS
   |
   v
COBOL
   |
   +--> Db2
   |
   +--> VSAM

O programa COBOL pode continuar sendo responsável pela lógica transacional crítica.

A modernização ocorre ao redor e através dele.

Essa é uma mudança enorme de perspectiva.

Modernizar não significa obrigatoriamente:

DELETE COBOL.

Pode significar:

ENABLE COBOL.

🔌 CAPÍTULO 13 — z/OS CONNECT ABRE A PORTA DA DUNGEON

Imagine que nosso programa trabalha com:

01 CUSTOMER-REQUEST.
   05 CUSTOMER-ID PIC X(10).

01 CUSTOMER-RESPONSE.
   05 CUSTOMER-NAME  PIC X(40).
   05 CUSTOMER-LIMIT PIC 9(09)V99.

O mundo moderno deseja conversar usando algo semelhante a:

{
  "customerId": "0001234567"
}

e receber:

{
  "name": "RICK GLADIATOR",
  "limit": 15000.00
}

Uma integração pode assumir:

REST / JSON
     |
     v
z/OS Connect
     |
     v
CICS
     |
     v
COBOL

Perceba a beleza.

O programa COBOL não precisa acordar numa terça-feira dizendo:

"Agora sou JavaScript."

Ele continua executando a responsabilidade para a qual foi construído.

Criamos uma nova fronteira de integração.


📨 CAPÍTULO 14 — MQ: RICK DESCOBRE QUE NEM TODA MISSÃO PRECISA ESPERAR RESPOSTA

Outra possibilidade:

ORDER SERVICE
      |
      v
     MQ
      |
      v
COBOL CONSUMER
      |
      v
     Db2

O produtor publica uma mensagem.

Algo como:

ORDER.CREATED

O consumidor processa quando apropriado.

Podemos ter:

ORDER.CREATED
      |
      +----> BILLING
      |
      +----> INVENTORY
      |
      +----> FRAUD
      |
      +----> ANALYTICS

Isso introduz uma distinção essencial.

Comunicação síncrona:

FAÇA ISTO
E EU ESPERO A RESPOSTA

Comunicação assíncrona:

ESTE TRABALHO PRECISA SER PROCESSADO

Essa diferença é fundamental para arquiteturas corporativas.


🌊 CAPÍTULO 15 — EVENT STREAMING: O MONSTRO MORREU E TODO MUNDO FICOU SABENDO

Em arquiteturas orientadas a eventos, podemos publicar:

PAYMENT.APPROVED

Diversos interessados podem reagir:

PAYMENT.APPROVED
        |
        +------> ORDER
        |
        +------> SHIPPING
        |
        +------> ANALYTICS
        |
        +------> FRAUD
        |
        +------> NOTIFICATION

Isso reduz determinados acoplamentos diretos.

O produtor não precisa necessariamente conhecer todos os consumidores.

O conceito muda de:

"Fulano, faça isso."

para:

"Isto aconteceu."

É uma mudança arquitetural poderosa.


🔭 CAPÍTULO 16 — OBSERVABILIDADE: QUEM MATOU O MONSTRO?

No monólito:

Client
  |
Application
  |
Database

Investigar uma falha pode ser relativamente simples.

Agora:

Client
 |
Gateway
 |
Service A
 |
Service B
 |
Queue
 |
Service C
 |
Mainframe
 |
CICS
 |
COBOL
 |
Db2

O usuário reclama:

"Demorou oito segundos."

Onde?

Precisamos correlacionar:

logs
metrics
traces
timestamps
transaction IDs
correlation IDs

Talvez a API tenha consumido:

50 ms

O microservice:

80 ms

MQ:

20 ms

CICS:

40 ms

mas uma consulta esperou:

7.500 ms

por um lock no Db2.

Sem observabilidade distribuída, o diagnóstico vira investigação arqueológica.


📊 CAPÍTULO 17 — O MAPA DE RICK

Guarde esta tabela mental:

AspectoMonolithMicroservicesServerless
Organizaçãoaplicaçãoserviçosfunções/event handlers
Deploymais coordenadoindependentefunção
Comunicaçãofrequentemente localrede/eventoseventos/APIs
Escalaaplicaçãoserviçoexecução/função
Estadomais centralizadodistribuídonormalmente externo
Debugmais simplesdistribuídodistribuído
Operaçãomenor complexidade inicialaltainfraestrutura abstraída
Consistênciamais simplescomplexafrequentemente distribuída
Redemenor dependência internafundamentalfundamental
Observabilidadeconcentradadistribuídadistribuída

Mas Rick acrescentaria:

Não transforme essa tabela em religião.


💰 CAPÍTULO 18 — SERVERLESS NÃO SIGNIFICA BARATO

Imagine uma função utilizada:

100 vezes por dia

Excelente candidata potencial.

Agora imagine:

10.000 requisições/segundo
24 horas/dia
365 dias/ano

A análise econômica muda completamente.

Serverless frequentemente oferece cobrança baseada em utilização, mas isso não significa automaticamente:

SERVERLESS = MAIS BARATO

Você precisa avaliar:

volume
duração
memória
I/O
rede
armazenamento
requisições
picos
previsibilidade
SLA

A arquitetura correta é também uma decisão econômica.


🧭 CAPÍTULO 19 — PASSO A PASSO PARA ESCOLHER

Rick não escolheria uma arma apenas porque alguém colocou "Cloud Native" na embalagem.

Faça perguntas.

Passo 1 — descubra o domínio

O que a aplicação realmente faz?

Pagamento?
Consulta?
Relatório?
Fraude?
Cadastro?
Processamento de imagem?

Passo 2 — descubra o volume

Temos:

100 operações/dia

ou:

10.000 operações/segundo?

Passo 3 — determine a latência

Pode levar:

10 segundos?
1 segundo?
100 ms?
20 ms?

Passo 4 — descubra o estado

Precisamos manter informações entre execuções?

Onde?

Passo 5 — determine consistência

É aceitável que dois sistemas fiquem temporariamente diferentes?

Passo 6 — analise as transações

Precisamos alterar vários recursos atomicamente?

Passo 7 — analise escalabilidade

Qual componente realmente precisa crescer?

Passo 8 — pense em falhas

Pergunte:

E se a rede cair?

E se houver timeout?

E se a mensagem chegar duas vezes?

E se o consumidor ficar indisponível?

E se o banco responder e a confirmação desaparecer?

Essa talvez seja uma das melhores formas de pensar como arquiteto.


🏗️ CAPÍTULO 20 — A ARQUITETURA REAL NÃO CABE NAS TRÊS COLUNAS

Uma arquitetura corporativa moderna pode ser:

                    MOBILE
                       |
                       v
                  API GATEWAY
                       |
            +----------+----------+
            |                     |
            v                     v
      MICROSERVICES          SERVERLESS
            |                     |
            +----------+----------+
                       |
                       v
                 EVENT STREAM
                       |
                       v
                      MQ
                       |
                       v
              +----------------+
              |   IBM Z        |
              |----------------|
              | CICS           |
              | IMS            |
              | COBOL          |
              | Db2            |
              | VSAM           |
              +----------------+

Agora desaparece aquela velha guerra:

MAINFRAME
   VS
CLOUD

Essa pergunta é pobre.

A pergunta melhor é:

Qual workload deve executar onde?

Essa é uma pergunta de arquiteto.


🥚 EASTER EGG — 03:17 DA MADRUGADA

Às 03:17, o telefone toca.

Produção.

O dashboard está verde.

O cliente diz que pagamentos estão sendo duplicados.

O jovem aventureiro verifica Kubernetes.

Tudo verde.

Verifica API Gateway.

Verde.

Microservices.

Verdes.

Serverless.

Verde.

MQ.

Verde.

CICS.

Verde.

Então Rick pergunta:

— Qual é o CORRELATION-ID da transação?

Silêncio.

Descobrem que um timeout fez o cliente repetir uma requisição e o Payment Service não tratava adequadamente a repetição.

A transação foi processada duas vezes.

Rick fecha o notebook.

Não existe arquitetura suficientemente moderna para compensar uma regra transacional mal compreendida.

03:17.

Incidente encerrado.

Quem acompanha o Bellacosa Mainframe sabe que esse horário nunca aparece por acaso. ☕😈


🎓 CAPÍTULO 21 — O QUE O PROGRAMADOR COBOL INICIANTE PRECISA APRENDER

Não abandone COBOL para correr atrás de todas as palavras da moda.

Expanda o mapa.

Comece com:

COBOL
JCL
VSAM
Db2
CICS

Depois acrescente:

TCP/IP
HTTP
REST
JSON
APIs

Depois:

MQ
Mensageria
Eventos
Kafka/Event Streaming

Depois:

Git
CI/CD
Containers
Microservices
Cloud
Serverless

E finalmente conecte tudo:

COBOL
   |
   +------ CICS
   |
   +------ Db2
   |
   +------ VSAM
   |
   +------ MQ
   |
   +------ APIs
   |
   +------ Events
   |
   +------ Microservices
   |
   +------ Cloud

Nesse momento você deixa de enxergar apenas um programa.

Começa a enxergar arquitetura.


⚔️ EPÍLOGO — O OSSAN NÃO PRECISAVA SER O MAIS JOVEM DA GUILDA

Rick Gladiator não é interessante porque começou cedo.

É justamente o contrário.

Ele lembra que experiência, disciplina e treinamento podem alterar completamente aquilo que aparentemente parecia uma desvantagem.

Existe uma bela analogia com Mainframe.

O programador olha para:

COBOL
CICS
VSAM
Db2
JCL

e alguém diz:

— Isso é velho.

Então ele olha para:

transactions
workload management
resource management
messaging
security
high availability
event processing

e percebe:

— Espere um pouco...

Muitos dos problemas que a computação moderna está tentando resolver não são novos.

As ferramentas mudaram.

As abstrações mudaram.

Os nomes ficaram mais bonitos.

Os slides ganharam cores.

Mas continuamos tentando responder perguntas antigas:

Como executar trabalho?

Como dividir responsabilidades?

Como mover dados?

Como sobreviver a falhas?

Como escalar?

Como garantir uma transação?

Como descobrir onde alguma coisa deu errado?

E é por isso que a pergunta definitiva não deveria ser:

Monolith
     VS
Microservices
     VS
Serverless

A pergunta deveria ser:

QUAL ARQUITETURA RESOLVE MELHOR ESTE PROBLEMA?

Às vezes será um monólito modular.

Às vezes serão microservices.

Às vezes serverless.

Às vezes CICS e COBOL.

E, em sistemas empresariais de verdade, frequentemente será:

              +----------------+
              | MICROSERVICES  |
              +-------+--------+
                      |
SERVERLESS -------- EVENTS
                      |
                     MQ
                      |
              +-------+--------+
              |      CICS      |
              +-------+--------+
                      |
                    COBOL
                      |
               +------+------+
               |             |
              Db2           VSAM

O programador iniciante entrou na dungeon procurando descobrir qual arquitetura era "a moderna".

Saiu dela entendendo algo muito mais importante:

Arquitetura não é escolher a tecnologia mais nova. É compreender suficientemente bem o problema para saber onde cada tecnologia pertence.

Rick pega a espada.

O velho COBOL compila.

O CICS continua processando transações.

O microservice publica um evento.

A função serverless acorda.

MQ entrega uma mensagem.

Db2 confirma o COMMIT.

E, em algum canto escuro da dungeon, alguém propõe transformar os 847 programas COBOL em 847 microservices porque viu isso numa apresentação.

Rick olha para o programador.

O programador olha para Rick.

IF ARCHITECTURE-BY-HYPE
    MOVE 'RUN!' TO RECOMMENDATION
END-IF.

☕⚔️ Bem-vindo ao Bellacosa Mainframe. Aqui até o aventureiro Rank F aprende que o monstro mais perigoso da arquitetura continua sendo uma solução procurando um problema.

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...