☕ 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

quarta-feira, 20 de setembro de 2023

Censura ou Proteção? Por Que as Sociedades Continuam Tentando Controlar Ideias?

 

Bellacosa Mainframe e a censura ou proteção?

☕ Um Café no Bellacosa Mainframe

Censura ou Proteção? Por Que as Sociedades Continuam Tentando Controlar Ideias?

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Psicologia, Sociologia, Poder, Liberdade de Expressão e Por Que Controlar Informações Sempre Foi Uma Tentação Humana

"Um Sysprog não protege um Mainframe apagando programas. Ele define permissões, auditoria e níveis de acesso. Talvez essa diferença explique um dos maiores debates da civilização."


Introdução

Existe uma pergunta que atravessa séculos.

Por que sociedades tentam controlar ideias?

Mudam os governos.

Mudam as religiões.

Mudam as tecnologias.

Mudam os meios de comunicação.

Mas a tentativa de controlar informações continua aparecendo ao longo da história.

Livros já foram proibidos.

Bibliotecas foram destruídas.

Filmes sofreram cortes.

Peças de teatro foram censuradas.

Músicas foram proibidas.

Jornais foram fechados.

Hoje o debate ocorre em torno de redes sociais, algoritmos, plataformas digitais, inteligência artificial e leis relacionadas ao discurso online.

A questão, porém, permanece praticamente a mesma desde a Antiguidade.

Quem deve decidir quais ideias podem circular?

Essa pergunta não possui uma resposta simples.

Porque ela coloca em conflito dois valores fundamentais.

De um lado:

  • liberdade de expressão;

  • pluralidade de ideias;

  • livre circulação do conhecimento.

Do outro:

  • proteção contra danos;

  • segurança pública;

  • combate à violência;

  • proteção de crianças;

  • preservação da democracia.

O problema é que diferentes sociedades desenham essa fronteira de maneiras diferentes.


O Mainframe Nunca Resolve Um Problema Apagando Programas

Imagine um banco executando milhares de aplicações críticas.

Existe software para RH.

Outro para cartões.

Outro para PIX.

Outro para investimentos.

Outro para auditoria.

Se um funcionário não deve acessar determinado sistema, qual seria a solução?

Apagar o programa?

Obviamente não.

O administrador define:

  • autenticação;

  • autorização;

  • perfis;

  • logs;

  • trilhas de auditoria;

  • níveis diferentes de acesso.

Na engenharia de software chamamos isso de controle de acesso.

Na sociedade, o debate costuma ser mais complexo.


A História Mostra Que Toda Sociedade Regulou Informação

Não existe civilização conhecida completamente livre de algum tipo de controle sobre a informação.

Impérios antigos controlavam escribas.

Monarquias controlavam impressoras.

Ditaduras controlavam jornais.

Democracias também estabelecem limites jurídicos para determinadas categorias de discurso, embora esses limites variem bastante entre países.

Os motivos apresentados também variam.

Proteção da moral.

Segurança nacional.

Religião.

Combate ao discurso de ódio.

Proteção infantil.

Combate à desinformação.

Defesa da ordem pública.

Isso não significa que todas essas justificativas sejam equivalentes ou produzam os mesmos resultados.

Significa apenas que o debate acompanha praticamente toda a história humana.


Michel Foucault e a Relação Entre Poder e Discurso

Michel Foucault argumentava que conhecimento e poder caminham juntos.

Quem influencia quais discursos são considerados legítimos também influencia a forma como uma sociedade compreende a realidade.

Isso não significa que exista uma única autoridade controlando tudo.

Significa que instituições, normas, escolas, meios de comunicação e leis participam da construção do que é considerado aceitável em determinada época.


Antonio Gramsci e a Hegemonia Cultural

Antonio Gramsci utilizou o conceito de hegemonia cultural.

Segundo sua análise, grupos procuram consolidar sua visão de mundo como se fosse simplesmente o "bom senso".

Quando isso acontece, determinadas ideias passam a parecer naturais, enquanto outras se tornam marginais.

Independentemente de concordar ou não com Gramsci, sua teoria influenciou profundamente a sociologia contemporânea.


Durkheim e a Coesão Social

Émile Durkheim observou que toda sociedade necessita de algum grau de normas compartilhadas para funcionar.

Sem qualquer consenso mínimo, instituições tornam-se instáveis.

O desafio aparece quando surge a pergunta:

Quanto consenso é necessário antes que a diversidade de opiniões seja sufocada?

Essa tensão permanece atual.


Karl Popper e o Paradoxo da Tolerância

Karl Popper apresentou um argumento muito discutido.

Uma sociedade completamente tolerante pode acabar sendo destruída por movimentos profundamente intolerantes.

Daí surgiu o chamado Paradoxo da Tolerância.

A ideia não é que qualquer opinião deva ser proibida, mas que sociedades precisam refletir sobre como responder quando determinados discursos buscam eliminar a própria possibilidade de convivência plural.

Até hoje existe intenso debate sobre onde exatamente traçar essa linha.


Jonathan Haidt e a Psicologia Moral

Jonathan Haidt propõe que julgamentos morais são fortemente influenciados por intuições.

Primeiro sentimos.

Depois racionalizamos.

Isso ajuda a explicar por que debates públicos frequentemente se tornam emocionais.

Cada grupo acredita estar protegendo algo essencial.

Liberdade.

Segurança.

Justiça.

Igualdade.

Tradição.

Cada valor enfatizado produz conclusões diferentes.


O Viés da Confirmação

Um dos mecanismos psicológicos mais estudados é o viés da confirmação.

Naturalmente buscamos informações que reforcem aquilo que já acreditamos.

Também tendemos a dar menos peso às evidências que desafiam nossas convicções.

Esse fenômeno não pertence a uma ideologia específica.

É um traço humano amplamente documentado.

Quando combinado com algoritmos de recomendação, pode favorecer ambientes informacionais mais homogêneos.


Cass Sunstein e as Câmaras de Eco

O jurista Cass Sunstein estudou como grupos compostos por pessoas com opiniões semelhantes tendem a se tornar mais extremos ao longo do tempo.

Esse processo é chamado de polarização de grupo.

Quanto menor a exposição a ideias divergentes, maior a possibilidade de radicalização.

É um dos motivos pelos quais pesquisadores defendem o contato com perspectivas diferentes.


A Espiral do Silêncio

Elisabeth Noelle-Neumann argumentou que muitas pessoas deixam de expressar opiniões quando acreditam que estão isoladas.

Mesmo sem qualquer censura formal, o medo da rejeição social pode reduzir a diversidade de vozes.

Isso mostra que autocensura e censura institucional não são fenômenos idênticos, embora possam produzir efeitos semelhantes sobre o debate público.


Queimar Livros Sempre Resolveu?

A história sugere que raramente.

Livros proibidos frequentemente circularam clandestinamente.

Ideias reapareceram décadas depois.

Em muitos casos, a tentativa de eliminar uma obra acabou aumentando sua notoriedade.

Controlar objetos é mais simples do que controlar ideias.


Classificação Indicativa e Censura Não São a Mesma Coisa

Essa distinção é importante.

Em muitos países existe classificação por idade para:

  • filmes;

  • jogos;

  • televisão;

  • plataformas digitais.

O objetivo costuma ser orientar responsáveis sobre conteúdos potencialmente inadequados para determinadas faixas etárias.

Já a censura envolve impedir ou restringir a circulação de conteúdos para além desse tipo de classificação.

Na prática, porém, as fronteiras podem gerar debates e variar conforme a legislação e o contexto histórico de cada país.


Por Que Nem Tudo É Resolvido Apenas Com Classificação Etária?

Essa é uma pergunta recorrente.

Os argumentos apresentados por quem defende medidas além da classificação variam conforme o tema.

Entre eles aparecem preocupações como:

  • alcance extremamente rápido nas redes;

  • recomendação algorítmica;

  • dificuldade de verificar idade em ambientes digitais;

  • conteúdos ilegais;

  • campanhas coordenadas;

  • proteção de grupos vulneráveis.

Por outro lado, críticos dessas medidas argumentam que regras excessivamente amplas podem reduzir a liberdade de expressão, favorecer abusos de poder e inibir o debate legítimo.

É justamente por isso que o tema permanece controverso.


O Papel das Democracias

Em democracias constitucionais, uma questão central costuma ser:

Quem decide?

Parlamentos?

Tribunais?

Agências reguladoras?

Empresas privadas?

Plataformas digitais?

Cada modelo possui vantagens e riscos.

Concentrar poder em qualquer ator pode gerar preocupações sobre transparência, prestação de contas e possibilidade de erro.


O Risco da Censura e o Risco da Ausência Total de Regras

O debate público frequentemente apresenta um falso dilema.

Ou liberdade absoluta.

Ou controle absoluto.

Na prática, poucas sociedades adotam qualquer um desses extremos.

A maioria busca algum tipo de equilíbrio.

A dificuldade está em definir:

  • quais limites são legítimos;

  • quem os estabelece;

  • como revisá-los;

  • quais garantias existem contra abusos.

Essas perguntas talvez sejam mais importantes do que respostas simplistas.


O Mainframe Ensina Outra Lição

Em um IBM Z, segurança não significa impedir tudo.

Também não significa permitir tudo.

Significa definir regras claras.

Registrar eventos.

Auditar decisões.

Revisar permissões.

Criar mecanismos de recurso quando algo dá errado.

Talvez esse raciocínio seja útil também para instituições humanas.

Quanto maior o poder de restringir informações, maior deve ser a transparência, a possibilidade de contestação e a supervisão independente.


O Que Dizem Muitos Especialistas?

Embora existam divergências profundas, alguns pontos aparecem com frequência em diferentes áreas do conhecimento:

  • educação midiática tende a ser vista como complemento importante às regras formais;

  • transparência sobre critérios de moderação aumenta confiança;

  • decisões revisáveis reduzem riscos de arbitrariedade;

  • pluralidade institucional costuma ser considerada mais saudável do que concentração de poder decisório;

  • pensamento crítico continua sendo uma das melhores defesas contra manipulação.

Esses consensos parciais não eliminam os desacordos sobre casos concretos, mas mostram caminhos debatidos por pesquisadores.


Conclusão

Talvez a pergunta mais importante não seja:

"Devemos permitir tudo?"

Nem:

"Devemos proibir tudo?"

Talvez seja outra.

"Como construir uma sociedade suficientemente livre para produzir inovação, crítica e diversidade de ideias, mas também suficientemente responsável para enfrentar danos reais sem transformar exceções em regra?"

Essa pergunta não será respondida por um algoritmo.

Nem por uma única ideologia.

Nem por uma única geração.

Assim como um Sysprog sabe que estabilidade depende de equilíbrio entre desempenho, disponibilidade e segurança, sociedades também precisam equilibrar valores que frequentemente entram em tensão.

Liberdade sem responsabilidade pode produzir danos.

Responsabilidade sem liberdade pode sufocar criatividade, ciência e debate.

A história mostra que nenhuma civilização resolveu definitivamente esse dilema.

Cada geração precisa enfrentá-lo novamente.

E talvez essa seja justamente a maior lição.

Os maiores desafios da humanidade raramente são problemas de software.

São problemas de arquitetura institucional, natureza humana e convivência social.

Porque, no fim, proteger uma sociedade não significa apenas proteger pessoas contra ideias perigosas; também significa proteger a própria capacidade da sociedade de discutir, questionar e revisar suas ideias ao longo do tempo.

terça-feira, 19 de setembro de 2023

🧠 Bellacosa Mainframe — “z/OS 3.1: o cérebro cognitivo do século XXI” ⚙️

 





🧠 Bellacosa Mainframe — “z/OS 3.1: o cérebro cognitivo do século XXI” ⚙️
📅 Lançado em setembro de 2023 — o z/OS 3.1 marca o início da era da IA no mainframe.


🚀 O salto quântico do z/OS

O z/OS 3.1 não é apenas mais uma atualização do sistema operacional — é a fusão entre o mainframe e a inteligência artificial.
Pela primeira vez, o próprio sistema aprendeu a se “autoajustar”, prever falhas e otimizar recursos com base em padrões de uso.
É o z/OS que pensa sobre o próprio z/OS — um conceito que, há poucos anos, parecia ficção científica digna de Asimov, mas hoje roda em hardware IBM z16.


📆 Lançamento e base de hardware

  • Data de lançamento: setembro de 2023

  • Suporte inicial: IBM z15 e z16

  • Firmware mínimo: PR/SM nível 7.0 (com suporte a IA e Crypto Express8S)

  • Fim do 31-bit puro: o z/OS 3.1 é 100% 64-bit, encerrando oficialmente a era do código 31-bit legacy.

  • LPARs: até 2.000 virtuais em sistemas de grande porte

  • Memória real: suporte a 32 TB por imagem z/OS

💬 Bellacosa Curiosity: A IBM internamente chamou o projeto do z/OS 3.1 de “Hermes”, o mensageiro dos deuses — porque o foco era justamente fazer o sistema conversar com tudo e todos, de CICS a cloud, de VSAM a containers.


🧩 O PR/SM 7.0 — cérebro dos cérebros

O Processor Resource/System Manager (PR/SM) ganhou uma das maiores evoluções desde o System/390.
Ele agora integra AI-Assisted Resource Balancing — um mecanismo cognitivo embutido no microcódigo que observa e aprende o comportamento das LPARs, redistribuindo ciclos de CPU conforme padrões históricos.

🔹 Novidades do PR/SM 7.0:

  • Redistribuição automática de créditos de CPU com base em Machine Learning.

  • Ajuste dinâmico de partições soft-capped sem necessidade de intervenção humana.

  • Métricas novas no RMF 79.3 e SMF 120.16, expondo o “score cognitivo” de eficiência por workload.

  • Suporte a fabricação dinâmica de processadores para testes (modo z16 T02+).

🧠 Easter Egg Bellacosa: o código interno de balanceamento do PR/SM 7.0 usa o nome “Athena” — em homenagem à deusa grega da sabedoria. Sim, o mainframe agora tem seu próprio oráculo interno.


💾 Memória e arquitetura — 64 bits, expandida e inteligente

O z/OS 3.1 expande e reorganiza profundamente as áreas de memória clássicas:
CSA, SQA, LPA e Pageable Link Pack foram redesenhadas para address spaces dinâmicos e compressão adaptativa.

ÁreaNovidade técnicaBenefício
CSA/SQACompressão adaptativa + expansão em tempo realReduz page faults em até 30%
LPALPA dinâmica + refresh sem IPLAtualizações “hot swap” de módulos
Private AreaSuporte a até 16 TBMenos swapping e I/O
Above BarGerenciamento automático via IAAlocação preditiva por workload

E, claro, o 64-bit only libera o z/OS de limitações antigas: todos os subsistemas agora são nativamente 64-bit, incluindo CICS, DB2, MQ e JES2.
Adeus “AMODE 31”. O futuro é amplo, literalmente.


⚙️ Softwares internos e stack IBM

O z/OS 3.1 é otimizado para o ecossistema z16 + IA, e veio afinado com as versões mais recentes:

ComponenteVersão recomendadaDestaques
CICS TS 6.1APIs RESTful nativas e Java 17 no z/OSSuporte a OpenAPI 3.1
DB2 13 for z/OSAprendizado de consultas via IA embutidaIndexação inteligente e SQL AI Insights
IMS 15.3APIs REST + integração com z/OS ConnectSimplificação de transações híbridas
MQ 9.3Suporte nativo a Kafka bridgeEnfileiramento híbrido
z/OSMF 3.1Totalmente redesenhado em React + REST APIPainéis cognitivos e monitoramento AI
RACFIntegração com MFA e OpenID ConnectLogon unificado e tokens JWT
zCX (z/OS Container Extensions)Nova engine OCIContainers Linux otimizados com zEDC e HiperSockets

Além disso, o z/OS Connect EE 3.1 transformou o mainframe em um hub de APIs REST JSON, expondo programas COBOL como microservices sem esforço.


🧬 Instruções de máquina — o poder do z16

O z/OS 3.1 tira proveito das instruções introduzidas com o processador do z16 (Telum), o primeiro chip mainframe com IA integrada on-chip.

Nova instruçãoFunçãoAplicação prática
AIMUL / AIDIVAI-assisted multiply/divideProcessamento vetorial para IA
PAI (Predictive AI Interface)Interface direta com o Telum AI CoreDiagnóstico de anomalias no tempo de execução
CIPHERXCriptografia quântica-ready (Q-safe)Preparação para pós-quantum cryptography
ZDEFLATE2Compressão inline 2.0Otimiza datasets VSAM e MQ sem zEDC overhead
BROADLOADCarga paralela em múltiplos registradoresMelhoria em Java JIT e C/C++

🧩 Fun fact: o Telum AI Core analisa em tempo real padrões de execução do sistema operacional, podendo prever deadlocks ou falhas de E/S antes que ocorram. O z/OS 3.1 é literalmente auto-protetor.


🤖 IA e automação embarcada

O coração do z/OS 3.1 é o IBM z/OS AI Framework — um conjunto de microagentes que monitoram o comportamento do sistema e sugerem (ou aplicam) ajustes automáticos:

  • WLM Advisor: ajusta metas de serviço com base no comportamento do sistema.

  • Health Checker AI Mode: detecta anomalias de forma preditiva.

  • JES2 Analytics: sugere tuning de classes e message routing.

  • Dataset Access Predictor: usa IA para identificar datasets “quentes” e sugerir caching.

E tudo isso é visível via o z/OSMF Cognitive Dashboard, com gráficos em tempo real e pontuação de “Saúde do Sistema”.


⚡ Créditos de CPU e WLM inteligente

O Workload Manager (WLM) recebeu um “upgrade cerebral”: agora, ele utiliza modelos de machine learning para entender a carga de trabalho em tempo real.

  • Ajuste dinâmico de pesos e metas sem intervenção humana.

  • Integração direta com SMF 98 para feedback contínuo.

  • Intelligent Resource Director (IRD 3.0): redistribuição cognitiva de créditos entre LPARs com base em padrões históricos.

O resultado?
Até 20% de eficiência extra em ambientes com workloads mistos (CICS + DB2 + zCX + batch).


🧠 Easter-eggs e curiosidades Bellacosa

💡 O z/OS 3.1 inclui um comando interno, usado em debug, chamado D AITHINK, que retorna métricas de “convergência cognitiva” — uma piada interna dos engenheiros do laboratório Poughkeepsie sobre “sistemas que pensam demais”.

💾 O arquivo de ajuda do z/OSMF 3.1 contém uma menção a “Blue Phoenix”, nome de código do protótipo do z/OS AI Framework.

🎹 E, claro, o JES2 foi apelidado internamente de “O maestro invisível” — em homenagem ao seu papel histórico de orquestrar o caos dos jobs desde o OS/360.


🔚 Conclusão — o mainframe entra na era cognitiva

O z/OS 3.1 é o mainframe autoconsciente.
Ele monitora, aprende, otimiza, protege e responde — tudo sem precisar acordar o sysprog às 3h da manhã (ok, quase sempre).
É o renascimento do z/OS como sistema operacional cognitivo, preparado para IA generativa, automação total e integração com qualquer nuvem.

O Sistema Operacional nunca foi tão inteligente.
E o Bellacosa Mainframe — claro — segue com o café na mão, observando o titã despertar. ☕💙


segunda-feira, 18 de setembro de 2023

Malba Tahan, Beremiz Samir e o Homem que Inventou um Árabe para Ensinar Matemática ao Brasil

 

Bellacosa Mainframe apresenta Malba Tahan

☕ Um Café no Bellacosa Mainframe

Malba Tahan, Beremiz Samir e o Homem que Inventou um Árabe para Ensinar Matemática ao Brasil

Ou: como um professor brasileiro criou um escritor árabe, depois criou um calculista persa, colocou os dois num camelo e fez gerações inteiras descobrirem que matemática podia contar histórias

Há escritores que inventam personagens.

Há escritores que inventam mundos.

Há escritores que inventam cidades, impérios, idiomas, planetas e genealogias suficientemente complicadas para obrigar algum leitor obsessivo a construir uma planilha.

E houve Júlio César de Mello e Souza.

Esse sujeito resolveu fazer algo mais divertido.

Inventou o próprio escritor.

Não satisfeito, deu-lhe nome.

Malba Tahan.

Depois deu-lhe origem.

Passado.

Personalidade.

Geografia.

Uma atmosfera inteira de desertos, califas, mercadores, palácios, sábios, caravanas e noites estreladas.

E então colocou dentro dessa invenção outro homem.

Um persa chamado:

Beremiz Samir.

O Homem que Calculava.

Portanto, antes de prosseguirmos, convém organizar o datacenter.

Temos três camadas.

Na LPAR 1:

Júlio César de Mello e Souza, brasileiro, professor de matemática.

Na LPAR 2:

Malba Tahan, escritor oriental cuidadosamente fabricado.

Na LPAR 3:

Beremiz Samir, calculista persa capaz de olhar para um problema aparentemente insolúvel e dizer algo equivalente a:

— Calma. Tem um jeito.

É quase impossível imaginar estrutura narrativa mais Bellacosa Mainframe do que essa.

Um personagem dentro de um personagem criado por um homem que usava histórias para explicar problemas que normalmente seriam apresentados numa lousa acompanhados da frase:

“Calcule o valor de x.”

Beremiz provavelmente olharia para o x e perguntaria primeiro quem era o pai dele, quantos camelos possuía e se havia alguma disputa sucessória envolvida.


🐪 Primeiro precisamos encontrar um camelo

Toda boa história começa em algum lugar.

As histórias de Malba Tahan frequentemente parecem começar numa estrada poeirenta entre cidades do Oriente.

Então imagine.

Sol.

Areia.

Uma estrada.

Um camelo caminhando sem qualquer pressa administrativa.

Sobre ele vai um viajante.

Ao longe aparece outro homem.

Ele observa coisas.

Conta coisas.

Pensa em coisas.

Esse homem é Beremiz Samir.

E se você cresceu lendo O Homem que Calculava, provavelmente já sabe que encontrar Beremiz numa estrada é uma situação perigosa.

Porque dentro de três páginas surgirá algum problema.

Pode ser herança.

Pode ser dinheiro.

Pode ser divisão.

Pode ser lógica.

Pode ser geometria.

Pode aparecer um xeque.

Um mercador.

Um vizir.

Um sábio.

Três irmãos discutindo.

Ou naturalmente:

35 camelos.

Esse último caso tornou-se uma das passagens mais famosas de toda a literatura matemática brasileira.

Três irmãos recebem 35 camelos.

A herança deve ser dividida conforme determinadas frações.

A divisão parece impossível sem produzir aquilo que qualquer proprietário de camelos provavelmente considera uma péssima experiência logística:

frações de camelo.

Beremiz olha.

Pensa.

E introduz um camelo adicional na equação.

O problema muda.

As partes tornam-se inteiras.

A divisão funciona.

E no final ainda aparecem camelos sobrando.

É uma pequena obra-prima de apresentação matemática porque o leitor não recebe apenas uma conta.

Recebe um conflito.

E conflito produz curiosidade.

A matemática entra depois.

A própria Secretaria de Educação do Espírito Santo ainda utiliza o famoso problema dos 35 camelos em material pedagógico, prova de que essa pequena caravana literária continua atravessando salas de aula décadas depois.

Essa foi uma das grandes sacadas de Malba Tahan:

primeiro faça o leitor querer saber a resposta.

Depois ensine a matemática.

É exatamente o contrário de muita educação tradicional, na qual primeiro entregamos a fórmula e depois tentamos convencer o aluno de que ele deveria se importar com ela.

Malba fazia engenharia reversa da curiosidade.


🧮 O professor que declarou guerra ao algebrismo

Agora precisamos deixar Beremiz descansando um pouco no oásis e olhar para o homem que estava atrás da cortina.

Júlio César de Mello e Souza nasceu em 1895.

Professor.

Matemático.

Escritor.

Divulgador.

Contador de histórias.

E um crítico ferrenho de uma coisa que ele chamava de:

algebrismo.

A palavra merece ser colocada numa moldura.

Porque continua assustadoramente moderna.

Algebrismo era, grosso modo, a transformação da matemática numa sucessão de operações formais, regras e exercícios sem contexto suficiente para produzir compreensão.

Uma espécie de matemática funcionando como JCL de 1968:

ninguém sabe exatamente por que aquilo existe, mas o operador foi avisado para não mexer.

A Biblioteca Nacional registra justamente essa crítica de Júlio César ao excesso de algebrismo no ensino.

E aqui encontramos o coração da obra.

Malba Tahan não queria simplesmente ensinar a fazer contas.

Queria ensinar a pensar.

Existe uma diferença brutal entre as duas coisas.

Uma calculadora faz contas.

Um estudante precisa aprender a perceber:

— Qual é o problema?

— O que realmente está sendo pedido?

— Existe outra maneira de olhar para isso?

— Todas as informações são necessárias?

— Alguma coisa aparentemente impossível deixa de ser impossível se mudarmos a perspectiva?

Beremiz fazia exatamente isso.

Não era uma HP 12C humana.

Era um resolvedor de problemas.


🎭 Então Júlio criou Malba

Aqui a história fica maravilhosa.

Imagine um jovem brasileiro no começo do século XX escrevendo contos orientais.

Ele tenta publicá-los.

Os jornais não demonstram grande entusiasmo.

Então ocorre uma ideia.

Hoje chamaríamos provavelmente de:

estratégia de marca.

Ou talvez:

growth hacking literário de 1920.

Júlio conclui que aqueles contos talvez recebessem mais atenção se não parecessem escritos por um jovem brasileiro.

Então nasce:

Malba Tahan.

Não apenas um pseudônimo.

Isso seria simples demais.

Júlio construiu uma identidade.

Uma biografia.

Uma persona.

A Prefeitura de São Paulo registra que ele chegou inclusive a criar um suposto tradutor para as obras, o Professor Breno Alencar Bianco, aumentando ainda mais a verossimilhança da fabricação literária.

Isso é extraordinário.

Hoje alguém faria:

malbatahan.com

perfil no LinkedIn:

Malba Tahan — Oriental storyteller | Mathematics enthusiast | Baghdad Metropolitan Area

E provavelmente colocaria:

“Helping people solve complex problems through storytelling.”

Júlio fez tudo isso antes da Internet.

O sujeito criou uma identidade narrativa completa.

A Biblioteca Nacional registra inclusive edições apresentadas como traduzidas diretamente do original árabe, acompanhadas da biografia do suposto autor oriental.

Era uma brincadeira literária?

Sim.

Marketing?

Também.

Experimento de narrativa?

Com certeza.

Mas há algo ainda mais interessante.

Com o tempo, Malba Tahan tornou-se tão real culturalmente que deixou de importar se ele existia biologicamente.

Malba passou a existir porque os leitores sabiam quem ele era.

E essa talvez seja uma das formas mais interessantes de existência.


🧠 Um homem criou outro homem para explicar homens

Agora voltamos ao nosso amigo Beremiz.

Porque existe uma bela escadaria narrativa aqui.

Júlio César cria Malba Tahan.

Malba Tahan cria Beremiz Samir.

Beremiz resolve problemas humanos usando matemática.

Temos então:

Júlio → Malba → Beremiz → problema → solução → leitor.

Quase um pipeline.

SOURCE.

TRANSFORM.

PROCESS.

OUTPUT.

Mas o processamento não termina no resultado numérico.

O verdadeiro output é:

compreensão.

Uma pesquisa acadêmica da USP descreve justamente essa cadeia de criação: Júlio cria Malba, que por sua vez cria Beremiz como veículo literário para aplicar uma determinada concepção de matemática à vida cotidiana.

Isso ajuda a explicar por que os livros sobreviveram.

Eles nunca foram apenas livros de problemas.

Se fossem, teriam envelhecido como antigos manuais escolares.

Eles são histórias.

E histórias possuem uma característica perigosa:

ficam armazenadas em regiões estranhas da memória.

Você pode esquecer completamente como resolver uma determinada equação.

Mas quarenta anos depois alguém diz:

— Trinta e cinco camelos.

E uma pequena portinha se abre no cérebro.


🕌 Bagdá.exe foi carregado

O cenário oriental tinha outra função importante.

Transformava a matemática em aventura.

Bagdá não era apenas uma cidade.

Era interface.

Palácios.

Mercados.

Caravanas.

Mesquitas.

Desertos.

Astrônomos.

Mercadores.

Sábios.

Xeques.

Poetas.

O leitor estava aprendendo matemática, mas pensava estar seguindo uma viagem.

Truque antigo.

Funcionava nas Mil e Uma Noites.

Funcionou com Malba.

Funciona hoje em videogame.

Funciona numa boa aula.

Funciona neste blog.

Você entra porque alguém prometeu uma história sobre mainframe.

Quando percebe, está lendo sobre:

WLM,

zIIP,

R4HA,

COBOL,

psicologia cognitiva,

história romana,

um rinoceronte que Dürer nunca viu

e provavelmente algum macaco bêbado abrindo um barril.

A técnica é a mesma.

Esconda o remédio dentro da sobremesa.

Malba Tahan sabia disso quase cem anos atrás.


📚 Mil Histórias sem Fim

E eis que encontramos um título perfeito para esta homenagem.

Mil Histórias sem Fim.

Malba Tahan publicou uma obra com esse nome.

E há qualquer coisa deliciosamente apropriada nisso.

Porque histórias realmente não terminam.

Elas mudam de hospedeiro.

Um professor conta para um aluno.

O aluno vira professor.

Conta para outro aluno.

Um pai lê um livro.

Décadas depois lembra do problema.

Conta para o filho.

O filho procura na Internet.

Encontra outra versão.

Alguém produz um vídeo.

Outro faz um post.

Outro cria um meme.

Outro escreve um artigo num blog perdido numa esquina da Internet.

E agora temos um velho barbudo em Itatiba tomando café enquanto um calculista persa atravessa o datacenter montado num camelo imaginário.

Se isso não é uma história sem fim, não sei o que seria.


🎓 O professor que queria alunos pensando

Existe um detalhe que considero especialmente importante.

Malba Tahan não pertence apenas à história da literatura.

Pertence à história da educação brasileira.

Seu aniversário, 6 de maio, tornou-se o Dia Nacional da Matemática.

Isso não ocorreu porque ele descobriu uma nova constante matemática.

Nem porque formulou um teorema que carrega seu nome.

A homenagem existe porque ajudou a mudar a relação entre pessoas e matemática.

Essa distinção é belíssima.

Existem matemáticos que expandiram a matemática.

Malba ajudou a expandir o número de pessoas dispostas a entrar nela.

E isso também é ciência.

Divulgação importa.

Didática importa.

Curiosidade importa.

Uma ideia incompreensível é praticamente inútil para quem precisa aprendê-la.


🐫 O incidente dos 35 camelos deveria ser ensinado em TI

Aliás, suspeito que Beremiz seria um excelente arquiteto de sistemas.

Veja o famoso problema dos camelos.

O sistema possui uma restrição.

Os usuários estão brigando.

Os requisitos parecem incompatíveis.

A divisão não fecha.

O desenvolvedor tradicional poderia responder:

NOT POSSIBLE.

Ticket encerrado.

Beremiz faz outra coisa.

Ele muda temporariamente o estado do sistema.

Acrescenta um elemento.

Executa a distribuição.

Remove o excedente.

Problema resolvido.

Isso é praticamente:

temporary capacity provisioning.

Se Beremiz trabalhasse num mainframe provavelmente diria:

— Permita-me acrescentar momentaneamente uma unidade à capacidade disponível.

Depois faria alguma coisa incompreensível envolvendo WLM.

Todos receberiam exatamente os recursos prometidos.

E ainda sobrariam dois MSUs.

O gerente financeiro provavelmente o promoveria imediatamente.


🧙 Beremiz não é um gênio porque calcula rápido

Esse ponto merece cuidado.

Personagens matematicamente talentosos costumam ser apresentados como máquinas.

Calculam números absurdamente rápidos.

Memorizam milhares de dígitos.

Resolvem equações enormes mentalmente.

Beremiz é diferente.

Seu encanto não está apenas na velocidade.

Está na interpretação.

Ele percebe estrutura.

Vê relações.

Descobre simetria.

Reformula perguntas.

Isso aproxima o personagem de uma ideia moderna de inteligência.

A verdadeira habilidade não é possuir respostas.

É saber transformar o problema.

Quando você muda a pergunta, às vezes a resposta aparece sozinha.

Esse é um dos grandes segredos de investigação técnica.

Incidente:

“CPU está alta.”

Pergunta ruim:

— Como baixar CPU?

Pergunta Beremiz:

— Quem está usando CPU, quando começou, qual workload mudou e por que esse consumo apareceu agora?

De repente o problema virou outro.

E talvez CPU nem fosse o problema.


📈 Malba Tahan provavelmente entenderia IA perfeitamente

Agora vamos empurrar o camelo alguns quilômetros além.

Vivemos numa época curiosa.

Inteligência artificial produz respostas.

Muitas.

Rápidas.

Bonitas.

O perigo está em confundir produção de resposta com compreensão.

Malba provavelmente reconheceria imediatamente a armadilha.

Porque seu método não era:

Resposta → aluno.

Era:

Problema → curiosidade → raciocínio → história → descoberta.

Se simplesmente entregássemos a Beremiz uma máquina dizendo:

“Resultado: 17 camelos.”

perderíamos o melhor pedaço.

O caminho.

A surpresa.

A inversão.

Aquele instante em que o leitor pensa:

— Ahhhhhh.

Esse “ahhh” talvez seja a verdadeira unidade de medida da educação.

Poderíamos chamá-la de:

1 Tahan.

Um Tahan corresponde à quantidade mínima de compreensão necessária para um aluno olhar para algo aparentemente complicado e dizer:

— Agora entendi.

Mil Tahans formariam um Beremiz.

A ISO infelizmente ainda não aprovou o padrão.


📰 E o falso árabe venceu

A parte mais saborosa é pensar que a estratégia funcionou.

Malba Tahan tornou-se amplamente conhecido.

Escreveu dezenas de obras sob essa identidade.

O Homem que Calculava, publicado originalmente em 1938, atravessou gerações e ganhou enorme circulação.

O personagem imaginário tornou-se mais famoso do que o cidadão que o inventou.

É quase uma vingança literária.

Júlio queria que publicassem suas histórias.

Criou Malba.

Décadas depois estudantes aprendem:

— Malba Tahan era o pseudônimo de Júlio César de Mello e Souza.

Ou seja:

primeiro aprendemos o nome inventado.

Depois descobrimos o homem real.

A máscara virou rosto.


🪞 E aqui aparece o easter egg

Talvez o leitor já tenha percebido.

Este artigo não é apenas uma homenagem a Malba Tahan.

É também uma pequena demonstração de seu método.

Começamos com um escritor.

Encontramos um personagem.

Depois um camelo.

Então apareceu matemática.

Depois educação.

Depois arquitetura de sistemas.

Depois mainframe.

Depois inteligência artificial.

E agora estamos falando sobre como histórias transmitem conhecimento.

Ou seja:

o texto foi mudando enquanto caminhávamos.

Como uma caravana.

Esse é o easter egg.

Malba não está apenas sendo mencionado.

A estrutura está tentando imitá-lo.


🐪 Beremiz chega ao Bellacosa Mainframe

Imagino então uma cena.

Madrugada.

03h17.

Algum lugar de Itatiba.

Datacenter metafórico funcionando.

Café.

Logs.

Um terminal 3270 aberto.

De repente surge um homem trajando roupas persas.

Atrás dele, naturalmente, um camelo.

Segurança imediatamente abre chamado.

ICH408I BEREMIZ LOGON REJECTED.

O homem olha tranquilamente para o console.

Pergunta quantos jobs estão executando.

Quantos aguardam.

Qual a prioridade.

Qual a capacidade total.

Qual a distribuição.

O operador responde.

Beremiz pensa por alguns segundos.

— Há um erro.

O operador verifica.

Nada.

Beremiz aponta.

— Existem quarenta tarefas, mas vocês estão planejando capacidade como se fossem cinquenta.

Silêncio.

RMF é aberto.

WLM consultado.

SMF analisado.

Beremiz tinha razão.

Um workload havia sido duplicado por erro numa integração.

O gerente pergunta:

— Como descobriu?

Beremiz sorri.

— Contei os camelos.


☕ E Júlio César observa de longe

Talvez esta seja a parte mais bonita.

O verdadeiro homem desaparece lentamente atrás da própria obra.

Júlio César de Mello e Souza morreu em 1974.

Mas Malba continua.

Beremiz continua.

Os camelos continuam.

O problema continua sendo contado.

Professores continuam usando suas histórias.

A USP ainda produz materiais inspirados em seu trabalho e resgata seus problemas para novas gerações.

Isso é uma espécie de imortalidade bastante razoável.

Não aquela dos monumentos.

Mas a melhor.

Aquela em que alguém que nunca conheceu você continua usando uma ideia sua.


🧠 A verdadeira conta de Malba Tahan

Talvez a maior equação criada por Malba nunca tenha aparecido em seus livros.

É esta:

História + Curiosidade = Aprendizado

Mas podemos melhorá-la.

Beremiz certamente melhoraria.

Vamos acrescentar algumas variáveis:

Problema + Personagem + Curiosidade + Surpresa = Conhecimento memorável

Agora temos algo interessante.

Porque conhecimento sozinho pode ser esquecido.

Conhecimento ligado a emoção, narrativa ou descoberta costuma criar raízes.

É por isso que tanta gente não lembra de exercícios escolares.

Mas lembra dos camelos.


🕌 Maktub

Há uma palavra frequentemente associada ao universo de Malba Tahan.

Maktub.

Estava escrito.

Mas talvez, no caso dele, devêssemos fazer uma pequena alteração.

Não estava escrito.

Ele escreveu.

Escreveu Malba.

Escreveu Beremiz.

Escreveu desertos que nunca precisou habitar.

Escreveu sábios que nunca existiram.

Escreveu problemas matemáticos que continuam circulando.

E escrevendo essas coisas acabou escrevendo uma pequena parte da memória escolar brasileira.

Nada mal para um professor que resolveu inventar um árabe.


🐫 Epílogo — o camelo que sobrou

Quando terminamos uma boa história de Malba Tahan, frequentemente sobra alguma coisa.

Uma ideia.

Uma pergunta.

Uma pequena surpresa.

Então deixemos uma.

O famoso problema começa com 35 camelos.

Beremiz acrescenta um.

Trinta e seis.

Faz a divisão.

E ao final aparecem camelos excedentes.

Um deles volta para quem o emprestou.

O problema foi resolvido porque alguém introduziu temporariamente algo que aparentemente não pertencia ao problema.

Talvez contar histórias funcione exatamente assim.

Você tem:

35 fatos.

Nenhum deles encaixa perfeitamente.

Então acrescenta um personagem.

Agora existem 36 elementos.

Você organiza.

Divide.

Relaciona.

Explica.

E quando termina…

o personagem pode ir embora.

Os fatos continuam lá.

Só que agora fazem sentido.

Talvez esse tenha sido o grande truque de Malba Tahan.

Ele emprestava um camelo para a matemática.

O camelo chamava-se:

história.

A matemática fazia a viagem.

Depois o camelo voltava.

E o leitor ficava com a resposta.


☕ P.S. — Registro de acesso

Se algum arqueólogo digital encontrar este texto em 2126 e tentar descobrir por que existe um calculista persa andando de camelo dentro de um mainframe IBM, favor registrar:

não houve corrupção no banco de dados.

não foi hallucination da IA.

não foi defeito no WLM.

não foi erro de encoding EBCDIC.

Foi apenas Malba Tahan passando.

Provavelmente procurando os outros dois camelos.

E se você souber onde estão…

não conte.

Beremiz já calculou.



https://eljefemidnightlunch.blogspot.com/2014/07/o-livro-que-passou-pelo-firewall-de.html

sábado, 16 de setembro de 2023

🥢 O Homem Herbívoro – Entre o Silêncio e o Suspiro da Nova Masculinidade Japonesa

Bellacosa Mainframe e o homem herbivoro


🥢 O Homem Herbívoro – Entre o Silêncio e o Suspiro da Nova Masculinidade Japonesa

por El Jefe – Bellacosa Mainframe Edition

Há quem diga que o Japão é um laboratório social do futuro — um lugar onde as tensões do mundo moderno se manifestam primeiro, em alta definição. Entre trens lotados, karaokês melancólicos e cafés temáticos, surge um novo personagem que desconcerta as gerações anteriores: o “homem herbívoro”, ou em japonês, “sōshoku danshi” (草食男子) — literalmente, homem que se alimenta de plantas.

Mas calma, padawan. Não estamos falando de dieta, e sim de comportamento.


🌿 Origem do termo

O termo nasceu por volta de 2006, cunhado pela escritora e analista cultural Maki Fukasawa. Ela observava uma geração de jovens japoneses que pareciam desinteressados nas caçadas tradicionais do amor e do poder — sem pressa para namorar, casar, ter filhos, subir na empresa ou dirigir um carro esportivo.

Enquanto os “carnívoros” da geração anterior lutavam por status e paixão, os herbívoros apenas... existiam.
Tranquilos. Neutros. Gentis.


🧠 O que está por trás disso

No Japão, as pressões sociais são brutais: trabalhar até tarde, agradar o chefe, seguir o manual invisível da etiqueta e ainda sustentar uma família num país caríssimo. A geração pós-bolha econômica cresceu vendo os pais exaustos, sem tempo, sem sonho e sem sorriso.

Então o homem herbívoro surge como um protesto silencioso.
Ele não rejeita o amor, mas não o busca a qualquer custo.
Ele não persegue o sucesso, prefere a estabilidade.
Ele não quer dominar, quer coexistir.

Em resumo: é o antídoto pacífico para o samurai corporativo.


💬 Curiosidades e fofoquices sociológicas

  • Em 2010, uma pesquisa do Japan Times revelou que mais de 60% dos jovens homens entre 20 e 30 anos se identificavam, de alguma forma, com o perfil herbívoro.

  • As mídias ocidentais torceram o nariz, chamando-os de “desinteressados” ou “infantis”, mas dentro do Japão, eles representam uma mudança cultural profunda: a recusa em ser o que o sistema exige.

  • Muitos animes e dramas começaram a retratar personagens masculinos introspectivos, tímidos, com alma sensível — de Shinji Ikari (Evangelion) a Hachiman Hikigaya (Oregairu). Coincidência? Talvez não.


🗾 História, sociedade e um toque zen

No fundo, o homem herbívoro não é novo.
Ele é o eco moderno do monge zen que renuncia às paixões mundanas, do samurai aposentado que medita diante do jardim seco, do poeta haiku que encontra beleza na impermanência.
A diferença é que agora ele vive em Tóquio, toma café gelado e posta fotos melancólicas no Instagram.


⚙️ Reflexão à la Bellacosa Mainframe

Talvez o herbívoro não seja um sinal de fraqueza, mas de adaptação.
Num mundo onde todos correm, ele caminha.
Num tempo em que todos gritam, ele observa.
Enquanto o sistema empurra o ser humano a ser “mais” — mais produtivo, mais viril, mais conectado — ele escolhe o “menos”.

E há algo de revolucionário nisso.
Afinal, o verdadeiro ato de rebeldia pode ser não competir.


☕ Dica do El Jefe

Na próxima vez que a rotina te devorar, faz um teste:
Desliga as notificações.
Olha pela janela.
Respira devagar.
Pensa menos em conquistar e mais em compreender.

Talvez o herbívoro que existe dentro de nós só esteja pedindo um pouco de silêncio.

segunda-feira, 11 de setembro de 2023

📨 ALAN TURING E O MQ DOS AGENTES — A MENSAGEM CHEGOU DUAS VEZES

 

Bellacosa Mainframe e as mensagens em ia

☕ UM CAFÉ NO BELLACOSA MAINFRAME

📨 ALAN TURING E O MQ DOS AGENTES — A MENSAGEM CHEGOU DUAS VEZES

IBM MQ, agentes de IA, mensageria, filas, producers, consumers, delivery semantics, acknowledgements, commit, rollback, duplicate delivery, idempotência, ordering, correlation ID, message ID, poison messages, backout queues, dead-letter queues, retry, persistence, request/reply, COBOL, CICS, Db2 — e o dia em que Alan Turing descobriu que uma mensagem pode chegar duas vezes sem que ninguém tenha cometido o mesmo erro duas vezes.





🎬 PRÓLOGO — MAS EU JÁ FIZ ISSO!

03:17 da madrugada.

O telefone toca.

Nunca existe boa notícia às 03:17.

O operador atende.

— Produção.

Silêncio.

Depois:

— Temos dois pagamentos iguais.

O operador abre o terminal.

PAYMENT-ID.... P88271
VALUE......... 850.00
STATUS........ PROCESSED

Outra linha:

PAYMENT-ID.... P88271
VALUE......... 850.00
STATUS........ PROCESSED

O pequeno agente aparece na tela.

— Não fui eu!

Alan Turing entra no CPD carregando uma caneca de café.

— Interessante defesa.

— Professor, eu processei a mensagem uma única vez!

O operador consulta os logs.

03:16:51 GET MESSAGE
03:16:52 PROCESS PAYMENT
03:16:52 DB2 COMMIT OK
03:16:52 ...
03:16:53 AGENT RESTART
03:16:54 GET MESSAGE

Turing aponta para o intervalo.

— O que aconteceu entre o commit e a confirmação do consumo da mensagem?

Silêncio.

O administrador MQ olha para o administrador Db2.

O administrador Db2 olha para o programador COBOL.

O programador COBOL olha para o robô.

O robô olha para a porta.

Turing sorri.

— Acho que encontramos nosso próximo capítulo.

No quadro escreve:

PROCESSAR UMA MENSAGEM E CONFIRMAR QUE ELA FOI PROCESSADA NÃO SÃO NECESSARIAMENTE O MESMO EVENTO.

Bem-vindo ao MQ dos Agentes.



📨 CAPÍTULO 1 — MENSAGERIA COMEÇA COM UMA IDEIA MUITO SIMPLES

Imagine dois programas.

PROGRAMA-A

precisa pedir alguma coisa para:

PROGRAMA-B

Uma possibilidade seria A chamar B diretamente.

A ───────────────► B

Mas isso cria algumas dependências.

B precisa estar disponível.

A talvez precise esperar.

A precisa saber onde B está.

Se B estiver sobrecarregado, A sofre junto.

Mensageria introduz um intermediário.

A
│
▼
QUEUE
│
▼
B

A produz uma mensagem.

B consome depois.

Temos dois papéis clássicos:

PRODUCER

e:

CONSUMER.

O producer produz.

O consumer consome.

No meio:

QUEUE.

Simples.

Até produção começar.



📬 CAPÍTULO 2 — UMA FILA É UMA CAIXA POSTAL

Para o programador COBOL iniciante, imagine uma caixa postal.

O remetente coloca:

PEDIDO 12345

na caixa.

Ele não precisa esperar o funcionário responsável aparecer.

Depois o consumidor pega a mensagem.

PUT
↓
QUEUE
↓
GET

No universo IBM MQ podemos imaginar conceitualmente operações como:

MQPUT

e:

MQGET.

O produtor coloca.

O consumidor recupera.

Isso permite:

desacoplamento
processamento assíncrono
absorção de picos
integração entre plataformas
resiliência

Nosso agente pode agora receber trabalho através de mensagens.



🤖 CAPÍTULO 3 — O AGENTE VIROU CONSUMIDOR

Imagine:

CUSTOMER.EVENTS

recebendo:

CUSTOMER_UPDATED

Nosso agente escuta essa fila.

Chega:

CUSTOMER_ID = 12345
EVENT       = ADDRESS_CHANGED

O agente:

1. recebe
2. interpreta
3. consulta Db2
4. aplica regras
5. talvez chama ferramentas
6. produz resultado

Perfeito.

Mas aparece a primeira pergunta importante:

Quando podemos considerar essa mensagem realmente processada?

Quando o agente começou?

Não.

Quando terminou o raciocínio?

Talvez não.

Quando atualizou o Db2?

Ainda precisamos pensar.

Quando confirmou o consumo?

Agora estamos chegando perto do problema.



✉️ CAPÍTULO 4 — TODA MENSAGEM PRECISA DE IDENTIDADE

No JES2 dos Agentes aprendemos:

RUN-ID.

Agora precisamos identificar mensagens.

Conceitualmente:

MESSAGE-ID

Pode existir também:

CORRELATION-ID.

Imagine:

MESSAGE-ID..... M000881
CORRELATION-ID. C000042
RUN-ID......... A004821

Esses identificadores respondem perguntas diferentes.

MESSAGE-ID

Qual mensagem é esta?

CORRELATION-ID

A qual conversa, fluxo ou solicitação ela pertence?

RUN-ID

Qual execução do agente está processando?

Isso será ouro para observabilidade.


🔗 CAPÍTULO 5 — CORRELATION ID: ENCONTRE A CONVERSA NO MEIO DO CAOS

Imagine:

REQUEST
MESSAGE-ID M100
CORREL-ID C500

O serviço responde:

RESPONSE
MESSAGE-ID M101
CORREL-ID C500

São mensagens diferentes.

Mas pertencem à mesma conversa.

Em sistemas distribuídos isso é extremamente útil.

Podemos seguir:

USER REQUEST
     ↓
CICS
     ↓
MQ
     ↓
AGENT
     ↓
Db2
     ↓
ANOTHER QUEUE

Tudo associado a:

CORRELATION-ID C500.

Quando alguém pergunta:

O que aconteceu com a solicitação do cliente?

não precisamos procurar agulha no palheiro.


📦 CAPÍTULO 6 — A MENSAGEM PODE SOBREVIVER AO CONSUMIDOR

Aqui está uma das grandes vantagens de mensageria confiável.

O producer envia.

PUT MESSAGE

O consumer está desligado.

A mensagem pode permanecer na fila conforme sua configuração e características.

Depois:

CONSUMER START

Ele processa.

Isso é muito diferente de uma chamada síncrona simples.

No mundo dos agentes isso é poderoso.

O LLM pode estar indisponível.

O worker pode reiniciar.

A aplicação pode sofrer manutenção.

A mensagem continua aguardando.

Mas agora surge uma pergunta:

Quanto tempo?


⏰ CAPÍTULO 7 — MENSAGENS TAMBÉM ENVELHECEM

Olha quem voltou.

Nosso amigo do Db2:

TEMPO.

Imagine:

MESSAGE CREATED:
10:00

O consumidor consegue processar:

14:00.

Tecnicamente a mensagem chegou.

Mas ainda faz sentido?

Talvez seja:

GENERATE MONTHLY REPORT

Sem problema.

Talvez seja:

CUSTOMER IS CURRENTLY LOGGED IN

Quatro horas depois?

Provavelmente inútil.

Logo mensagens também possuem:

AGE
EXPIRY
BUSINESS VALIDITY.

O MQ dos Agentes encontra o Db2 dos Agentes.

Não basta perguntar:

A mensagem chegou?

Pergunte:

Ela ainda significa alguma coisa quando chegou?


💥 CAPÍTULO 8 — A MENSAGEM CHEGOU DUAS VEZES

Finalmente chegamos ao monstro.

Imagine:

GET M001

O agente processa.

INSERT PAYMENT
COMMIT

Tudo certo.

Mas antes de completar adequadamente o ciclo de consumo:

CRASH.

Quando volta, dependendo da arquitetura e semântica empregada, a mensagem pode estar novamente disponível.

GET M001

O agente grita:

— Eu já processei isso!

A infraestrutura responde:

— Prove.

😂

Bem-vindo à possibilidade de:

REDELIVERY.


🧠 CAPÍTULO 9 — POR QUE DUPLICATAS EXISTEM?

Porque sistemas distribuídos possuem pontos de falha.

Considere:

MESSAGE
↓
PROCESS
↓
DATABASE UPDATE
↓
ACKNOWLEDGE

Agora imagine falha exatamente aqui:

DATABASE UPDATE
↓
COMMIT
↓
💀 CRASH
↓
ACKNOWLEDGE

Do ponto de vista do banco:

SUCCESS.

Do ponto de vista da mensageria:

NÃO SEI SE ELE TERMINOU.

O sistema possui duas escolhas ruins.

Escolha A

Assumir que processou.

Pode perder mensagem.

Escolha B

Entregar novamente.

Pode duplicar processamento.

Sistemas confiáveis frequentemente preferem não perder trabalho.

Então seu consumidor precisa estar preparado para duplicatas quando a semântica e arquitetura permitirem redelivery.


🔁 CAPÍTULO 10 — AT-LEAST-ONCE

Uma semântica comum em sistemas de mensageria e processamento distribuído é:

AT-LEAST-ONCE

Ou seja:

A mensagem será processada pelo menos uma vez.

Isso pode significar:

1

ou:

2

ou, em situações problemáticas:

mais.

Então:

AT-LEAST-ONCE

não significa:

EXACTLY-ONCE.

Se o efeito da mensagem não puder acontecer duas vezes, precisamos projetar proteção.


🎯 CAPÍTULO 11 — EXACTLY-ONCE É O UNICÓRNIO DA DUNGEON

Todo mundo quer:

EXACTLY ONCE.

A mensagem chega uma vez.

É processada uma vez.

O efeito acontece uma vez.

Perfeito.

Mas sistemas distribuídos possuem:

falhas
timeouts
restarts
partições
retries

E cada fronteira transacional complica o problema.

Se MQ e Db2 participam de uma unidade coordenada adequadamente, podemos obter garantias transacionais fortes em cenários específicos.

Mas quando nosso agente chama:

Db2
REST API
email
LLM
CRM SaaS
payment service

a conversa muda.

Nem todos participam da mesma transação.

Por isso é perigoso jogar:

EXACTLY-ONCE

num slide como se fosse magia.


🛡️ CAPÍTULO 12 — IDEMPOTÊNCIA ENTRA COM UMA ESPADA

A solução prática frequentemente passa por:

IDEMPOTÊNCIA.

Uma operação idempotente pode ser repetida sem produzir efeitos adicionais indesejados depois da primeira aplicação bem-sucedida.

Exemplo perigoso:

ADD R$ 100 TO BALANCE

Execute duas vezes:

+100
+100

Resultado diferente.

Agora imagine:

SET PAYMENT P123 STATUS = PROCESSED

Executar novamente pode ser inofensivo dependendo da regra.

Ou:

PROCESS PAYMENT
WHERE PAYMENT_ID = P123
AND STATUS = PENDING

Depois da primeira execução:

STATUS = PROCESSED.

A segunda encontra:

NOT PENDING.

Nada acontece.

Muito melhor.


🪪 CAPÍTULO 13 — IDEMPOTENCY KEY

Outra técnica:

IDEMPOTENCY-KEY.

Exemplo:

IDEMPOTENCY-KEY = ORDER-9981-PAYMENT

Antes de executar:

SELECT STATUS
FROM PROCESSED_MESSAGES
WHERE IDEMPOTENCY_KEY = :KEY;

Se já existe:

ALREADY PROCESSED

não repetimos o efeito.

Se não existe:

PROCESS
STORE KEY
COMMIT

O detalhe crucial é tornar essa proteção suficientemente atômica para impedir dois consumidores concorrentes de passarem pela verificação simultaneamente.

Porque senão:

AGENT-A: não existe!
AGENT-B: não existe!

AGENT-A: processa!
AGENT-B: processa!

Parabéns.

Construímos uma deduplicação que duplica.

😂


🔐 CAPÍTULO 14 — MQ E Db2 PRECISAM CONVERSAR SOBRE COMMIT

Agora chegamos ao terreno favorito do mainframe.

Imagine:

MQGET
↓
UPDATE Db2
↓
COMMIT

Queremos que o consumo da mensagem e a alteração no banco tenham comportamento consistente.

Idealmente, dentro de um desenho transacional apropriado:

GET MESSAGE
+
UPDATE DATABASE
+
COMMIT

fazem parte de uma unidade lógica coerente.

Se falhar:

ROLLBACK.

A alteração do banco não fica pela metade e a mensagem pode permanecer disponível conforme a unidade de trabalho.

Esse é exatamente o tipo de problema que mainframes resolvem há décadas.


🧱 CAPÍTULO 15 — UNIT OF WORK VOLTOU

Nosso velho amigo:

UOW

Unit of Work.

Conceitualmente:

BEGIN UOW

GET MESSAGE
UPDATE DB2
INSERT AUDIT

COMMIT UOW

Se:

UPDATE DB2

falhar:

ROLLBACK.

O importante é definir claramente:

Quais efeitos pertencem à mesma unidade de consistência?

Para agentes, isso é essencial.

Porque eles tendem a fazer muitas coisas.


☠️ CAPÍTULO 16 — O PROBLEMA DAS AÇÕES EXTERNAS

Nosso agente:

GET MESSAGE
↓
UPDATE Db2
↓
SEND EMAIL
↓
CALL PAYMENT API
↓
POST MESSAGE

Rollback?

Db2:

— Posso ajudar.

MQ:

— Também.

E-mail:

— Já enviei.

API externa:

— Já cobrei.

Internet:

— Boa sorte.

😂

Essa é a fronteira entre transações locais/coordenadas e efeitos distribuídos externos.

Você precisa pensar em:

idempotência
compensação
outbox
inbox
deduplicação
reconciliação

e não simplesmente:

ROLLBACK EVERYTHING.

📤 CAPÍTULO 17 — O OUTBOX PATTERN

Imagine que precisamos:

UPDATE ORDER

e depois publicar:

ORDER_COMPLETED.

Problema clássico:

UPDATE Db2
COMMIT

CRASH

SEND MESSAGE

O pedido mudou.

A mensagem nunca saiu.

Ou:

SEND MESSAGE

CRASH

UPDATE Db2

Mensagem diz que aconteceu.

Banco diz que não.

Uma abordagem conhecida é o:

TRANSACTIONAL OUTBOX.

Dentro da mesma transação do banco:

UPDATE ORDER

INSERT INTO OUTBOX
   ORDER_COMPLETED

COMMIT

Depois outro processo publica registros da outbox.

Assim a intenção de publicar fica persistida junto com a alteração de negócio.

Ainda precisamos tratar duplicatas na publicação.

Mas removemos uma janela perigosa.


📥 CAPÍTULO 18 — INBOX PATTERN

Do outro lado podemos manter registro das mensagens consumidas.

INBOX
────────────────
MESSAGE_ID
PROCESSED_AT
STATUS

Chega:

M001.

Verificamos.

Não existe.

Processamos e registramos.

Chega novamente:

M001.

Existe.

DUPLICATE

Ignoramos ou retornamos o resultado anterior, conforme a aplicação.

Temos então:

OUTBOX

para publicação confiável e:

INBOX

para consumo controlado.


🧪 CAPÍTULO 19 — A MENSAGEM VENENOSA

Imagine:

MESSAGE M666

Chega.

Consumer tenta.

FAIL.

Volta.

Tenta.

FAIL.

Volta.

FAIL.

E continua:

FAIL
FAIL
FAIL
FAIL
FAIL

Talvez a mensagem tenha:

formato inválido
campo impossível
versão incompatível
regra não suportada
dados corrompidos

Ela nunca funcionará sem intervenção.

Chamamos informalmente esse tipo de caso de:

POISON MESSAGE.

Nosso agente não deveria ficar mastigando veneno eternamente.


☠️ CAPÍTULO 20 — BACKOUT QUEUE

Em ambientes IBM MQ, podemos projetar tratamento para mensagens que repetidamente causam rollback/backout.

Depois de determinado limite:

BACKOUT COUNT > THRESHOLD

a aplicação pode encaminhar a mensagem para uma:

BACKOUT QUEUE.

Assim:

NORMAL QUEUE

continua processando mensagens saudáveis.

E a problemática vai para investigação.

Conceitualmente:

QUEUE
  │
  ▼
CONSUMER
  │
  ├── SUCCESS → DONE
  │
  └── FAIL
       │
       ▼
    RETRY
       │
       ▼
 THRESHOLD?
   │       │
  NO      YES
   │       │
 retry     ▼
       BACKOUT QUEUE

Isso impede que uma única mensagem bloqueie eternamente o fluxo.


⚰️ CAPÍTULO 21 — DEAD-LETTER QUEUE NÃO É EXATAMENTE A MESMA COISA

Aqui precisamos separar conceitos.

Uma:

DEAD-LETTER QUEUE

é tradicionalmente associada a mensagens que o sistema não consegue entregar ou encaminhar ao destino esperado por determinados problemas de entrega.

Uma:

BACKOUT QUEUE

pode ser usada pela aplicação para mensagens que foram entregues, mas falham repetidamente durante processamento e sofrem backout.

No discurso moderno muita gente usa “DLQ” genericamente para qualquer fila de mensagens problemáticas.

Mas no universo IBM MQ a distinção operacional é útil.

O mainframeiro olha e diz:

Nome correto evita reunião de duas horas.


🔁 CAPÍTULO 22 — RETRY PRECISA TER CÉREBRO

Falhou.

Tentamos novamente?

Depende.

Erro:

HTTP 503

Talvez.

Erro:

INVALID CUSTOMER ID

Provavelmente não.

Erro:

TIMEOUT

Talvez.

Erro:

SCHEMA VERSION UNSUPPORTED

Repetir cem vezes provavelmente produzirá cem fracassos.

Portanto:

RETRYABLE ERROR

e:

NON-RETRYABLE ERROR

deveriam ser tratados diferentemente.

Retry não é religião.

É política.


⏳ CAPÍTULO 23 — EXPONENTIAL BACKOFF

Imagine 10.000 agentes.

Serviço externo cai.

Todos tentam novamente:

NOW.

O serviço tenta recuperar.

Dez mil chamadas chegam.

Ele cai novamente.

Chamamos isso de:

RETRY STORM.

Uma estratégia:

1s
2s
4s
8s
16s

é exponential backoff.

Adicione:

JITTER

para não fazer todos acordarem exatamente juntos.

4.1s
3.7s
4.8s

Agora reduzimos o efeito manada.

WLM agradece.


🚂 CAPÍTULO 24 — E SE AS MENSAGENS CHEGAREM FORA DE ORDEM?

Imagine:

M1:
CUSTOMER_CREATED

depois:

M2:
CUSTOMER_BLOCKED.

Queremos:

M1 → M2.

Mas o consumidor observa:

M2 → M1.

Agora pode concluir:

Não existe cliente para bloquear.

Depois cria o cliente.

Resultado:

ACTIVE.

Mas deveria estar:

BLOCKED.

O conteúdo estava correto.

As mensagens estavam corretas.

A ordem estava errada.

Mais um monstro.


🔢 CAPÍTULO 25 — SEQUÊNCIA TAMBÉM É DADO

Podemos adicionar:

ENTITY-ID...... CUSTOMER-123
SEQUENCE....... 42

Depois:

ENTITY-ID...... CUSTOMER-123
SEQUENCE....... 43.

O consumidor recebe 43 antes de 42.

Pode:

esperar
reordenar
rejeitar
reconciliar

dependendo da arquitetura.

Mas precisa saber que existe ordem.

Sem informação de sequência, talvez seja impossível perceber o problema.


🧩 CAPÍTULO 26 — ORDEM GLOBAL É CARA E MUITAS VEZES DESNECESSÁRIA

Precisamos de todas as mensagens do sistema inteiro em ordem?

Provavelmente não.

Talvez precisemos apenas manter ordem por:

CUSTOMER-ID

ou:

ORDER-ID

ou:

ACCOUNT-ID.

Isso permite paralelismo entre entidades diferentes.

CUSTOMER A → ordered
CUSTOMER B → ordered
CUSTOMER C → ordered

mas A, B e C podem ser processados simultaneamente.

O segredo é perguntar:

Qual é a menor fronteira dentro da qual a ordem realmente importa?


🕰️ CAPÍTULO 27 — ATRASADA NÃO SIGNIFICA FORA DE ORDEM

Outra distinção.

Uma mensagem pode chegar:

30 minutos atrasada

mas ainda na ordem correta.

Ou:

100 ms depois

mas fora de ordem em relação a outra.

Temos conceitos diferentes:

LATENCY
ORDERING
FRESHNESS.

Não misture.

O Db2 dos Agentes nos ensinou:

dado tem idade.

O MQ acrescenta:

a notícia sobre o dado também tem idade.


📰 CAPÍTULO 28 — EVENT TIME E PROCESSING TIME

Imagine evento:

EVENT_TIME:
10:00:01

Chega ao consumidor:

PROCESSING_TIME:
10:00:09.

São tempos diferentes.

Isso pode ser extremamente relevante.

Se o agente analisa:

O que aconteceu às 10:00?

precisa considerar:

EVENT TIME.

Se pergunta:

Quando processamos?

usa:

PROCESSING TIME.

Misturar os dois pode gerar análises absurdas.


🤖 CAPÍTULO 29 — O AGENTE PRECISA SABER QUE O EVENTO NÃO É O ESTADO ATUAL

Chega mensagem:

10:00
CUSTOMER_STATUS_CHANGED
ACTIVE → BLOCKED

Nosso agente recebe às:

10:10.

Antes de executar ação crítica, talvez precise consultar Db2.

Porque às:

10:05

o cliente pode ter sido:

UNBLOCKED.

Então a mensagem descreve:

ALGO QUE ACONTECEU

e não necessariamente:

COMO O MUNDO ESTÁ AGORA.

Essa distinção é gigantesca.

EVENT ≠ CURRENT STATE.


🗄️ CAPÍTULO 30 — MQ E Db2 CONTAM HISTÓRIAS DIFERENTES

Db2 frequentemente responde:

Qual é o estado armazenado?

MQ frequentemente transporta:

Algo aconteceu.

Exemplo:

Db2:
STATUS = ACTIVE

Evento antigo:

CUSTOMER_BLOCKED.

Se o agente tratar o evento antigo como estado atual:

problema.

Por isso, para ações críticas:

EVENT
↓
INTERPRET
↓
READ CURRENT STATE
↓
REVALIDATE
↓
ACT.

Nosso princípio do Db2 dos Agentes volta novamente.


🔄 CAPÍTULO 31 — EVENTUAL CONSISTENCY

Em sistemas distribuídos, diferentes componentes podem não refletir a mesma mudança exatamente no mesmo instante.

Imagine:

SYSTEM A
STATUS = BLOCKED

Evento viaja.

Enquanto isso:

SYSTEM B
STATUS = ACTIVE.

Alguns milissegundos ou segundos depois:

SYSTEM B
STATUS = BLOCKED.

Durante esse intervalo:

A ≠ B.

Isso não significa necessariamente corrupção.

Pode ser uma consequência do modelo de propagação.

Agentes precisam compreender isso.

Dois sistemas podem temporariamente apresentar visões diferentes.

Lembra dos dois agentes do Db2?

Eles voltaram.


📊 CAPÍTULO 32 — OBSERVABILIDADE DA FILA

Nosso SDSF dos Agentes ganha novos campos.

Imagine:

QUEUE........ CUSTOMER.EVENTS
DEPTH........ 18,442

OLDEST MSG... 00:07:31
PUT RATE..... 920/s
GET RATE..... 710/s

CONSUMERS.... 24
BACKOUTS..... 17
RETRIES...... 2,881

Agora conseguimos enxergar:

QUEUE DEPTH

Mas profundidade sozinha não basta.

18 mil mensagens pode ser terrível.

Ou normal.

Precisamos de contexto.

Talvez mais importante seja:

OLDEST MESSAGE AGE.

Se a fila cresce e a mensagem mais velha envelhece:

temos backlog real.


📈 CAPÍTULO 33 — PRODUCER MAIS RÁPIDO QUE CONSUMER

Imagine:

PRODUCER = 1000 msg/s
CONSUMER = 700 msg/s

Diferença:

+300 msg/s.

Depois de um minuto:

18,000 messages

Depois de uma hora:

1,080,000.

A fila absorve pico.

Mas não derrota matemática.

😂

Se a entrada continuamente supera a saída:

BACKLOG ↑
LATENCY ↑
MESSAGE AGE ↑

Precisamos:

mais consumers
mais capacidade
reduzir trabalho
priorizar
aplicar backpressure

WLM aparece novamente.


🚦 CAPÍTULO 34 — BACKPRESSURE

Se consumidores não conseguem acompanhar produtores, precisamos evitar crescimento ilimitado.

Isso pode envolver:

rate limiting
quotas
producer throttling
queue limits
load shedding
priority

Mensageria desacopla componentes.

Mas desacoplamento não significa capacidade infinita.

Fila é amortecedor.

Não buraco negro.


🧰 CAPÍTULO 35 — CHECKLIST DO MQ DOS AGENTES

Antes de colocar um agente consumindo mensagens, responda:

1. Quem produz?

PRODUCER?

2. Quem consome?

CONSUMER?

3. A mensagem é persistente quando necessário?

Defina de acordo com criticidade.

4. Ela pode ser entregue novamente?

Projete assumindo que sim quando sua semântica permitir.

5. O processamento é idempotente?

Se não, por quê?

6. Existe idempotency key?

Defina.

7. Existe MESSAGE-ID?

Sempre saiba qual mensagem está tratando.

8. Existe CORRELATION-ID?

Rastreie o fluxo.

9. A ordem importa?

Defina a fronteira.

10. Existe sequence number?

Quando necessário.

11. A mensagem expira?

Defina validade.

12. Existe retry?

Classifique erros.

13. Existe backoff?

Evite tempestades.

14. Existe poison message handling?

Tenha backout ou quarentena adequada.

15. Existe DLQ?

Monitore.

16. A mensagem representa evento ou estado?

Não confunda.

17. Precisa revalidar no Db2?

Para ações críticas, provavelmente.

18. O commit inclui quais recursos?

Defina UOW.

19. Existem efeitos externos?

Planeje idempotência ou compensação.

20. Conseguimos provar o que aconteceu?

Logs, traces, IDs e timestamps.


🥚 EASTER EGG — A MENSAGEM IMORTAL

04:12.

O operador percebe:

BACKOUT COUNT = 847.

— Professor...

Turing aproxima-se.

MESSAGE-ID = M666

— Há quanto tempo?

FIRST DELIVERY:
1999-12-31 23:59:58

Silêncio.

O programador COBOL arregala os olhos.

— Isso está tentando processar desde o bug do milênio?

O administrador MQ responde:

— Ninguém teve coragem de apagar.

O pequeno robô pergunta:

— O que ela contém?

Abrem.

CUSTOMER-ID = 000000001
ACTION      = MIGRATE
FORMAT      = VERSION-0

Turing olha.

— Algum consumidor suporta versão zero?

Todos:

— Não.

— Então por que continuam tentando?

Silêncio.

O operador responde:

— Retry policy.

Turing pega o café.

— Qual?

RETRY = FOREVER.

Turing fecha os olhos.

No fundo do CPD alguém sussurra:

Ela não é uma mensagem... agora ela é patrimônio histórico.

😂


🧬 CAPÍTULO 36 — NOSSO MAINFRAME DOS AGENTES GANHOU SISTEMA NERVOSO

Nossa arquitetura agora possui:

RACF
↓
QUEM PODE?
PF3
↓
POSSO PARAR?
SDSF
↓
O QUE ESTÁ FAZENDO?
MAXCC
↓
FUNCIONOU?
WLM
↓
QUEM RECEBE RECURSOS?
JES2
↓
QUEM COMEÇA E QUANDO?
CICS
↓
QUANTO TEMPO O HUMANO PODE ESPERAR?
Db2
↓
QUAL REALIDADE O AGENTE ESTÁ VENDO?

E agora:

MQ
↓
COMO A NOTÍCIA VIAJA ENTRE OS AGENTES?

Começamos a montar algo muito interessante.


🏰 CAPÍTULO 37 — O SISTEMA OPERACIONAL CONCEITUAL DOS AGENTES

Turing desenha:

                        HUMANO
                           │
                           ▼
                        CICS
                           │
               ┌───────────┴───────────┐
               │                       │
               ▼                       ▼
             AGENT                    MQ
               │                       │
               │                  ┌────┴────┐
               │                  ▼         ▼
               │               AGENT-B   AGENT-C
               │                  │         │
               └──────────┬───────┴─────────┘
                          ▼
                         Db2

Acima:

JES2
SCHEDULING

Ao redor:

WLM
CAPACITY

Na porta:

RACF
AUTHORITY

Na sala de operações:

SDSF
OBSERVABILITY

E sobre as mensagens:

MESSAGE-ID
CORRELATION-ID
SEQUENCE
TIMESTAMP
VERSION

Agora agentes não são apenas pequenos cérebros isolados.

Eles formam:

UM SISTEMA DISTRIBUÍDO.

E sistemas distribuídos possuem regras próprias.


🧠 CAPÍTULO 38 — O PROGRAMADOR COBOL TEM OUTRA VANTAGEM INESPERADA

Para muita gente:

event-driven architecture
message queues
async processing
retries

parecem invenções moderníssimas.

O mainframeiro olha para MQ e diz:

Sente-se, jovem.

😂

Porque aplicações corporativas trabalham com:

mensageria
filas
commit
rollback
correlation
persistence
backout
recovery

há décadas.

Claro que tecnologias modernas acrescentaram:

cloud
Kafka
microservices
containers
serverless
agents
LLMs.

Mas a pergunta fundamental continua:

Como dois componentes independentes trocam trabalho sem transformar cada falha em catástrofe?

Essa pergunta é antiga.

E continua excelente.


☕ CAPÍTULO 39 — O AGENTE PRECISA SER DESCONFIADO

Um consumidor robusto não deveria pensar:

Recebi uma mensagem. Vou obedecer.

Deveria perguntar:

Quem enviou?
Posso confiar?
Qual schema?
Qual versão?
Já processei?
Está na ordem?
Ainda é válida?
Tenho autorização?
Preciso consultar o estado atual?
Posso executar duas vezes?
Como confirmo?
Como desfaço?

Isso parece paranoia.

Em produção chamamos de:

ENGENHARIA.


🎭 CAPÍTULO 40 — EVENTO NÃO É ORDEM

Outra regra importante para agentes.

Mensagem:

CUSTOMER_CHANGED_ADDRESS

significa:

O endereço mudou.

Não significa automaticamente:

Faça alguma coisa perigosa.

O agente precisa interpretar eventos dentro de política.

Uma arquitetura segura separa:

FACT

de:

DECISION

e:

ACTION.

Assim:

EVENT
↓
OBSERVE
↓
VALIDATE
↓
DECIDE
↓
AUTHORIZE
↓
ACT

Essa separação reduz o risco de transformar qualquer mensagem numa ordem administrativa.

RACF agradece novamente.


🔐 CAPÍTULO 41 — MENSAGEM TAMBÉM PRECISA DE ZERO TRUST

Nosso agente não deveria confiar numa mensagem apenas porque ela apareceu numa fila.

Considere:

identity
authorization
queue permissions
message integrity
origin
schema validation
content validation

Uma mensagem malformada ou maliciosa pode tentar fazer o agente:

CALL TOOL
TRANSFER MONEY
DELETE DATA

Logo:

MQ

não elimina segurança.

Ele apenas transporta dados.

Autorização continua sendo outra camada.


🧾 CAPÍTULO 42 — SCHEMA É O COPYBOOK DA MENSAGEM

O programador COBOL conhece isso imediatamente.

Mensagem:

01 PAYMENT-MESSAGE.
   05 MSG-VERSION       PIC 9(04).
   05 PAYMENT-ID        PIC X(20).
   05 CUSTOMER-ID       PIC 9(09).
   05 AMOUNT            PIC S9(11)V99 COMP-3.
   05 EVENT-TIMESTAMP   PIC X(26).

Isso define estrutura.

Mas lembramos do Db2 dos Agentes:

ESTRUTURA NÃO É SEMÂNTICA.

Precisamos saber:

AMOUNT é em BRL?
PAYMENT-ID é único?
EVENT-TIMESTAMP usa qual timezone?
CUSTOMER-ID pode ser zero?
MSG-VERSION 0002 é compatível?

O copybook voltou.

Ele nunca foi embora.


🔄 CAPÍTULO 43 — VERSIONAMENTO DE MENSAGEM

Hoje:

VERSION 1

Amanhã precisamos adicionar:

CURRENCY.

Criamos:

VERSION 2.

Mas ainda existem consumidores antigos.

Agora precisamos pensar:

backward compatibility
forward compatibility
schema evolution

Nosso agente deve saber:

Consigo interpretar esta versão?

Se não:

QUARANTINE

é melhor do que:

VOU CHUTAR.

Especialmente quando “chutar” movimenta dinheiro.


🌊 CAPÍTULO 44 — A FILA É UM AMORTECEDOR, NÃO UM MILAGRE

Turing desenha:

PRODUCER
████████████████████████
          ↓
       QUEUE
~~~~~~~~~~~~~~~~~~~~~~~~
          ↓
CONSUMER
██████████

A fila absorve diferença temporária.

Mas se producer permanece mais rápido:

QUEUE DEPTH ↑

até algum limite operacional.

Portanto monitoramos:

depth
oldest age
put rate
get rate
consumer count
failure rate
backout count

Uma fila crescente é uma mensagem.

Ironicamente:

A própria fila está tentando falar com você.


🏁 CAPÍTULO 45 — A REGRA DE OURO

Alan Turing escreve no quadro:

MESSAGE RECEIVED
≠
BUSINESS ACTION COMPLETED

Depois:

BUSINESS ACTION COMPLETED
≠
MESSAGE ACKNOWLEDGED

Depois:

MESSAGE ACKNOWLEDGED
≠
WORLD STILL UNCHANGED

O pequeno robô fica olhando.

— Então eu não posso confiar em nada?

Turing sorri.

— Pode.

— Em quê?

— Em protocolos, transações, IDs, versões, políticas, observabilidade e verificações.

— Parece trabalhoso.

— É.

— E se eu simplesmente confiar que tudo dará certo?

Do fundo do CPD, cinco administradores começam a rir.


☕ EPÍLOGO — RECEBIDO NÃO SIGNIFICA TERMINADO

07:02.

A equipe da manhã chega.

Nosso agente recebe:

MESSAGE-ID..... M004821
CORREL-ID...... C009912
EVENT.......... PAYMENT_REQUESTED
PAYMENT-ID..... P88271
AMOUNT......... 850.00
SEQUENCE....... 42
EVENT-TIME..... 07:02:01

Ele verifica:

SCHEMA......... OK
VERSION........ SUPPORTED
AUTHORITY...... OK
DUPLICATE...... NO
ORDER.......... OK
FRESHNESS...... OK

Consulta Db2.

CURRENT STATE.. VALID

Inicia unidade de trabalho.

PROCESS PAYMENT
INSERT AUDIT
REGISTER MESSAGE

Confirma.

COMMIT.

Resultado:

SUCCESS.

Alguns milissegundos depois:

💥

O worker cai.

Reinicia.

A mensagem aparece novamente.

O velho agente teria gritado:

Já fiz isso!

O novo apenas consulta:

IDEMPOTENCY-KEY = P88271.

Resposta:

ALREADY PROCESSED.

Nenhum pagamento duplicado.

Nenhuma madrugada destruída.

Nenhum DBA perseguindo robôs pelo corredor.

O agente registra:

DUPLICATE DELIVERY
BUSINESS EFFECT SKIPPED
STATUS = SAFE

Turing toma o primeiro café da manhã.

O programador pergunta:

— Então a duplicata deixou de ser um problema?

— Não.

— Mas não aconteceu nada.

— Exatamente.

O programador pensa.

Turing continua:

— Engenharia confiável não é construir um universo onde falhas nunca acontecem.

Aponta para a tela:

REDELIVERY DETECTED

— É construir um sistema no qual falhas esperadas deixam de virar desastres inesperados.

O pequeno robô levanta a mão.

— Professor?

— Sim?

— Posso apagar a mensagem de 1999?

Do outro lado do CPD o administrador MQ grita:

— NÃO! PRIMEIRO FAZ BACKUP!

😂

Turing fecha o terminal.

Na tela permanece:

MQ
────────────────────────

MESSAGE-ID...... M004821
DELIVERY........ 2
PROCESSING...... IDEMPOTENT
BUSINESS EFFECT. ONCE
STATUS.......... SAFE

COMMIT.......... OK

E embaixo:

A MENSAGEM PODE CHEGAR NOVAMENTE.

O EFEITO NÃO PRECISA ACONTECER NOVAMENTE.

Essa é talvez a grande lição do MQ dos Agentes.

Porque quando centenas de inteligências artificiais começarem a conversar entre si, delegando tarefas, publicando eventos, recebendo respostas, reiniciando workers, atravessando APIs, bancos, filas e nuvens, não bastará perguntar:

A mensagem chegou?

Teremos de perguntar:

Qual mensagem?

De quem?

Quando?

Em qual ordem?

Quantas vezes?

Ainda é válida?

Já foi processada?

O efeito foi confirmado?

Posso executar novamente?

E se eu cair exatamente agora?

O mainframe conhece essa paranoia há décadas.

E talvez por isso tenha tanta coisa para ensinar aos agentes.

MQGET
   ↓
VALIDATE
   ↓
DEDUPLICATE
   ↓
REVALIDATE
   ↓
PROCESS
   ↓
COMMIT
   ↓
ACKNOWLEDGE

Alan Turing olha para o fluxo.

Toma mais um gole.

E acrescenta apenas uma linha:

IF IN DOUBT
   DO NOT CHARGE THE CUSTOMER TWICE.

READY

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...