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

Translate

Mostrar mensagens com a etiqueta Load Balancing. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Load Balancing. Mostrar todas as mensagens

quarta-feira, 26 de março de 2025

O Guia Definitivo para um Programador COBOL Padawan Entender Como os Grandes Bancos Distribuem Milhões de Mensagens sem que as Aplicações Precisem Saber Para Onde Estão Enviando

 

Bellacosa Mainframe e o ibm mq clustering sem misterios

☕ Um Café no Bellacosa Mainframe

IBM MQ Clustering sem Mistérios

O Guia Definitivo para um Programador COBOL Padawan Entender Como os Grandes Bancos Distribuem Milhões de Mensagens sem que as Aplicações Precisem Saber Para Onde Estão Enviando

Existe uma frase muito conhecida entre arquitetos de sistemas distribuídos:

"As melhores infraestruturas são aquelas que as aplicações nem percebem que existem."

Essa frase resume perfeitamente a filosofia do IBM MQ Clustering.

Quando um programador COBOL começa sua carreira no ambiente IBM Z, normalmente aprende primeiro sobre arquivos VSAM, Db2, CICS, JCL, IMS e, em algum momento, conhece o IBM MQ. Inicialmente, tudo parece simples: um programa faz um MQPUT, outro realiza um MQGET, e as mensagens seguem seu caminho. Porém, conforme a empresa cresce, surgem novas perguntas.

E se houver dezenas de Queue Managers?

E se um deles parar?

E se o volume de mensagens dobrar durante a Black Friday?

E se um datacenter inteiro ficar indisponível?

É exatamente para responder a essas perguntas que nasceu o IBM MQ Clustering, uma tecnologia extremamente sofisticada que, curiosamente, trabalha de forma quase invisível para quem desenvolve aplicações.

Hoje vamos abrir a caixa-preta dessa arquitetura e entender por que muitos dos conceitos considerados modernos na computação em nuvem já eram utilizados pelo IBM MQ muito antes de Kubernetes, Service Mesh ou API Gateways se tornarem populares.


A evolução natural dos grandes sistemas

Imagine um pequeno sistema bancário.

Existe apenas um Queue Manager.

COBOL
   │
 MQPUT
   │
 QM1
   │
 FILA

Tudo funciona perfeitamente.

Mas bancos nunca permanecem pequenos.

Novos produtos surgem.

PIX.

Cartões.

Investimentos.

Internet Banking.

Aplicativos móveis.

Open Finance.

Seguradoras.

Correspondentes bancários.

Agora centenas de aplicações precisam trocar mensagens.

Um único Queue Manager deixa de ser suficiente.


A primeira solução... e o primeiro problema

O caminho mais óbvio seria criar novos Queue Managers.

QM1
QM2
QM3
QM4
QM5

Até aqui parece simples.

O problema aparece quando cada aplicação precisa conhecer todos eles.

O código começa a ficar assim:

Se pagamento → QM2

Se cartão → QM3

Se empréstimo → QM4

Se PIX → QM5

Sempre que nasce um novo Queue Manager...

...centenas de aplicações precisam ser alteradas.

Isso é um pesadelo operacional.


A filosofia do IBM MQ

Os engenheiros da IBM fizeram uma pergunta brilhante.

"Por que obrigar a aplicação a conhecer toda a infraestrutura?"

E inverteram completamente o raciocínio.

Em vez da aplicação decidir para onde enviar...

...ela apenas entrega a mensagem ao Cluster.

Quem decide o destino é o próprio IBM MQ.

Esse desacoplamento é um dos pilares da engenharia de software moderna.


O Cluster não é um servidor

Aqui existe um dos maiores erros cometidos por iniciantes.

Muitos imaginam que um Cluster seja um computador enorme.

Não é.

O Cluster é apenas um grupo lógico de Queue Managers.

Imagine um banco presente em vários estados brasileiros.

São Paulo

QM1

------------

Rio

QM2

------------

Brasília

QM3

------------

Curitiba

QM4

Todos fazem parte do mesmo Cluster.

Podem executar:

  • Linux

  • AIX

  • IBM Z

  • Windows

  • Containers

Nada impede essa convivência.


O segredo está no conhecimento compartilhado

Cada Queue Manager continua sendo totalmente independente.

Ele possui:

  • logs próprios

  • recovery próprio

  • filas próprias

  • canais próprios

  • transações próprias

O Cluster não une fisicamente esses componentes.

Ele compartilha conhecimento.

É uma enorme diferença.


Os bibliotecários do Cluster

Imagine uma biblioteca nacional.

Existem milhares de livros.

Alguém precisa saber onde cada livro está.

No IBM MQ esse papel pertence aos Repositories.

São eles que mantêm o catálogo do Cluster.


Full Repository

O Full Repository conhece absolutamente tudo.

Ele sabe:

  • todos os Queue Managers

  • todas as filas de Cluster

  • todos os canais

  • atributos

  • prioridades

  • disponibilidade

É como um catálogo central.

Quando um novo Queue Manager entra no Cluster, ele registra suas informações no Full Repository.


Por que dois Full Repositories?

Essa pergunta aparece frequentemente em entrevistas técnicas.

A resposta é simples.

Nunca devemos criar um ponto único de falha.

Imagine um único catálogo.

Se ele desaparecer...

ninguém consegue registrar novos membros.

Por isso sempre existem pelo menos dois.

FR1

⇄

FR2

Os dois mantêm sincronização contínua.

Se um falhar...

o outro continua funcionando.

Essa redundância é um princípio clássico do IBM Z.


Partial Repository

Agora chegamos a uma das partes mais elegantes da arquitetura.

O Partial Repository não tenta conhecer o mundo inteiro.

Ele aprende apenas aquilo que realmente utiliza.

Imagine um funcionário do banco especializado apenas em financiamentos.

Ele não precisa decorar todas as regras de previdência privada.

Da mesma forma, um Partial Repository armazena somente as informações necessárias para executar seu trabalho.

Isso reduz consumo de memória, processamento e tráfego de rede.


Aprendizado sob demanda

Quando um Queue Manager precisa enviar uma mensagem para uma fila desconhecida, ele consulta um Full Repository.

O diálogo interno acontece mais ou menos assim.

PR

↓

"Quem possui esta fila?"

↓

FR

↓

"QM7"

↓

PR

↓

"Obrigado. Vou guardar essa informação."

Na próxima mensagem, ele já sabe o caminho.

É praticamente um cache inteligente.


O caminho percorrido pela mensagem

Para um programador COBOL, esse processo é fascinante porque praticamente nada muda no código.

A aplicação executa:

CALL 'MQPUT'

Ou utiliza a API correspondente.

A partir daí, começa uma sequência de decisões invisíveis.

Primeiro, o Queue Manager recebe a mensagem.

Depois verifica se a fila pertence ao Cluster.

Caso pertença, consulta suas informações locais.

Se necessário, conversa com um Full Repository.

Obtém todas as possíveis rotas.

Avalia disponibilidade.

Analisa balanceamento.

Seleciona o melhor destino.

Encaminha a mensagem.

A aplicação nunca participa dessas decisões.


O verdadeiro balanceamento de carga

Muitos acreditam que o IBM MQ distribui mensagens aleatoriamente.

Na realidade, ele considera diversos fatores.

Entre eles:

  • disponibilidade do Queue Manager

  • estado dos canais

  • pesos configurados

  • prioridade

  • ranking

  • afinidade

  • Cluster Workload Balancing

  • Cluster Workload Exit

Imagine três servidores.

QM2

QM3

QM4

Todos hospedam a mesma fila.

As mensagens podem ser distribuídas assim:

1 → QM2

2 → QM3

3 → QM4

4 → QM2

5 → QM3

6 → QM4

Nenhuma linha de código COBOL precisou ser alterada.


Alta Disponibilidade de verdade

Agora imagine que QM3 pare inesperadamente.

Em muitas arquiteturas antigas, seria necessário alterar configurações, reiniciar aplicações ou até modificar parâmetros em produção.

No IBM MQ Cluster, isso normalmente não acontece.

O middleware identifica que aquele Queue Manager está indisponível.

Automaticamente passa a enviar novas mensagens para os demais integrantes do Cluster.

Esse comportamento aumenta drasticamente a disponibilidade dos serviços.


O que acontece com mensagens persistentes?

Aqui entra um dos grandes diferenciais do IBM MQ.

Quando uma mensagem é persistente, ela é protegida pelos mecanismos de logging e recuperação do Queue Manager.

Caso ocorra uma falha durante a transmissão, entram em ação:

  • logs

  • commits

  • rollbacks

  • syncpoints

  • retries automáticos

É justamente essa confiabilidade que faz o IBM MQ continuar sendo um dos principais middlewares utilizados pelos maiores bancos do mundo.


Os canais continuam existindo

Outro mito bastante comum.

Cluster não elimina canais.

Ele apenas simplifica sua administração.

Sem Cluster, normalmente seria necessário criar inúmeros canais ponto a ponto.

QM1 → QM2

QM1 → QM3

QM1 → QM4

QM2 → QM5

Quanto mais Queue Managers...

mais canais.

No Cluster surgem conceitos como:

  • Cluster Sender

  • Cluster Receiver

A administração fica muito mais simples.


Escalabilidade praticamente transparente

Imagine uma Black Friday.

O processamento dobra.

Depois triplica.

O Queue Manager começa a atingir limites.

Sem Cluster seria necessário reconfigurar aplicações.

Com Cluster basta adicionar novos Queue Managers.

Eles passam a receber parte das mensagens automaticamente.

Essa expansão horizontal é um dos grandes motivos pelos quais o IBM MQ continua extremamente atual.


MQ Cluster não significa replicação

Esse ponto merece atenção.

O Cluster não replica automaticamente mensagens.

Também não compartilha filas.

Nem transforma vários Queue Managers em um único.

Cada Queue Manager continua responsável pelas próprias filas.

O Cluster apenas decide para qual deles cada mensagem deve ser enviada.


Comparando com tecnologias modernas

É impossível não perceber algumas semelhanças.

Hoje ouvimos falar diariamente em:

  • Kubernetes

  • Service Discovery

  • Service Mesh

  • API Gateway

  • Load Balancer

Todos trabalham com uma ideia semelhante.

As aplicações deixam de conhecer a infraestrutura física.

Existe uma camada intermediária responsável por encontrar o melhor destino.

O IBM MQ fazia exatamente isso quando muitos desses conceitos ainda nem existiam.


Onde o COBOL entra nessa história?

Aqui está uma das maiores lições para um Programador COBOL Padawan.

Você não precisa conhecer toda a infraestrutura para desenvolver uma boa aplicação.

Seu programa deve preocupar-se apenas com a lógica de negócio.

Quem decide:

  • onde executar

  • qual servidor utilizar

  • qual Queue Manager está disponível

  • qual caminho seguir

é o middleware.

Essa separação de responsabilidades é um dos maiores exemplos de arquitetura corporativa.


Curiosidades que poucos conhecem

Alguns fatos interessantes sobre MQ Clustering.

Curiosidade 1

O Cluster foi criado para reduzir drasticamente o custo administrativo em grandes ambientes com dezenas ou centenas de Queue Managers.


Curiosidade 2

Os Full Repositories normalmente não processam mensagens das aplicações.

Sua principal função é manter e distribuir metadados do Cluster.


Curiosidade 3

Partial Repositories aprendem dinamicamente novas rotas conforme a necessidade.

Isso reduz tráfego desnecessário.


Curiosidade 4

É possível possuir centenas de Queue Managers dentro de um único Cluster.


Curiosidade 5

Muitas instituições financeiras utilizam MQ Clustering em conjunto com tecnologias como IBM MQ Uniform Clusters, Multi-Instance Queue Managers, RDQM (em plataformas distribuídas), IBM z/OS Sysplex, CICS e IMS, criando arquiteturas extremamente resilientes.


Erros clássicos em entrevistas

Se você pretende trabalhar com middleware ou IBM MQ, evite responder estas afirmações.

❌ "Cluster compartilha filas."

Não compartilha.


❌ "Cluster replica mensagens."

Não necessariamente.


❌ "Full Repository recebe todas as mensagens."

Ele mantém metadados.


❌ "Partial Repository conhece todo o Cluster."

Conhece apenas o necessário.


❌ "Cluster elimina canais."

Não elimina.

Ele simplifica sua administração.


Easter Egg Bellacosa Mainframe

Existe uma analogia interessante para quem veio do mundo IBM Z.

Pense no VTAM.

Uma aplicação CICS normalmente não precisa conhecer todos os detalhes da infraestrutura física de rede.

Ela conversa com uma camada responsável por localizar recursos.

O MQ Cluster segue uma filosofia parecida.

As aplicações enxergam um ambiente lógico.

Quem conhece os detalhes físicos é o middleware.

Essa abstração é uma característica recorrente das tecnologias IBM: esconder a complexidade operacional para que o desenvolvedor possa concentrar seus esforços na regra de negócio.


A maior lição para um Programador COBOL Padawan

Quando começamos a programar, acreditamos que escrever código é a parte mais importante do trabalho.

Com o tempo percebemos que sistemas corporativos são muito maiores do que programas COBOL.

Eles são compostos por camadas especializadas que cooperam entre si: CICS gerencia transações, Db2 administra dados, RACF controla segurança, JES organiza o processamento batch e o IBM MQ coordena a comunicação entre aplicações.

O MQ Clustering representa um dos melhores exemplos dessa filosofia. Ele permite que aplicações continuem simples enquanto o middleware assume responsabilidades complexas como descoberta de serviços, balanceamento de carga, alta disponibilidade e roteamento inteligente.

Essa separação de responsabilidades explica por que os maiores bancos do mundo conseguem processar milhões de mensagens por hora com estabilidade. O desenvolvedor escreve um único MQPUT; o IBM MQ decide o restante.

E talvez essa seja a maior lição desta conversa: engenharia de software de alto nível não consiste em fazer cada componente saber tudo. Consiste em fazer cada componente saber apenas o necessário e confiar que a arquitetura fará o restante.

No universo IBM Z, essa ideia existe há décadas. Hoje ela recebe novos nomes na computação em nuvem, mas seu princípio continua exatamente o mesmo: desacoplamento, resiliência e inteligência distribuída. É por isso que estudar IBM MQ Clustering não é apenas aprender um produto — é compreender um dos fundamentos da arquitetura de sistemas corporativos modernos.


sexta-feira, 28 de fevereiro de 2020

☕🔥 “A ARQUITETURA QUE SEGURA O MUNDO” — OS 12 CONCEITOS QUE TODO PROFISSIONAL MAINFRAME USA… MESMO SEM PERCEBER

 

Bellacosa Mainframe e 12 conceitos importante para a arquitetura mainframe

☕🔥 “A ARQUITETURA QUE SEGURA O MUNDO” — OS 12 CONCEITOS QUE TODO PROFISSIONAL MAINFRAME USA… MESMO SEM PERCEBER

Quando alguém fala de:

  • microservices,

  • cloud-native,

  • autoscaling,

  • API Gateway,

  • event-driven,

  • sharding,

  • caching,

muita gente imagina:

“Kubernetes inventou isso.”

Mas aqui vem a verdade que pouca gente gosta de admitir:

☕ O MAINFRAME JÁ RESOLVIA MUITOS DESSES PROBLEMAS HÁ DÉCADAS.

Só que com outros nomes.

E frequentemente:

  • mais estabilidade,

  • mais previsibilidade,

  • mais segurança,

  • e MUITO menos caos operacional.

A imagem mostra 12 conceitos modernos de arquitetura.

Agora vamos traduzir isso para:

☕ IBM Z / zOS / COBOL / CICS / DB2 / MQ / Sysplex no estilo Bellacosa Mainframe.


☕ 1. LOAD BALANCING — “DIVIDIR A PRESSÃO ANTES DO COLAPSO”

No mundo distribuído:

  • Load Balancer distribui tráfego entre servidores.

No Mainframe:

WLM + Sysplex fazem isso há MUITO tempo.


🔥 Exemplo real

Você possui:

  • 4 regiões CICS,

  • milhares de TPS,

  • milhões de usuários.

O Workload Manager:

  • distribui carga,

  • evita gargalo,

  • prioriza serviços críticos.


☕ O detalhe brutal

Na cloud:

Load Balancer frequentemente é “reativo”.

No z/OS:

WLM é orientado por política de negócio.

O sistema entende:

  • prioridade,

  • SLA,

  • criticidade,

  • classe de serviço.

Isso é absurdamente sofisticado.


☕ 2. CACHING — “NÃO BUSQUE DUAS VEZES O QUE JÁ ESTÁ NA MEMÓRIA”


🔥 Mainframe vive de cache

O IBM Z inteiro é obcecado por minimizar I/O.

Porque:

DISCO É CARO EM TEMPO


☕ Exemplos reais

DB2 Buffer Pool

Páginas ficam em memória.


VSAM Buffering

Evita leitura física excessiva.


CICS TSQ/Temporary Storage

Dados temporários rápidos.


Hiperspace / Dataspaces

Memória expandida ultra rápida.


🔥 O mantra do performance analyst

“Se foi ao disco demais…

já perdeu.”


☕ 3. CDN — CONTENT DELIVERY NETWORK

À primeira vista parece “coisa web”.

Mas no mainframe existe conceito parecido.


☕ No IBM Z isso aparece como:

  • replicação geográfica,

  • GDPS,

  • Sysplex Distributor,

  • caching distribuído,

  • data locality.


🔥 Exemplo bancário

Uma consulta:

  • não precisa cruzar o país inteiro,

  • pode ser atendida por nó mais próximo,

  • reduzindo latência.


☕ Filosofia importante

O Mainframe sempre entendeu:

mover dado custa caro.


☕ 4. MESSAGE QUEUE — “O SEGREDO DA DESCOPLAGEM”

Aqui entramos numa das áreas mais poderosas do IBM Z.


🔥 IBM MQ é praticamente o sistema nervoso corporativo

Ele desacopla aplicações.


☕ Exemplo clássico

Sistema A:

gera pagamento

Sistema B:

processa fraude

Sistema C:

envia PIX

Tudo via fila.


☕ O benefício monstruoso

Se um sistema cai:

  • mensagem continua na fila,

  • processamento continua depois,

  • nada se perde.


🔥 O mainframe odeia perda de transação

Esse é um ponto cultural importante.


☕ 5. PUBLISH/SUBSCRIBE — EVENT DRIVEN ANTES DA MODA


🔥 O mundo moderno chama:

event-driven architecture

O mainframe chama há décadas de:

  • MQ Pub/Sub,

  • eventos CICS,

  • triggers,

  • integração assíncrona.


☕ Exemplo real

Quando uma compra é aprovada:

  • antifraude recebe evento,

  • CRM recebe evento,

  • analytics recebe evento,

  • billing recebe evento.

Tudo desacoplado.


☕ 6. API GATEWAY — “A PORTA DE ENTRADA DO LEGADO”

Muita gente pensa:

“COBOL não fala REST.”

Erro clássico.


🔥 Hoje o Mainframe expõe:

  • REST APIs,

  • JSON,

  • SOAP,

  • GraphQL integration,

  • OpenAPI.


☕ Ferramentas

  • z/OS Connect

  • CICS Web Services

  • API Connect

  • MQ REST bridge


☕ O segredo

O COBOL continua fazendo:

  • regra de negócio,

  • consistência,

  • transação ACID.

A API só traduz o mundo externo.


☕ 7. CIRCUIT BREAKER — “EVITAR EFEITO CASCATA”


🔥 O Mainframe sempre teve paranoia com disponibilidade

Porque downtime custa milhões.


☕ Exemplo prático

Se DB2 degrada:

  • CICS pode limitar requests,

  • workload é redirecionado,

  • regiões são isoladas.


☕ Resultado

O problema não destrói o ecossistema inteiro.


🔥 Filosofia do z/OS

“Falha controlada é melhor que colapso generalizado.”


☕ 8. SERVICE DISCOVERY — “ENCONTRAR O SERVIÇO CERTO”

No cloud:

  • Kubernetes,

  • Consul,

  • Eureka.

No mainframe:

  • VTAM,

  • TCP/IP stacks,

  • CICSPlex SM,

  • Sysplex Distributor.


☕ O sistema descobre:

  • onde está a região disponível,

  • qual nó está saudável,

  • quem responde mais rápido.


☕ 9. SHARDING — “DIVIDIR O GIGANTE”


🔥 Mainframe já fazia particionamento gigantesco

Muito antes do hype NoSQL.


☕ Exemplos

DB2 Partitioning

Tabela gigantesca dividida.


VSAM split

Segmentação de dados.


GDG distribution

Separação temporal.


☕ Objetivo

  • reduzir contenção,

  • aumentar paralelismo,

  • melhorar throughput.


☕ 10. RATE LIMITING — “CONTROLAR O CAOS”


🔥 Mainframe é obcecado por governança

Você NÃO deixa qualquer workload destruir o ambiente.


☕ Exemplos reais

WLM

Controla prioridade.


CICS MAXTASK

Limita tasks simultâneas.


DB2 Thread Limits

Evita explosão de conexão.


MQ Queue Depth

Controla saturação.


☕ Resultado

O sistema continua respirando sob pressão.


☕ 11. CONSISTENT HASHING — “DISTRIBUIÇÃO INTELIGENTE”


🔥 Aqui aparece no:

  • Parallel Sysplex,

  • DB2 data sharing,

  • cache distribution,

  • workload routing.


☕ Objetivo

Distribuir carga:

  • sem destruir consistência,

  • sem mover tudo,

  • sem gerar caos.


☕ 12. AUTO SCALING — “O MAINFRAME ESCALA DIFERENTE”

Na cloud:

sobe VM

No Mainframe:

  • ativa engines,

  • redistribui workload,

  • muda prioridade,

  • usa Capacity on Demand,

  • explora Sysplex.


🔥 O detalhe mais impressionante

O IBM Z consegue crescer:

SEM PARAR O BANCO

Isso é engenharia absurda.


☕ O QUE O MAINFRAME ENSINA SOBRE ARQUITETURA

A cloud moderna popularizou vários conceitos.

Mas o IBM Z já conhecia muitos deles:

  • em escala gigantesca,

  • com confiabilidade extrema,

  • em ambientes mission critical.


🔥 O erro de muita gente

Pensar que:

Mainframe = tecnologia antiga

quando na prática:

Mainframe = engenharia corporativa refinada por décadas de guerra operacional.

☕ RESUMO BELLACOSA MAINFRAME

ConceitoNo IBM Mainframe
Load BalancingWLM + Sysplex
CachingBuffer Pools + VSAM Buffers
CDNDistribuição geográfica/Sysplex
Message QueueIBM MQ
Publish/SubscribeEvent-driven corporativo
API Gatewayz/OS Connect + CICS
Circuit BreakerIsolamento operacional
Service DiscoveryCICSPlex + Sysplex
ShardingDB2 partitioning
Rate LimitingWLM + MAXTASK
Consistent HashingDistribuição de workload
Auto ScalingCapacity on Demand

☕🔥 Frase final no estilo Bellacosa Mainframe

“A cloud reinventou vários conceitos.

O Mainframe apenas ficou quieto…

porque já fazia isso desde o século passado.”

 

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