Translate

Mostrar mensagens com a etiqueta Integração de Sistemas. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Integração de Sistemas. Mostrar todas as mensagens

sexta-feira, 19 de junho de 2026

IBM MQ sem Mistérios: da Primeira Fila ao Salto Quântico da Integração Corporativa

 

Bellacosa Mainframe uma visao do ibm mq 10

☕ Um Café no Bellacosa Mainframe

IBM MQ sem Mistérios: da Primeira Fila ao Salto Quântico da Integração Corporativa

O guia do Programador COBOL Padawan para compreender mensagens, filas, Queue Managers, canais, segurança, clusters, containers e a evolução do MQSeries ao IBM MQ 10.0

Existe uma cena clássica em praticamente todo ambiente corporativo: de um lado, temos um programa COBOL executando tranquilamente no z/OS; do outro, uma aplicação Java, um aplicativo bancário, uma API escrita em Python, um sistema Linux, um serviço na nuvem ou algum microsserviço perdido dentro de um cluster Kubernetes.

Todos precisam conversar.

O problema é que eles não falam necessariamente a mesma língua, não estão ligados no mesmo horário, não possuem a mesma velocidade e, pior ainda, podem ficar indisponíveis justamente no momento em que a mensagem precisa ser entregue.

É aí que entra o IBM MQ.

O MQ funciona como uma espécie de Central de Comunicações da Frota Estelar. A USS Enterprise não precisa pousar em cada planeta para entregar uma ordem. Ela transmite a mensagem por uma infraestrutura preparada para transportar, proteger, armazenar e encaminhar a comunicação.

No mundo corporativo, o IBM MQ desempenha uma missão semelhante.

Ele permite que aplicações diferentes troquem informações com segurança, confiabilidade e independência. Um programa envia uma mensagem; o MQ armazena essa mensagem; outro programa a recebe quando estiver pronto.

A ideia parece simples.

Mas é justamente essa simplicidade que sustenta bancos, seguradoras, companhias aéreas, governos, varejistas, indústrias, sistemas de pagamento e inúmeras operações críticas ao redor do planeta.

Prepare sua caneca de café, ajuste o uniforme da Frota e ligue o terminal 3270. Nossa missão será atravessar mais de três décadas de evolução do IBM MQ, começando no antigo MQSeries e chegando ao IBM MQ 10.0.


Capítulo I — Antes do MQ: quando as aplicações precisavam esperar umas pelas outras

Imagine que um programa chamado PGMPED01 precise enviar um pedido para outro programa chamado PGMFAT01.

Sem mensageria, o primeiro programa poderia chamar diretamente o segundo:

PGMPED01 ───────────────► PGMFAT01
           chamada direta

Essa arquitetura pode funcionar enquanto tudo estiver perfeitamente disponível.

Mas o que acontece quando:

  • o segundo programa está parado;

  • a rede caiu;

  • o servidor remoto está em manutenção;

  • o processamento demora;

  • há milhares de solicitações simultâneas;

  • uma das aplicações é atualizada;

  • o sistema consumidor precisa ser transferido para outra plataforma?

Na comunicação direta, o produtor e o consumidor ficam fortemente acoplados.

O programa produtor precisa conhecer:

  • o endereço do consumidor;

  • o protocolo utilizado;

  • o formato esperado;

  • o tempo de resposta;

  • a condição de disponibilidade.

É como se o capitão de uma nave precisasse localizar pessoalmente cada tripulante para entregar uma ordem. Se o oficial estivesse dormindo, em missão externa ou preso no Holodeck, toda a operação ficaria bloqueada.

O MQ introduz um intermediário:

PGMPED01 ───► FILA.PEDIDOS ───► PGMFAT01

O produtor não entrega diretamente ao consumidor. Ele coloca a mensagem em uma fila.

O consumidor não precisa estar funcionando naquele instante. Quando estiver disponível, poderá retirar e processar a mensagem.

Esse é o coração da comunicação assíncrona.


Capítulo II — O que significa MQ?

MQ tornou-se associado a Message Queueing, ou enfileiramento de mensagens.

O produto começou como MQSeries em 1993, depois foi renomeado WebSphere MQ em 2002 e passou a se chamar IBM MQ em 2014. A solução cresceu de uma plataforma de filas para um conjunto completo de recursos de mensageria corporativa, disponível em z/OS, sistemas distribuídos, appliances, nuvem e containers. (Wikipedia)

Uma mensagem é uma unidade de informação enviada por uma aplicação.

Ela pode conter:

  • uma transação bancária;

  • um pedido de compra;

  • os dados de um cliente;

  • uma solicitação de pagamento;

  • uma notificação;

  • um evento de estoque;

  • um documento JSON;

  • um registro COBOL;

  • uma instrução para outro sistema;

  • até mesmo dados binários.

A fila é o local lógico onde essa mensagem aguarda processamento.

Pense em uma estação ferroviária.

Os passageiros são as mensagens.

A plataforma é a fila.

O trem é o canal de transporte.

A estação central é o Queue Manager.

Os fiscais são as regras de segurança.

O sistema de sinalização representa os mecanismos de confirmação, controle e recuperação.

No universo da Frota Estelar, podemos fazer outra analogia:

Mensagem        = ordem da missão
Fila            = caixa de comunicações
Queue Manager   = computador central da nave
Canal           = frequência de transmissão
Aplicação       = tripulante remetente ou destinatário

Capítulo III — A criatura mais importante: o Queue Manager

O Queue Manager, ou gerenciador de filas, é o coração operacional do IBM MQ.

Ele administra:

  • filas;

  • mensagens;

  • conexões;

  • canais;

  • segurança;

  • recuperação;

  • logs;

  • persistência;

  • transações;

  • entrega entre ambientes.

Um Queue Manager pode ser imaginado como uma agência central dos Correios. Ele conhece as caixas postais, controla o armazenamento e encaminha as mensagens para outros locais.

Exemplo conceitual:

+---------------------------------------+
|         QUEUE MANAGER QMZOS01         |
|                                       |
|  FILA.PEDIDOS                         |
|  FILA.PAGAMENTOS                      |
|  FILA.RESPOSTAS                       |
|  FILA.ERROS                           |
|                                       |
|  Canais, logs, segurança e controle   |
+---------------------------------------+

Um programa pode abrir uma fila e colocar uma mensagem usando uma chamada MQPUT.

Outro programa pode abrir a mesma fila e obter a mensagem usando MQGET.

Fluxo básico:

Programa produtor
      |
      | MQPUT
      v
FILA.PEDIDOS
      |
      | MQGET
      v
Programa consumidor

No mundo COBOL, essas operações podem ser efetuadas por meio da interface MQI, a Message Queue Interface.

Uma sequência lógica simplificada seria:

MQCONN  → conectar ao Queue Manager
MQOPEN  → abrir uma fila
MQPUT   → colocar uma mensagem
MQCLOSE → fechar a fila
MQDISC  → desconectar

Para consumir:

MQCONN  → conectar
MQOPEN  → abrir
MQGET   → obter a mensagem
MQCLOSE → fechar
MQDISC  → desconectar

Esse ciclo é quase um ritual de embarque:

  1. entrar na nave;

  2. abrir o canal;

  3. transmitir ou receber;

  4. fechar o canal;

  5. desembarcar.


Capítulo IV — 1993: nasce o MQSeries

A década de 1990 foi um período de enorme fragmentação tecnológica.

Empresas possuíam:

  • mainframes;

  • servidores Unix;

  • PCs;

  • bancos de dados diferentes;

  • sistemas departamentais;

  • aplicações cliente-servidor;

  • redes heterogêneas.

A comunicação entre essas plataformas era complicada.

O MQSeries surgiu para fornecer mensageria confiável entre sistemas distribuídos.

A grande inovação não era apenas transportar dados. Era permitir que a aplicação produtora continuasse trabalhando sem precisar esperar que a aplicação consumidora terminasse.

Veja a diferença.

Comunicação síncrona

Aplicação A chama Aplicação B
Aplicação A fica esperando
Aplicação B processa
Aplicação B responde
Aplicação A continua

Comunicação assíncrona

Aplicação A envia mensagem
Aplicação A continua trabalhando
Aplicação B processa quando puder

Esse desacoplamento oferece quatro liberdades importantes:

Liberdade de tempo

Produtor e consumidor não precisam estar ativos simultaneamente.

Liberdade de plataforma

Um pode estar no z/OS; o outro, no Linux.

Liberdade de velocidade

O produtor pode enviar rapidamente, enquanto o consumidor processa no próprio ritmo.

Liberdade de evolução

Uma aplicação pode ser modificada sem exigir alteração imediata na outra, desde que o contrato da mensagem seja preservado.

Essa filosofia permanece válida mesmo depois de três décadas.


Capítulo V — Mensagens persistentes: o diário de bordo que não pode desaparecer

Nem toda mensagem possui a mesma importância.

Uma notificação de temperatura pode eventualmente ser descartada.

Uma transferência bancária, não.

Por isso, o MQ diferencia mensagens persistentes e não persistentes.

Mensagem não persistente

É normalmente utilizada quando desempenho é mais importante e uma eventual perda pode ser tolerada.

Exemplos:

  • telemetria temporária;

  • atualização visual;

  • evento sem valor transacional;

  • informação que pode ser recriada.

Mensagem persistente

É protegida pelos mecanismos de log e recuperação do Queue Manager.

Exemplos:

  • pagamento;

  • transferência;

  • pedido;

  • alteração de conta;

  • movimentação contábil;

  • reserva de passagem.

Se o sistema falhar, a mensagem persistente pode ser recuperada.

É o equivalente ao diário de bordo da Enterprise. Mesmo que a nave sofra uma pane, as informações essenciais da missão não podem simplesmente evaporar no espaço.


Capítulo VI — Commit e Backout: quando o MQ entra na transação

O MQ também pode participar de unidades de trabalho.

Imagine que um programa COBOL:

  1. leia uma mensagem da fila;

  2. atualize uma tabela Db2;

  3. grave um registro;

  4. confirme a transação.

Se tudo funcionar:

COMMIT

A mensagem é definitivamente removida da fila e a atualização do banco é confirmada.

Se ocorrer um erro:

ROLLBACK ou BACKOUT

A atualização é desfeita e a mensagem pode retornar à fila para nova tentativa.

Esse comportamento é fundamental para evitar o pior cenário de integração:

Mensagem removida
+
Banco não atualizado
=
Transação perdida

Quando MQ e Db2 estão coordenados corretamente, o processamento pode obedecer ao princípio:

Ou tudo acontece, ou nada acontece.

É a famosa atomicidade transacional.

Nenhum oficial da Frota gostaria de registrar “torpedo disparado” sem que o torpedo tivesse realmente sido lançado — ou lançar o torpedo sem atualizar o diário da batalha.


Capítulo VII — Canais: as rotas interestelares do MQ

Quando dois Queue Managers precisam conversar, normalmente utilizam canais.

Exemplo:

QMZOS01 ───────────────► QMLNX01
        canal emissor

Em uma configuração distribuída clássica, podemos encontrar:

  • Sender Channel;

  • Receiver Channel;

  • Server Connection Channel;

  • Client Connection Channel;

  • Cluster Sender;

  • Cluster Receiver.

Um Sender Channel envia mensagens.

Um Receiver Channel recebe.

Um Server Connection Channel permite que uma aplicação cliente se conecte remotamente a um Queue Manager.

Para o Programador COBOL iniciante, a distinção essencial é:

Aplicação local
    usa o Queue Manager próximo

Queue Manager
    usa canais para conversar com outro Queue Manager

A aplicação não precisa conhecer todos os detalhes da rota.

Ela coloca a mensagem em uma fila. O MQ resolve o transporte segundo a configuração existente.

É como pedir ao computador da nave:

“Entregue esta mensagem à Base Estelar 12.”

O tripulante não precisa calcular cada dobra espacial, cada repetidor subespacial ou cada salto intermediário.


Capítulo VIII — Filas locais, remotas e de transmissão

Uma fila local armazena mensagens dentro do Queue Manager.

FILA.LOCAL.PEDIDOS

Uma definição de fila remota representa um destino existente em outro Queue Manager.

FILA.REMOTA.FATURAMENTO

Uma fila de transmissão armazena temporariamente mensagens destinadas a outro Queue Manager.

Fluxo simplificado:

Aplicação
   |
   v
Definição remota
   |
   v
Fila de transmissão
   |
   v
Sender Channel
   |
   v
Receiver Channel
   |
   v
Fila local no destino

Você pode imaginar a fila remota como o endereço da Base Estelar, enquanto a fila de transmissão funciona como o compartimento de carga onde as mensagens aguardam a próxima nave de transporte.


Capítulo IX — Final dos anos 1990: agrupamento e clustering

À medida que o MQ crescia, surgiram necessidades mais sofisticadas.

Uma delas era transportar conjuntos de mensagens relacionadas.

Imagine um pedido composto por:

  • cabeçalho;

  • cliente;

  • dez itens;

  • pagamento;

  • entrega.

Essas partes podem ser enviadas como mensagens separadas, mas precisam ser processadas como um grupo lógico.

Outro avanço importante foi o clustering.

Sem cluster:

Aplicação
   |
   v
Queue Manager único

Se esse Queue Manager sofrer uma interrupção, o caminho pode ficar indisponível.

Com um cluster:

                  ┌──► QM01
Aplicação ────────┼──► QM02
                  └──► QM03

O cluster oferece mecanismos para distribuir mensagens entre instâncias de filas disponíveis em diferentes Queue Managers.

Mas atenção, Padawan: cluster não é sinônimo automático de alta disponibilidade completa.

Ele ajuda na conectividade e distribuição de carga, mas o projeto ainda precisa considerar:

  • disponibilidade do Queue Manager;

  • armazenamento;

  • aplicações consumidoras;

  • rede;

  • recuperação de desastre;

  • persistência;

  • afinidade de mensagens;

  • monitoramento.

Essa é uma armadilha frequente.

Cluster não é magia Jedi. É arquitetura.


Capítulo X — 2002: a era WebSphere MQ

Em 2002, o produto passou a integrar a família WebSphere e recebeu o nome WebSphere MQ. A mudança refletia o período em que arquiteturas Java, J2EE, serviços Web e integração corporativa ganhavam enorme importância. (Wikipedia)

Era a era da SOA: Service-Oriented Architecture.

A empresa deixava de pensar apenas em programas isolados e passava a organizar funcionalidades como serviços.

Exemplo:

Serviço de Cliente
        |
        v
       MQ
        |
        v
Serviço de Crédito
        |
        v
       MQ
        |
        v
Serviço de Faturamento

O MQ tornou-se um elemento essencial para conectar serviços sem criar dependências rígidas.

Muito antes de expressões como “microsserviços” e “cloud native” dominarem as conferências, o MQ já praticava princípios que permanecem modernos:

  • desacoplamento;

  • comunicação assíncrona;

  • contratos de mensagem;

  • tolerância a falhas;

  • processamento distribuído;

  • segurança;

  • rastreabilidade.

Curiosidade: vários conceitos vendidos hoje como novidades absolutas já frequentavam os corredores do mainframe quando muito desenvolvedor moderno ainda usava conexão discada.


Capítulo XI — Publish/Subscribe: uma mensagem para muitos ouvintes

No modelo tradicional de fila, uma mensagem é normalmente consumida por um consumidor.

Produtor ───► Fila ───► Consumidor

No modelo Publish/Subscribe, o produtor publica uma informação em um tópico.

Vários assinantes podem recebê-la.

                         ┌──► Assinante A
Publicador ──► Tópico ───┼──► Assinante B
                         └──► Assinante C

Exemplo: uma transação de venda foi concluída.

O evento pode interessar a:

  • estoque;

  • faturamento;

  • logística;

  • análise de fraude;

  • programa de fidelidade;

  • data lake;

  • sistema de notificações.

Em vez de o sistema de vendas chamar seis aplicações diferentes, ele publica um evento:

VENDA.CONCLUIDA

Cada assinante recebe e processa a informação segundo sua finalidade.

Essa arquitetura reduz acoplamento e facilita a inclusão de novos consumidores.

A ponte da Enterprise anuncia:

“Alerta vermelho!”

Segurança, Engenharia, Enfermaria e Comando recebem o mesmo evento, mas cada departamento toma uma ação diferente.

Isso é Publish/Subscribe explicado pela Frota Estelar.


Capítulo XII — WebSphere MQ 7 e a abertura para JMS, MQTT e alta disponibilidade

A evolução do MQ acompanhou Java, dispositivos conectados e arquiteturas distribuídas.

JMS facilitou a integração com aplicações Java.

MQTT tornou-se especialmente importante em cenários de dispositivos leves e telemetria.

Imagine:

Sensor industrial
       |
       | MQTT
       v
Gateway ou infraestrutura de mensageria
       |
       v
IBM MQ
       |
       v
Sistema corporativo

Um sensor não precisa executar um cliente pesado. Ele pode publicar dados usando um protocolo enxuto, enquanto a infraestrutura corporativa recebe, converte, distribui e processa as informações.

O MQ começou como um mensageiro entre sistemas corporativos e evoluiu para participar de ecossistemas com:

  • dispositivos;

  • aplicações móveis;

  • sistemas web;

  • Java;

  • integração empresarial;

  • serviços externos.


Capítulo XIII — Segurança: não basta entregar, é preciso proteger

Em mensageria corporativa, temos pelo menos cinco perguntas fundamentais:

  1. Quem está se conectando?

  2. A pessoa ou aplicação está autenticada?

  3. Ela tem autorização para acessar a fila?

  4. A comunicação está criptografada?

  5. A mensagem pode ser auditada?

A segurança pode envolver:

  • TLS;

  • certificados;

  • autenticação;

  • autorização;

  • CHLAUTH;

  • CONNAUTH;

  • RACF no z/OS;

  • proteção de filas;

  • identidades de usuários;

  • políticas de Advanced Message Security;

  • registros e monitoramento.

No z/OS, o RACF pode controlar o acesso aos recursos do MQ.

Exemplo conceitual:

Usuário APPPED01
pode PUT em FILA.PEDIDOS

Usuário APPFAT01
pode GET em FILA.PEDIDOS

Usuário DESCONHECIDO
não pode acessar

Uma boa prática é seguir o princípio do menor privilégio.

O produtor não precisa necessariamente retirar mensagens.

O consumidor não precisa necessariamente colocar mensagens.

O operador não precisa ler o conteúdo comercial.

O auditor não precisa alterar configurações.

Cada tripulante deve possuir apenas os acessos necessários para a própria missão.

Dar autoridade total a todas as aplicações seria como distribuir códigos de autodestruição da Enterprise para qualquer cadete recém-chegado.


Capítulo XIV — Advanced Message Security e Managed File Transfer

O Advanced Message Security permite aplicar proteção à própria mensagem.

Isso é diferente de proteger somente o canal.

TLS protege a comunicação durante o transporte:

Aplicação A ===== canal protegido ===== MQ

A proteção no nível da mensagem pode manter o conteúdo protegido mesmo enquanto ele passa por intermediários.

É a diferença entre:

  • transportar uma carta dentro de um túnel seguro;

  • colocar a carta em um envelope que somente o destinatário pode abrir.

O Managed File Transfer utiliza a infraestrutura e os controles de MQ para transferências de arquivos gerenciadas.

Isso pode oferecer:

  • auditoria;

  • rastreabilidade;

  • automação;

  • segurança;

  • confirmação;

  • integração com processos;

  • tratamento de falhas.

Em muitas empresas, mover um arquivo não significa simplesmente executar FTP. É preciso saber:

  • quem enviou;

  • quando enviou;

  • qual era o tamanho;

  • se chegou;

  • se foi processado;

  • se houve erro;

  • se ocorreu nova tentativa.

O MFT transforma a transferência em uma operação governada.


Capítulo XV — 2014: nasce oficialmente o nome IBM MQ

Em 2014, o produto deixou a identidade WebSphere e passou a chamar-se IBM MQ. (Wikipedia)

A mudança simbolizou sua independência e amplitude.

O MQ já não era apenas uma peça de um conjunto de ferramentas web. Era uma plataforma de mensageria com identidade própria, presente em múltiplos sistemas operacionais e arquiteturas.

Nessa fase ganharam destaque recursos como:

  • interfaces administrativas modernas;

  • console web;

  • conectividade aprimorada;

  • appliances;

  • maior integração operacional.

O IBM MQ Appliance ofereceu uma forma integrada de executar mensageria em equipamento dedicado, reduzindo parte do trabalho de montagem da pilha de infraestrutura.

Para algumas organizações, isso significava receber uma espécie de “nave pronta para voar”, em vez de montar motor, casco, computador, escudos e sistema de dobra separadamente.


Capítulo XVI — LTS e Continuous Delivery

A partir da família 9, compreender os modelos de entrega tornou-se essencial.

LTS — Long Term Support

Destinado a organizações que priorizam estabilidade e permanência em uma linha de manutenção por um período prolongado.

A IBM define o LTS como o nível recomendado para ambientes que exigem máxima estabilidade. Atualizações LTS recebem correções de defeitos e segurança, enquanto novas capacidades chegam por novas bases LTS ou são incorporadas a partir da evolução do fluxo CD. (IBM)

CD — Continuous Delivery

Entrega funcionalidades com maior frequência.

Exemplos de numeração:

9.4.0 = base LTS
9.4.1 = CD
9.4.2 = CD
9.4.3 = CD

A IBM explica que versões LTS utilizam normalmente o nível de modificação zero, enquanto as entregas CD utilizam níveis subsequentes. (IBM)

A escolha depende da missão.

Um banco com processos rígidos pode preferir LTS.

Um laboratório, uma equipe de inovação ou um ambiente que necessita rapidamente de determinada capacidade pode adotar CD.

Não existe “melhor” universal.

Existe o modelo adequado ao risco, governança e velocidade da organização.


Capítulo XVII — IBM MQ 9.1, 9.2, 9.3 e 9.4: o MQ entra definitivamente na era híbrida

A família 9 consolidou o MQ dentro do novo universo tecnológico:

  • containers;

  • Docker;

  • Kubernetes;

  • OpenShift;

  • REST;

  • JSON;

  • autenticação moderna;

  • observabilidade;

  • automação;

  • integração híbrida.

O IBM MQ 9.4 LTS tornou-se disponível em junho de 2024. Entre suas capacidades estavam melhorias administrativas, ampliação de escalabilidade no channel initiator do z/OS, aprimoramentos nos registros SMF, evolução do console e mensageria remota por REST API. (IBM)

Observe o que isso representa.

Um produto nascido em 1993 consegue operar em um ambiente com:

COBOL + CICS + Db2 + z/OS
              |
              v
             MQ
              |
              v
Java + Spring Boot + OpenShift + Kubernetes

Não foi necessário jogar fora o mainframe.

Não foi necessário reescrever todos os programas COBOL.

Foi criada uma ponte.

Essa é uma das maiores lições do MQ: modernização não significa necessariamente substituição.

Muitas vezes, modernizar significa expor, integrar, proteger, automatizar e observar melhor aquilo que já funciona.


Capítulo XVIII — 2026: IBM MQ 10.0 entra em cena

O IBM MQ 10.0 LTS foi anunciado em abril de 2026 e disponibilizado em junho de 2026, sucedendo o IBM MQ 9.4.0 LTS e a última entrega CD da linha 9.4, a versão 9.4.5. (IBM)

A versão reforça uma mensagem importante:

O MQ não está sendo mantido apenas por compatibilidade. Ele continua evoluindo para enfrentar novos problemas corporativos.

Entre os avanços documentados para o MQ 10.0 aparecem recursos ligados a:

  • conectividade simplificada com a nuvem;

  • melhorias de console;

  • recuperação de site alternativo;

  • monitoramento de Native HA;

  • tracing integrado com OpenTelemetry;

  • aprimoramentos administrativos;

  • segurança;

  • containers;

  • resiliência. (IBM)

No campo da segurança, o MQ 10.0 também trouxe suporte a mecanismos de troca de chaves quantum-safe baseados em FIPS 203 e ML-KEM para canais TLS 1.3 em plataformas compatíveis. A finalidade é ajudar a proteger comunicações contra o cenário conhecido como “coletar agora e descriptografar depois”. (IBM)

Aqui está o grande salto histórico:

1993: transportar mensagens entre aplicações

2026: transportar mensagens com integração híbrida,
observabilidade, automação, segurança moderna,
containers e preparação criptográfica para o futuro

A missão original permaneceu.

A nave ganhou novos motores.


Capítulo XIX — Exemplo completo: um pagamento processado por COBOL

Considere um aplicativo de pagamento.

O cliente realiza uma transferência.

Etapa 1 — Aplicativo envia a solicitação

{
  "contaOrigem": "12345",
  "contaDestino": "98765",
  "valor": 150.00
}

Etapa 2 — API valida o formato

A API verifica token, campos obrigatórios e limites básicos.

Etapa 3 — API publica no MQ

FILA.PAGAMENTOS.ENTRADA

Etapa 4 — Programa COBOL consome

Um programa CICS ou batch executa MQGET.

Etapa 5 — Regra de negócio é aplicada

O programa verifica:

  • saldo;

  • situação da conta;

  • limite;

  • bloqueios;

  • antifraude;

  • dados cadastrais.

Etapa 6 — Db2 é atualizado

UPDATE CONTA
SET SALDO = SALDO - :VALOR
WHERE NUM_CONTA = :ORIGEM

Etapa 7 — Transação é confirmada

Se tudo funcionar:

COMMIT

Etapa 8 — Resposta é publicada

FILA.PAGAMENTOS.RESPOSTA

Etapa 9 — Aplicativo recebe a confirmação

{
  "status": "APROVADO",
  "codigo": "TX458902"
}

Agora suponha que o programa COBOL esteja indisponível durante três minutos.

A API não precisa perder o pagamento.

A mensagem pode permanecer na fila até que o consumidor retorne.

Esse é o verdadeiro poder do desacoplamento temporal.


Capítulo XX — Dead-letter queue: o cemitério que precisa ser investigado

Quando uma mensagem não consegue chegar ao destino, ela pode ser encaminhada para a Dead-Letter Queue.

Mas cuidado com o nome.

Ela não deve ser tratada como um lixão.

Uma mensagem na DLQ representa uma anomalia:

  • destino inexistente;

  • fila cheia;

  • erro de roteamento;

  • configuração incorreta;

  • autorização;

  • canal indisponível;

  • definição remota errada.

Uma DLQ ignorada é como uma cápsula de fuga à deriva. Pode parecer apenas um ponto luminoso no radar, mas talvez contenha informações vitais.

Boas práticas:

  • monitore a DLQ;

  • investigue o motivo;

  • corrija a causa;

  • reencaminhe quando apropriado;

  • mantenha trilha de auditoria;

  • evite simplesmente apagar.


Capítulo XXI — Backout Queue: a mensagem Klingon indestrutível

Imagine que uma mensagem defeituosa seja lida por um programa.

O programa falha.

A transação executa rollback.

A mensagem retorna à fila.

O programa lê novamente.

Falha novamente.

Isso pode criar um loop:

GET
erro
ROLLBACK
GET
erro
ROLLBACK
GET
erro
ROLLBACK

Para evitar esse ciclo, é possível utilizar mecanismos de backout.

Após determinada quantidade de tentativas, a mensagem pode ser movida para uma fila de exceção:

FILA.PAGAMENTOS.BACKOUT

Essa mensagem é frequentemente chamada de poison message.

Ela não é literalmente venenosa, mas provoca falha repetitiva no consumidor.

Dica de campo: sempre trate o contador de backout e projete uma estratégia para mensagens problemáticas. Não deixe o programa lutar eternamente contra o mesmo Klingon em um loop temporal.


Capítulo XXII — Passo a passo para o COBOL Padawan começar a estudar

Passo 1 — Domine os conceitos

Antes de instalar qualquer coisa, compreenda:

  • mensagem;

  • fila;

  • Queue Manager;

  • canal;

  • persistência;

  • commit;

  • rollback;

  • produtor;

  • consumidor;

  • cluster;

  • Publish/Subscribe.

Passo 2 — Desenhe um fluxo simples

PRODUTOR → FILA → CONSUMIDOR

Depois acrescente:

PRODUTOR → QM1 → CANAL → QM2 → CONSUMIDOR

Passo 3 — Conheça as chamadas MQI

Estude inicialmente:

MQCONN
MQOPEN
MQPUT
MQGET
MQCLOSE
MQDISC

Depois avance para:

MQBEGIN
MQCMIT
MQBACK
MQINQ
MQSET

Passo 4 — Aprenda MQSC

MQSC é a linguagem administrativa usada para definir e controlar objetos.

Exemplos conceituais:

DEFINE QLOCAL(FILA.TESTE)
DISPLAY QLOCAL(FILA.TESTE)
ALTER QLOCAL(FILA.TESTE)
DELETE QLOCAL(FILA.TESTE)

Passo 5 — Crie um laboratório produtor/consumidor

O produtor envia:

USS ENTERPRISE NCC-1701

O consumidor lê e exibe.

Esse será nosso primeiro Easter egg.

Depois envie:

RESISTANCE IS FUTILE

Caso a mensagem pare na Dead-Letter Queue, saberemos que os Borg assumiram o canal.

Passo 6 — Teste persistência

Envie uma mensagem persistente, interrompa o Queue Manager de forma controlada e confirme a recuperação após a reinicialização.

Passo 7 — Teste transação

Faça o consumidor:

  1. obter a mensagem;

  2. provocar um erro;

  3. executar rollback;

  4. verificar o retorno da mensagem.

Passo 8 — Estude segurança

Crie usuários com permissões distintas.

Teste quem pode:

  • conectar;

  • colocar;

  • retirar;

  • consultar;

  • administrar.

Passo 9 — Adicione um segundo Queue Manager

Configure uma rota entre dois ambientes.

Observe:

  • fila remota;

  • transmission queue;

  • sender channel;

  • receiver channel.

Passo 10 — Monitore

Acompanhe:

  • profundidade da fila;

  • mensagens antigas;

  • canais parados;

  • erros;

  • DLQ;

  • desempenho;

  • logs;

  • consumo;

  • tentativas de autenticação.


Capítulo XXIII — Dez dicas do engenheiro-chefe

1. Não use uma fila como banco de dados

Fila é mecanismo de transporte e desacoplamento, não repositório permanente de consulta histórica.

2. Defina contratos de mensagem

Documente:

  • formato;

  • campos;

  • versão;

  • codificação;

  • tamanho;

  • obrigatoriedade;

  • tratamento de erro.

3. Pense em idempotência

O consumidor deve, quando possível, tolerar o recebimento repetido de uma mensagem sem executar duas vezes um efeito indevido.

4. Use identificadores de correlação

Eles ajudam a relacionar uma resposta à solicitação original.

5. Monitore idade, não apenas quantidade

Uma fila com dez mensagens antigas pode ser mais grave que uma fila com mil mensagens processadas rapidamente.

6. Planeje mensagens inválidas

Toda arquitetura precisa responder:

O que faremos quando o conteúdo não puder ser processado?

7. Proteja os canais

Não exponha canais administrativos ou permissões excessivas.

8. Evite mensagens gigantes sem necessidade

Mensagens muito grandes aumentam consumo de rede, armazenamento, log e tempo de processamento.

9. Conheça a semântica da entrega

“Coloquei na fila” não significa necessariamente “o negócio foi concluído”.

Significa que a responsabilidade foi transferida para outra etapa.

10. Documente o caminho completo

Não basta saber o nome da fila.

Registre:

  • produtor;

  • consumidor;

  • Queue Manager;

  • canais;

  • regras de segurança;

  • formato;

  • retentativas;

  • DLQ;

  • backout;

  • alertas;

  • responsáveis.


Capítulo XXIV — MQ versus chamadas REST

REST e MQ não são inimigos.

REST funciona muito bem quando:

  • a resposta imediata é necessária;

  • o consumidor está disponível;

  • o fluxo é simples;

  • a interação é síncrona.

MQ funciona muito bem quando:

  • o consumidor pode estar indisponível;

  • a operação precisa ser armazenada;

  • há grande volume;

  • os sistemas possuem velocidades diferentes;

  • retentativa e recuperação são necessárias;

  • o processamento pode ser assíncrono.

Uma arquitetura real pode usar ambos:

Aplicativo
   |
   | REST
   v
API
   |
   | MQ
   v
COBOL/CICS

REST recebe a solicitação.

MQ protege e desacopla o processamento.

COBOL executa a regra crítica.

É uma aliança entre planetas, não uma guerra entre tecnologias.


Capítulo XXV — O maior ensinamento da linha do tempo

O IBM MQ atravessou:

  • cliente-servidor;

  • Internet;

  • Java;

  • SOA;

  • Web Services;

  • integração empresarial;

  • cloud;

  • containers;

  • Kubernetes;

  • OpenShift;

  • observabilidade;

  • segurança pós-quântica.

E, apesar de toda essa evolução, sua ideia central continua reconhecível:

Uma aplicação produz uma mensagem.
Outra aplicação consome.
O MQ garante a travessia.

Essa permanência ensina algo precioso ao Programador COBOL Padawan.

Uma tecnologia não permanece relevante porque recusa mudanças.

Ela permanece relevante porque preserva seus princípios fundamentais enquanto adapta sua implementação ao novo mundo.

O COBOL também sobreviveu seguindo lógica semelhante.

O z/OS também.

O Db2 também.

O CICS também.

Eles não ficaram congelados em uma fotografia de 1970. Evoluíram, ganharam APIs, segurança moderna, integração, automação e novos modelos operacionais.

O IBM MQ tornou-se uma ponte entre gerações.

De um lado:

COBOL
CICS
IMS
Db2
z/OS

Do outro:

Java
Python
REST
JSON
Containers
Kubernetes
Cloud
IA

No centro:

IBM MQ

Conclusão — A mensagem precisa chegar

No final de nossa missão, percebemos que IBM MQ não é apenas uma ferramenta para criar filas.

Ele é uma filosofia de arquitetura.

Uma filosofia baseada em:

  • desacoplamento;

  • resiliência;

  • segurança;

  • persistência;

  • transações;

  • integração;

  • confiabilidade.

Para o Programador COBOL iniciante, aprender MQ é descobrir como o mainframe conversa com o restante da galáxia digital.

Seu programa COBOL não precisa compreender cada detalhe de uma aplicação móvel, de um container ou de uma API em nuvem.

Ele precisa conhecer o contrato da mensagem.

Precisa saber onde recebê-la.

Precisa processá-la corretamente.

Precisa confirmar ou desfazer a transação.

O restante fica sob responsabilidade da infraestrutura de mensageria.

Talvez essa seja a verdadeira genialidade do MQ: permitir que sistemas de épocas, linguagens e plataformas diferentes cooperem sem exigir que todos se transformem na mesma coisa.

Na Frota Estelar, vulcanos, humanos, andorianos, klingons e inúmeras espécies trabalham lado a lado. Cada uma mantém sua identidade, mas utiliza protocolos comuns para colaborar.

No ambiente corporativo, COBOL, Java, Python, Linux, z/OS, containers e APIs fazem exatamente isso.

E o IBM MQ permanece no meio da ponte de comando, silencioso, transportando milhões de mensagens enquanto quase ninguém percebe.

Até o dia em que ele para.

Nesse instante, todos descobrem que o mensageiro discreto era, na verdade, um dos sistemas mais importantes da nave.

Vida longa e próspera às filas.

E lembre-se do código secreto escondido no log da missão:

MSGID: NCC1701
CORRELID: BELLACOSA
REASON: 00000000
STATUS: MESSAGE DELIVERED

A transmissão foi concluída. ☕🖖

quinta-feira, 19 de março de 2026

🚀 Seu cérebro COBOL está pronto para Python? O guia que acelera a migração em horas, não anos

 

Bellacosa Mainframe apresenta Python para Engenheiros e Analistas de Mainframe

🚀 Seu cérebro COBOL está pronto para Python? O guia que acelera a migração em horas, não anos

Python tornou-se uma linguagem estratégica para engenheiros de mainframe que desejam expandir suas habilidades para automação, integração moderna, Data Engineering e Inteligência Artificial. 

Para profissionais acostumados com COBOL, JCL e DB2, Python oferece um modelo mental mais simples e produtivo, substituindo estruturas como WORKING-STORAGE por variáveis dinâmicas, PERFORM por loops e FILE SECTION por manipulação direta de arquivos. 

Com bibliotecas poderosas e sintaxe clara, é possível automatizar rotinas operacionais, processar logs, integrar sistemas legados a APIs REST, consumir serviços web e construir pipelines de dados com muito menos código. 

Python também facilita DevOps, testes de batch, RPA corporativo e modernização de aplicações críticas. Seu uso crescente em nuvem, analytics e machine learning torna essa linguagem uma ponte natural entre o ambiente z/OS e o ecossistema digital atual. 

Aprender Python é, portanto, um passo essencial para mainframe engineers que desejam permanecer relevantes na transformação tecnológica.

🐍🔥 Cheatsheet Python para Mainframe Engineers

🧠 Mental Model — COBOL → Python

Conceito MainframeEquivalente Python
ProgramScript / Module
WORKING-STORAGEVariáveis
PIC clausesTipagem dinâmica
PERFORM UNTILwhile
PERFORM VARYINGfor
COPYBOOKModule / Class
FILE SECTIONFile handling
DB2 cursorIteração
JCL orchestrationScripts + Scheduler

📦 Variáveis (sem DATA DIVISION 😎)

COBOL

01 WS-NUM PIC 9(4) VALUE 100.

Python

ws_num = 100

✔ Sem declaração
✔ Sem tamanho fixo
✔ Tipagem dinâmica


📚 Estruturas de Dados — “Working Storage Turbo”

🔹 List → Tabelas OCCURS

clientes = ["Ana", "João", "Maria"]
clientes.append("Carlos")

👉 Similar a:

OCCURS n TIMES

🔹 Dictionary → Registro com campos nomeados

cliente = {
"nome": "Ana",
"saldo": 1500
}

👉 Mistura de:

✔ Registro
✔ Índice por chave
✔ Estrutura dinâmica


🔹 Tuple → Registro imutável

coordenada = (10, 20)

👉 Ideal quando dados não devem mudar.


🔹 Set → Lista sem duplicatas

codigos = {101, 102, 102, 103}

Resultado:

{101, 102, 103}

👉 Excelente para deduplicação de dados.


🔎 Indexação

nome = "BELLACOSA"

nome[0] # B
nome[-1] # A

👉 Python começa em ZERO (como C, não como COBOL).


⚖️ Condições (IF sem THEN/END-IF)

saldo = 100

if saldo > 0:
print("Positivo")
else:
print("Negativo")

🔁 Loops

🔹 For (PERFORM VARYING)

for i in range(5):
print(i)

🔹 For em coleção

for cliente in clientes:
print(cliente)

👉 Cursor implícito.


🔹 Enumerate (índice + valor)

for i, nome in enumerate(clientes):
print(i, nome)

🔹 While (PERFORM UNTIL)

x = 0

while x < 5:
print(x)
x += 1

🧩 Funções (Subprogramas leves)

def calcular_taxa(valor):
return valor * 0.05

Chamada:

taxa = calcular_taxa(1000)

📏 Built-ins que substituem muito código COBOL

len(lista) # tamanho
sum(lista) # soma
max(lista)
min(lista)
sorted(lista)

⚠️ Tratamento de Erros (sem Abend 😎)

COBOL

ON EXCEPTION

Python

try:
x = int("abc")
except ValueError:
print("Erro de conversão")

📂 Arquivos (QSAM moderno)

Leitura

with open("dados.txt", "r") as f:
for linha in f:
print(linha)

Escrita

with open("saida.txt", "w") as f:
f.write("Hello Mainframe")

👉 with garante fechamento automático.


🧱 Classes (Estruturas + Comportamento)

class Conta:
def __init__(self, saldo):
self.saldo = saldo

def depositar(self, valor):
self.saldo += valor

Uso:

c = Conta(1000)
c.depositar(500)

🔍 Tipos e Debug

type(x)

🚀 Automação — O Superpoder

Executar comandos do sistema

import os

os.system("dir")

Processar arquivos em lote

import glob

for arquivo in glob.glob("*.txt"):
print(arquivo)

🌐 Integração moderna

Consumir API

import requests

r = requests.get("https://api.github.com")
print(r.status_code)

👉 Equivalente moderno de MQ + Web Services.


🧠 Padrões mentais úteis

Python é:

✔ Scriptável
✔ Interativo
✔ Orientado a objetos
✔ Ideal para automação
✔ Excelente para integração


💥 Onde Python brilha para Mainframe Engineers

🔥 Automação operacional
🔥 DevOps e pipelines
🔥 Testes de batch
🔥 Processamento de logs
🔥 APIs REST para legado
🔥 Data Engineering
🔥 Machine Learning
🔥 RPA e scripting corporativo


☕ Frase estilo War Room

👉 COBOL mantém o mundo funcionando.
Python automatiza o mundo que muda.

domingo, 15 de março de 2026

Como um Aplicativo Moderno Conversa com um Mainframe IBM Z? Do Terminal Verde ao Smartphone.

 

Bellacosa Mainframe como um aplicativo moderno conversa com um mainframe ibm z

☕ Um Café no Bellacosa Mainframe

Como um Aplicativo Moderno Conversa com um Mainframe IBM Z?

Do Terminal Verde ao Smartphone.

O Mainframe Mudou Menos do que Você Imagina. O Mundo ao Redor Mudou Muito.

Existe uma pergunta que acompanha praticamente todo desenvolvedor que chega ao universo IBM Z:

"Se o mainframe é tão antigo, como um aplicativo Android consegue conversar com ele?"

Ou então:

"Como um site feito em HTML, CSS e JavaScript consegue consultar o saldo da minha conta que está em um programa COBOL escrito há trinta anos?"

A resposta é uma das histórias mais fascinantes da engenharia de software.

Porque, ao contrário do que muita gente imagina, o COBOL nunca aprendeu HTML.

O CICS nunca aprendeu JavaScript.

O DB2 nunca começou a falar React.

Quem evoluiu foi toda a infraestrutura em volta deles.

E essa talvez seja a maior lição que o IBM Z ensina.

Os sistemas realmente importantes não são reescritos toda vez que aparece uma tecnologia nova.

Eles aprendem novas formas de conversar.


Primeiro precisamos esquecer uma ideia errada.

Quando você abre um aplicativo do banco no Android, provavelmente imagina algo parecido com isto:

Android
    ↓
COBOL

Não.

Quase nunca.

Na realidade existem diversas camadas entre eles.

Hoje uma simples consulta de saldo pode atravessar meia dúzia de tecnologias antes de chegar ao programa COBOL.

Algo muito mais parecido com isto.

Android

↓

Internet

↓

API Gateway

↓

Servidor Java

↓

Middleware

↓

CICS

↓

Programa COBOL

↓

DB2

E cada uma dessas camadas existe por um motivo.

Nenhuma delas apareceu por acaso.


Bellacosa Mainframe fluxo teorico em 1980

Vamos voltar quarenta anos.

Imagine um banco em 1985.

Não existia internet.

Não existia smartphone.

Não existia navegador.

O usuário estava diante de um terminal 3270.

Usuário

↓

Terminal IBM 3270

↓

Controladora

↓

Mainframe

↓

CICS

↓

COBOL

O terminal era extremamente simples.

Ele praticamente desenhava caracteres na tela.

Nada de janelas.

Nada de mouse.

Nada de ícones.

Nada de JavaScript.

O CICS enviava uma tela.

O usuário digitava.

A tela inteira voltava.

O COBOL processava.

Outra tela era enviada.

Era um diálogo baseado em telas.

Hoje chamamos isso de arquitetura orientada a transações.

Na época era simplesmente computação.


Bellacosa Mainframe e o fluxo moderno 

Como funcionava o login?

O operador digitava:

Usuário

Senha

A tela era enviada inteira para o CICS.

O CICS chamava um programa COBOL.

O COBOL verificava:

  • usuário

  • senha

  • permissões

Depois consultava RACF.

Ou outro sistema de segurança.

Se estivesse tudo correto...

Outra tela aparecia.

Observe uma coisa interessante.

Mesmo naquela época já existia autenticação centralizada.

Já existia controle de acesso.

Já existia auditoria.

Muito antes da internet existir.


Bellacosa Mainframe e o fluxo teorico em 1990

Então chegou a arquitetura Cliente-Servidor.

Década de 90.

Agora surgiu o Windows.

Visual Basic.

PowerBuilder.

Delphi.

C++.

Os usuários queriam janelas bonitas.

Botões.

Menus.

Mouse.

Mas...

O COBOL continuava funcionando perfeitamente.

Então nasceu uma ideia simples.

Criar uma camada intermediária.

Windows

↓

Servidor

↓

CICS

↓

COBOL

O Windows deixou de conversar diretamente com o CICS.

Agora existia um servidor traduzindo tudo.

Era o nascimento do middleware moderno.



Depois chegou a Internet.

Essa mudou tudo.

Agora qualquer navegador precisava conversar com o banco.

Mas HTML não entende COBOL.

JavaScript não conhece CICS.

Foi necessário criar outra ponte.

Browser

↓

Apache

↓

Java

↓

CICS

↓

COBOL

Observe.

O COBOL continuava igual.

Quem mudou foi o tradutor.


Bellacosa Mainframe e o fluxo teorico em 2000

O nascimento dos Application Servers

Na década de 2000 apareceram servidores como:

  • IBM WebSphere

  • JBoss

  • WebLogic

  • Tomcat

Agora um servlet Java recebia a requisição.

Esse servlet chamava:

  • CICS

  • MQ

  • IMS

  • DB2

O navegador nunca falava diretamente com o mainframe.

Ele conversava com Java.

Java conversava com o IBM Z.


E onde entra o MQ?

Imagine um restaurante.

Você faz um pedido.

A cozinha está ocupada.

O garçom não fica parado esperando.

Ele coloca o pedido na fila.

Depois entrega quando estiver pronto.

MQ faz exatamente isso.

Aplicação

↓

Fila

↓

MQ

↓

COBOL

É comunicação assíncrona.

Muito mais segura.

Muito mais confiável.

Se o programa estiver indisponível por alguns segundos...

A mensagem continua esperando.

Nada é perdido.


Depois vieram os Web Services.

Agora o mundo falava XML.

Surgiram SOAP.

WSDL.

XSD.

O fluxo ficou parecido com isto.

HTML

↓

SOAP

↓

Application Server

↓

CICS

↓

COBOL

O COBOL ainda não entendia XML.

Mas havia componentes convertendo XML em estruturas COBOL.

Era tradução.

Sempre tradução.


Bellacosa Mainframe e o fluxo teorico em 2010

REST mudou novamente o cenário.

Agora quase tudo conversa usando HTTP.

GET

POST

PUT

DELETE

E normalmente JSON.

{
    "conta":12345
}

O navegador envia JSON.

O COBOL continua trabalhando com COPYBOOK.

Alguém precisa converter.

Quem faz isso?

Hoje normalmente:

  • z/OS Connect

  • CICS Web Services

  • Java

  • API Gateway



O nascimento do z/OS Connect

Essa talvez tenha sido uma das maiores evoluções do IBM Z.

Agora o fluxo pode ser assim.

React

↓

REST

↓

JSON

↓

z/OS Connect

↓

CICS

↓

COBOL

O desenvolvedor React acredita que está falando com uma API qualquer.

Na realidade...

Existe um programa COBOL do outro lado.

Sem ele perceber.


Vamos acompanhar uma consulta de saldo.

Você toca no botão.

Consultar Saldo

O aplicativo cria um JSON.

{
    conta:1234
}

Esse JSON segue pela internet.

HTTPS.

TLS.

Chega ao API Gateway.

O Gateway verifica:

  • certificado

  • autenticação

  • limite

  • token

  • autorização

Se tudo estiver correto...

Encaminha ao z/OS Connect.


O que faz o z/OS Connect?

Ele transforma isto:

JSON

naquilo:

COPYBOOK COBOL

Por exemplo.

JSON.

{
 cliente:100
}

vira

01 CLIENTE.

   05 CODIGO PIC 9(5).

Nenhum COBOL precisou ser alterado.

Ele continua recebendo estruturas COBOL.

Como sempre recebeu.


Agora entra o CICS.

O CICS recebe a requisição.

Seleciona uma Task.

Reserva memória.

Cria o ambiente.

Chama o programa COBOL.

Tudo isso acontece em poucos milissegundos.


O COBOL faz exatamente o que fazia em 1992.

Consulta DB2.

Ou VSAM.

Ou IMS.

Calcula saldo.

Verifica limites.

Executa regras de negócio.

Nada mudou.

As regras continuam ali.

Testadas durante décadas.


O retorno começa.

O COBOL devolve uma estrutura.

01 SALDO.

   05 VALOR PIC S9(9)V99.

O CICS devolve ao z/OS Connect.

O z/OS Connect transforma.

COPYBOOK

↓

JSON

Agora temos.

{
   "saldo":2450.80
}

O aplicativo Android recebe.

Atualiza a tela.

O usuário acredita que tudo aconteceu diretamente.

Na verdade dezenas de componentes participaram.


E onde entra Java?

Em muitos lugares.

Pode existir:

Android

↓

REST

↓

Spring Boot

↓

MQ

↓

COBOL

Ou

Angular

↓

Spring

↓

CICS TG

↓

COBOL

Ou

React

↓

Java

↓

IMS

↓

DB2

Java normalmente funciona como uma camada de negócios moderna.


E Node.js?

Também.

React

↓

Node.js

↓

REST

↓

z/OS Connect

↓

COBOL

Nada impede.

O IBM Z conversa com praticamente qualquer linguagem moderna.


E Python?

Também.

Python pode consumir APIs REST normalmente.

Python

↓

HTTPS

↓

JSON

↓

API

↓

Mainframe

O Python não sabe que existe um COBOL atrás da API.

Nem precisa saber.


E C#?

Exatamente igual.

C#

↓

REST

↓

Gateway

↓

Mainframe

E Go?

Também.


Rust?

Também.


Kotlin?

Também.


Flutter?

Também.


React Native?

Também.


Bellacosa Mainframe e o fluxo teorico em 2020

O protocolo mudou.

O conceito permaneceu.

Essa talvez seja a maior descoberta para um Padawan.

Muitos acreditam que aprender IBM Z significa abandonar tudo que conhecem.

Na verdade...

Você continua trabalhando com exatamente os mesmos conceitos.

Existe uma requisição.

Existe uma resposta.

Existe autenticação.

Existe autorização.

Existe uma camada de negócio.

Existe persistência.

Existe tratamento de erro.

Existe auditoria.

Existe segurança.

Esses conceitos nunca mudaram.

Mudaram apenas os protocolos.


O login moderno

Hoje um login costuma seguir aproximadamente este caminho.

Usuário

↓

Aplicativo

↓

HTTPS

↓

API Gateway

↓

OAuth2

↓

OpenID Connect

↓

JWT

↓

Servidor

↓

Mainframe

Depois do login o aplicativo recebe um Token.

JWT

Nas próximas chamadas ele envia apenas o Token.

O Gateway valida.

Se estiver correto...

A requisição segue.

O COBOL nem precisa conhecer JWT.

Alguém já validou antes.


O que continua exatamente igual?

Muito mais do que você imagina.

Ainda existem:

  • transações

  • commits

  • rollback

  • controle de concorrência

  • integridade

  • logs

  • auditoria

  • segurança

  • alta disponibilidade

  • recuperação

  • controle de acesso

  • regras de negócio

Esses pilares continuam praticamente idênticos há décadas.


O que realmente mudou?

Mudou quase tudo ao redor.

Antes:

3270

Hoje:

Android
iPhone
React
Angular
Vue
Windows
Electron
Flutter

Antes:

SNA

Hoje:

TCP/IP
HTTPS
REST
gRPC

Antes:

Tela 3270

Hoje:

JSON

Antes:

Terminal

Hoje:

API

Antes:

Monolito fechado

Hoje:

Microserviços consumindo APIs

Antes:

Operador interno

Hoje:

Milhões de usuários simultâneos

Mas o coração permanece surpreendentemente parecido.


O segredo do IBM Z

Existe uma frase que gosto de repetir aos meus alunos.

O mundo moderno não substituiu o mainframe. Aprendeu a conversar com ele.

Quando você abre um aplicativo de banco no celular, dificilmente imagina que aquela animação elegante, construída em Kotlin, Swift ou Flutter, pode terminar em um programa COBOL executando dentro de um CICS no IBM Z. No entanto, é exatamente isso que acontece milhões de vezes por dia.

O desenvolvedor do aplicativo pensa em telas, componentes, animações e experiência do usuário. O desenvolvedor de APIs pensa em REST, JSON, OAuth e microsserviços. O arquiteto de integração pensa em API Gateway, mensageria, balanceamento e observabilidade. E, no centro desse ecossistema, o COBOL continua fazendo o que sempre fez com excelência: aplicar regras de negócio, proteger dados e garantir que uma transferência de dinheiro, uma compra com cartão ou o pagamento de um benefício aconteçam com precisão absoluta.

Essa é a verdadeira evolução do software. Não jogar fora décadas de conhecimento, mas construir novas camadas sobre uma base sólida.


A Última Xícara de Café

Padawan, quando alguém disser que "o aplicativo conversa diretamente com o banco", lembre-se desta jornada invisível.

Um simples toque na tela percorre redes, protocolos, gateways, autenticação, criptografia, APIs, conversores de JSON para COPYBOOK, gerenciadores de transações, filas de mensagens, programas COBOL e bancos de dados, antes de retornar como um número exibido em poucos milissegundos.

A tela mudou.

A linguagem mudou.

Os protocolos mudaram.

As ferramentas mudaram.

Mas a essência continua a mesma desde os primeiros dias da computação corporativa: receber uma solicitação, validar quem a fez, executar regras de negócio com segurança, acessar dados de forma íntegra e devolver uma resposta confiável.

É por isso que o IBM Z continua relevante. Não porque resiste ao novo, mas porque se adapta a ele sem abrir mão daquilo que realmente importa: confiabilidade, disponibilidade, segurança e consistência.

No fim das contas, Android, Windows, HTML, JavaScript, Java, Node.js, Python, Go ou Rust não competem com o mainframe. Eles são apenas novos idiomas para conversar com um dos computadores mais confiáveis já construídos.

E talvez essa seja a maior lição desta conversa: a tecnologia muda; a boa engenharia permanece.

 


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