Translate

sábado, 18 de agosto de 2018

💥 Top 10 Atos FALHOS em Animes — Quando o inconsciente faz fanservice!



 💥 Top 10 Atos FALHOS em Animes — Quando o inconsciente faz fanservice!

📓 Versão Bellacosa Mainframe para o blog El Jefe Midnight Lunch


Se Freud tivesse nascido em Akihabara, com certeza teria fundado a escola da Psicanálise Moe.
Porque, convenhamos, ninguém comanda o inconsciente como os personagens de anime — que transformam cada ato falho em confissão, piada, caos ou romance.
E como bom notívago do El Jefe Midnight Lunch, montei aqui o Top 10 Ato Falho no Japão Animado, com direito a bug emocional, crash de sentimentos e prints mentais eternos.


🥇 1. Usagi Tsukino (Sailor Moon) – “Ai, eu queria o Tuxedo Mask só pra mim!”

A rainha dos shitsugen românticos.
Usagi vive trocando as palavras, falando o que sente antes de pensar — às vezes no meio da batalha!
Freud aprovaria: puro id em forma de colegial mágica.

💬 “Eu disse que ele era lindo?! Quero dizer… forte! Fortíssimo!”

💡 Diagnóstico Bellacosa: Ato falho tipo moon crash — impulsivo, sincero e adorável.


🥈 2. Naruto Uzumaki (Naruto) – “Eu nunca desistirei de você, Sasuke!”

O ninja número um dos fails emocionais.
Naruto vive negando o que sente, mas toda fala dele é um shitsugen afetivo em potencial.
A amizade, a dor, o amor reprimido — tudo aparece em falas acidentais que viraram memes.

💬 “Não é que eu gosto de você, tá? Só não quero que você morra!”

💡 Diagnóstico Bellacosa: Ato falho nível Hokage — entre a negação e a verdade mais pura.


🥉 3. Vegeta (Dragon Ball Z) – “Não… é que eu… me preocupo com você, Kakarotto!”

O orgulho Saiyajin não permite dizer “gosto de você”, mas o inconsciente dele não mente.
Toda vez que tenta xingar Goku, sai uma declaração disfarçada.

💬 “Você é um idiota… mas é o MEU idiota.”

💡 Diagnóstico Bellacosa: Shitsugen tsundere — o afeto camuflado em raiva.


🏅 4. Misty (Pokémon) – “Ash, seu bobo, quem disse que eu gosto de você?”

Ato falho clássico de 1990s.
Entre um Pikachu e outro, Misty deixa escapar toda a química adolescente.

💬 “Não é como se eu quisesse ficar com você o tempo todo!”

💡 Diagnóstico Bellacosa: Ato falho tipo poké-love — a negação é o primeiro estágio da paixão.


🎖️ 5. Light Yagami (Death Note) – “Eu sou… o Kira!”

O shitsugen supremo.
O gênio do disfarce deixa o inconsciente falar num lapso quase teatral — e boom, a mente trai o plano.
Freud bateria palmas de pé.

💬 “Quer dizer, se eu fosse o Kira, eu faria exatamente isso…”

💡 Diagnóstico Bellacosa: Ato falho nível divino — o ego se acha deus e o id confirma.


🧠 6. Shinji Ikari (Evangelion) – “Pai… eu só queria que você me notasse.”

O anime inteiro é um grande ato falho freudiano em forma de robô gigante.
Cada fala de Shinji é o inconsciente pedindo afeto em meio à destruição do mundo.

💬 “Eu não quero pilotar! …Tá bom, eu piloto.”

💡 Diagnóstico Bellacosa: Ato falho depressivo-existencial — o inconsciente chora dentro do Eva-01.


💔 7. Rukia Kuchiki (Bleach) – “Ichigo, não pense que me preocupo!”

Entre lutas e mundos espirituais, Rukia vive tropeçando na língua.
O amor platônico disfarçado de desprezo — um clássico da psique japonesa.

💬 “Você é irritante, mas… não morra.”

💡 Diagnóstico Bellacosa: Shitsugen samurai — afeição embainhada como uma katana.


🌸 8. Kaguya Shinomiya (Kaguya-sama: Love is War) – “Não! Eu não quero que ele confesse primeiro!”

A rainha dos atos falhos estratégicos.
Cada episódio é uma guerra psicológica de egos reprimidos, e o inconsciente é o verdadeiro general.

💬 “Eu não estou apaixonada… só quero que ele morra de amores por mim!”

💡 Diagnóstico Bellacosa: Ato falho 5D xadrez emocional — o ego perde, o coração vence.


🍜 9. Sanji (One Piece) – “Nami-swaaan! Eu faria tudo por você!”

O cozinheiro galante é o bug ambulante do amor.
Não há filtro entre o inconsciente e a boca — cada palavra é uma explosão de libido freudiana no convés.

💬 “Meu coração ferve mais que o óleo da frigideira, Nami-san!”

💡 Diagnóstico Bellacosa: Shitsugen culinário — o inconsciente temperado com paixão.


🕯️ 10. Rei Ayanami (Evangelion) – “Por que estou chorando…?”

Talvez o ato falho mais silencioso e poético dos animes.
Rei, clone sem emoções, chora sem entender — o inconsciente fala pelas lágrimas.

💬 “Não sei o que sinto… mas sinto.”

💡 Diagnóstico Bellacosa: Ato falho ontológico — o humano emergindo do código genético.


🌙 Conclusão Bellacosa

O ato falho nos animes é o momento em que o personagem deixa o script e fala com a alma.
É quando o ego de ferro trinca, o coração vaza e o inconsciente grita “plot twist!”.
No fundo, são esses deslizes que tornam os personagens humanos — e nós, espectadores, cúmplices.

Freud diria:

“No erro, o anime encontra sua verdade.”

E eu, do alto das madrugadas do El Jefe Midnight Lunch, completo:

“Cada ato falho é um printf do coração — sem edit mask, sem if, sem GO TO.”


🎬 Top 10 Ato Falho em Animes — por Vagner Bellacosa
Blog El Jefe Midnight Lunch — onde Freud, o Japão e o Mainframe se encontram às 3h da manhã.

sexta-feira, 17 de agosto de 2018

O Mistério da Porta Invisível : Quando um Programador COBOL Descobre que Seu Programa Conversa com um Celular sem Nunca Ter Saído do CICS

 

Bellacosa Mainframe e o misterio da porta invisivel

☕ Um Café no Bellacosa Mainframe

O Mistério da Porta Invisível

Quando um Programador COBOL Descobre que Seu Programa Conversa com um Celular sem Nunca Ter Saído do CICS

"Naquela noite chuvosa, os logs estavam silenciosos. Nenhum ABEND. Nenhuma mensagem DFHAC2001. Apenas um estranho pacote HTTP atravessando a rede em direção ao velho mainframe. Algo impossível estava prestes a acontecer..."


Prólogo

O Caso da Máquina que Nunca Aprendeu a Envelhecer

Existe uma velha lenda nos CPDs.

Ela diz que existe uma máquina construída antes da chegada da Internet que, décadas depois, continua respondendo milhões de requisições vindas de smartphones.

Ela nunca viu um navegador moderno.

Nunca executou Android.

Jamais instalou iOS.

Mesmo assim...

Responde diariamente a aplicativos bancários, sistemas de companhias aéreas, plataformas de saúde, seguradoras e bolsas de valores.

Essa máquina atende por um nome conhecido.

IBM Z.

E o grande investigador dessa história é um personagem chamado...

CICS.

Hoje vamos investigar como um programa COBOL escrito talvez antes do seu nascimento consegue conversar com aplicações em nuvem utilizando REST, SOAP, JSON, XML, HTTPS e APIs modernas.

Prepare seu café.

O mistério começa agora.


Capítulo 1

A Cidade Perdida chamada CICS

Imagine uma gigantesca cidade.

Nela existem milhares de edifícios.

Cada prédio possui uma função específica.

Uns recebem visitantes.

Outros executam trabalhos.

Alguns guardam documentos secretos.

Outros armazenam dinheiro.

Essa cidade é o CICS.

Cada prédio representa um programa COBOL.

Milhares deles.

Funcionando simultaneamente.

Sem acidentes.

Sem congestionamentos.

Sem parar.

Enquanto servidores modernos podem precisar ser reiniciados para atualizações, um ambiente CICS pode permanecer em operação por períodos extremamente longos, processando um fluxo contínuo de transações críticas.


O verdadeiro trabalho do CICS

Muitos iniciantes acreditam que o CICS é apenas um ambiente onde o COBOL roda.

Na realidade...

Ele é muito mais.

Ele administra:

  • milhares de usuários

  • memória

  • arquivos

  • filas

  • comunicação

  • segurança

  • recuperação

  • sincronização

  • transações

É praticamente um sistema operacional especializado em transações.


Capítulo 2

O nascimento do problema

Década de 1980.

Tudo era simples.

Terminal 3270

↓

CICS

↓

COBOL

↓

VSAM

Todo mundo falava a mesma língua.

Não existiam aplicativos.

Não existiam APIs.

Não existia JSON.

Tudo era verde.

Tudo era 3270.

Então veio a Internet.

Depois surgiram:

  • Java

  • .NET

  • Smartphones

  • Cloud

  • APIs

  • Microsserviços

De repente surgiu uma pergunta assustadora.

"Como um programa COBOL pode conversar com um celular?"


Capítulo 3

O idioma secreto chamado HTTP

Os aplicativos modernos falam uma língua.

HTTP.

Já o COBOL conversa utilizando estruturas internas como COMMAREA ou Channels.

São idiomas diferentes.

É como colocar Sherlock Holmes para conversar com um samurai do Japão Feudal.

Os dois são inteligentes.

Mas precisam de um tradutor.

Esse tradutor existe.

Ele mora dentro do CICS.


Capítulo 4

A Porta Invisível

Essa porta possui um nome elegante.

CICS Web Services.

Ela funciona como um diplomata.

Quando chega uma mensagem REST:

GET /saldo/12345

Ela traduz para algo que o COBOL entende.

Depois faz o caminho contrário.

Programa COBOL

↓

COMMAREA

↓

Resposta

↓

JSON

↓

HTTP

↓

Celular

O programa COBOL sequer percebe que está atendendo um smartphone.

Para ele...

É apenas mais uma solicitação.

Essa abstração é um dos maiores trunfos do CICS: preservar a lógica de negócio enquanto adapta a forma de comunicação.


Capítulo 5

Os dois detetives: REST e SOAP

Aqui encontramos dois investigadores rivais.

REST

Jovem.

Ágil.

Minimalista.

Prefere JSON.

Exemplo:

{
  "cliente": "Maria",
  "saldo": 18950.44
}

É o queridinho das APIs modernas.


SOAP

Mais velho.

Elegante.

Extremamente organizado.

Utiliza XML.

<Envelope>

<Body>

<GetBalance>

<Account>12345</Account>

</GetBalance>

</Body>

</Envelope>

Embora muitos o considerem "antigo", ele continua sendo amplamente utilizado em integrações corporativas que exigem contratos rígidos, segurança avançada e interoperabilidade.


Curiosidade Noir

REST é como um repórter investigativo.

Faz perguntas curtas.

Recebe respostas rápidas.

SOAP parece um advogado.

Toda conversa vem acompanhada de documentos, assinaturas e formalidades.

Nenhum é melhor.

Cada um resolve um tipo diferente de problema.


Capítulo 6

A viagem de um pacote

Vamos seguir uma requisição.

Cliente

↓

Aplicativo

↓

Internet

↓

HTTPS

↓

Firewall

↓

API Gateway

↓

CICS

↓

Programa COBOL

↓

DB2

↓

Resposta

Tudo isso pode ocorrer em poucos milissegundos.

Enquanto você pisca.

O dinheiro já foi consultado.


Capítulo 7

O tradutor invisível

O COBOL trabalha com registros.

01 CLIENTE.

   05 ID.

   05 NOME.

   05 SALDO.

O celular trabalha com JSON.

{
"id":100
}

Quem converte?

O CICS.

Ele transforma estruturas COBOL em mensagens compreensíveis para aplicações modernas e realiza o caminho inverso quando recebe uma requisição.


Capítulo 8

Onde entram Db2 e VSAM?

Muita gente acredita que a API consulta diretamente o banco.

Não.

Quem faz isso é o programa COBOL.

Fluxo:

REST

↓

CICS

↓

COBOL

↓

EXEC SQL

↓

DB2

Ou

REST

↓

CICS

↓

COBOL

↓

READ

↓

VSAM

O Web Service não substitui a lógica de negócio.

Ele apenas abre uma nova porta de entrada.


Capítulo 9

O Guardião chamado Pipeline

Nos bastidores existe outro personagem.

O Pipeline.

Ele verifica:

  • formato da mensagem

  • conversões

  • validações

  • transformações

  • roteamento

  • preparação da resposta

Imagine uma esteira de fábrica.

Cada estação executa uma tarefa antes que a mensagem chegue ao programa COBOL.


Capítulo 10

Segurança: o Castelo Nunca Dorme

Abrir uma API para a Internet não significa deixar a porta escancarada.

Um ambiente corporativo normalmente utiliza camadas como:

  • HTTPS/TLS para criptografia.

  • RACF para autenticação e autorização.

  • Certificados digitais.

  • API Gateways.

  • OAuth ou JWT, quando apropriado.

  • Auditoria via SMF.

  • Firewalls e balanceadores de carga.

A aplicação COBOL continua concentrada nas regras de negócio; a infraestrutura cuida da proteção da comunicação e do acesso.


Capítulo 11

Modernização sem Destruição

Durante muitos anos acreditou-se que seria necessário jogar fora milhões de linhas de COBOL.

Felizmente...

O mercado descobriu algo importante.

O problema não era o COBOL.

Era a forma de acessá-lo.

Hoje fazemos exatamente o contrário.

Mantemos:

  • COBOL

  • CICS

  • Db2

  • VSAM

E apenas trocamos a fachada.

A casa continua firme.

A porta ficou moderna.


Capítulo 12

O casamento com a Cloud

Uma API publicada pelo CICS pode ser consumida por:

  • Azure

  • AWS

  • Google Cloud

  • Kubernetes

  • OpenShift

  • Microsserviços

  • Aplicativos Android

  • Aplicativos iPhone

  • Inteligência Artificial

  • Agentes autônomos

O mainframe deixa de ser uma "ilha" e passa a integrar um ecossistema distribuído.


Capítulo 13

O Papel do z/OS Connect EE

Em muitas empresas, existe um aliado do CICS chamado z/OS Connect Enterprise Edition.

Ele facilita a publicação de APIs REST, realiza transformações entre JSON e estruturas do CICS, gera documentação OpenAPI e simplifica a integração com plataformas de gerenciamento de APIs.

Pense nele como um elegante recepcionista de um hotel cinco estrelas: ele recebe os visitantes, organiza a documentação e encaminha cada um ao departamento correto — que continua sendo o programa COBOL no CICS.


Passo a passo

Como nasce uma API CICS

  1. Identificar o programa COBOL que já executa a regra de negócio.

  2. Definir quais dados serão recebidos e devolvidos.

  3. Criar ou configurar o Web Service/REST endpoint.

  4. Mapear JSON ou XML para COMMAREA ou Channels.

  5. Configurar Pipeline e recursos do CICS.

  6. Publicar a API.

  7. Testar com ferramentas como Postman ou aplicações cliente.

  8. Monitorar desempenho, segurança e auditoria.

O grande diferencial é que, em muitos casos, a lógica COBOL permanece praticamente inalterada.


Curiosidades do Arquivo Bellacosa 🕵️

🗂 Arquivo Nº 3270

O primeiro navegador do bancário foi um terminal 3270. Ele não exibia imagens nem animações, mas oferecia respostas extremamente rápidas e confiáveis.

🗂 Arquivo Nº DFH

Grande parte dos módulos internos do CICS começa com o prefixo DFH, uma tradição histórica da IBM que aparece em mensagens, componentes e utilitários.

🗂 Arquivo Nº COMMAREA

Antes dos Channels e Containers, a COMMAREA era o principal meio de troca de dados entre programas CICS. Ela ainda é amplamente utilizada em aplicações legadas.

🗂 Arquivo Nº REST

Uma API REST pode estar chamando um programa COBOL escrito há décadas, e o desenvolvedor do aplicativo móvel talvez nunca saiba disso.


Dicas para quem está começando

✔ Aprenda primeiro como funciona uma transação CICS.

✔ Entenda bem COMMAREA e, em seguida, estude Channels e Containers.

✔ Domine JSON e XML; você os verá com frequência em integrações.

✔ Conheça o básico de HTTP: métodos GET, POST, PUT e DELETE, além de códigos de status.

✔ Estude Db2 e VSAM, pois são as principais fontes de dados das aplicações CICS.

✔ Familiarize-se com conceitos de segurança, como TLS, certificados e RACF.

✔ Aprenda a usar ferramentas de teste de APIs, como Postman ou curl.

✔ Entenda que modernização não significa abandonar o legado, mas conectá-lo ao mundo atual.


Perguntas clássicas de entrevista

Por que utilizar CICS Web Services?

Porque eles permitem reutilizar aplicações COBOL consolidadas, expondo-as como APIs modernas sem a necessidade de reescrever toda a lógica de negócio.

REST substitui SOAP?

Não. REST e SOAP atendem necessidades diferentes e convivem em muitas organizações.

O programa COBOL precisa saber que está sendo chamado por um celular?

Normalmente, não. O CICS e sua infraestrutura de integração fazem a tradução entre o protocolo Web e a interface esperada pela aplicação.

O CICS acessa diretamente o Db2?

Quem executa a lógica de acesso normalmente é o programa COBOL, utilizando SQL para Db2 ou comandos CICS para VSAM e outros recursos.


O Easter Egg ☕

Se você observou toda a nossa jornada da série Mainframe Learning with AI, percebeu que existe uma sequência quase detectivesca:

  • TOR foi o porteiro que recebeu os visitantes.

  • AOR era o investigador que resolvia os casos.

  • FOR guardava os arquivos secretos.

  • MRO construiu as estradas entre regiões.

  • ISC atravessou fronteiras entre sistemas.

  • TCP/IP abriu a comunicação com o mundo exterior.

  • Web Services finalmente abriu a porta principal para a Internet.

Cada capítulo parecia isolado. Mas, reunidos, formam um único grande mapa da arquitetura CICS moderna.

Como toda boa revista noir dos anos 1950, o maior mistério nunca esteve escondido na última página.

Ele sempre esteve diante dos nossos olhos.

O velho programa COBOL que muitos julgavam ultrapassado jamais esteve preso ao passado. Ele apenas aguardava que alguém encontrasse a porta certa para conversar com o futuro. E essa porta atende pelo nome de CICS Web Services.

segunda-feira, 13 de agosto de 2018

🎰 Gacha: O Caça-Níqueis da Alma Otaku

 


🎰🎰🎰 Gacha: O Caça-Níqueis da Alma Otaku 🎰🎰🎰

Um mergulho Bellacosa Mainframe para o blog El Jefe Midnight Lunch

Se o Japão tivesse que escolher apenas uma mecânica para explicar a sociedade moderna — dos animes ao capitalismo afetivo — provavelmente seria o Gacha.
Não é só jogo, não é só azar, não é só vício: é cultura, é ritual, é algoritmo emocional.

Sim, hoje no El Jefe Midnight Lunch, vamos abrir o painel do z/OS japonês e entender como esse “RPG de probabilidade” virou um fenômeno sociológico, econômico, psicológico e, claro, otaku até o osso.



1. Origem do Gacha: Quando o Japão Copiou o Ocidente… E Melhorou

O Gacha nasceu nos EUA como gashapon machines nos anos 60 — aquelas cápsulas de plástico vendidas em máquinas de 25 centavos.
O Japão olhou para aquilo, deu um sorriso de quem está prestes a hackear o universo, e reinventou tudo:

  • cápsulas mais bonitas

  • prêmios temáticos

  • séries colecionáveis

  • raridades

  • lore

  • e, claro, muita psicologia aplicada

O termo “Gacha” vem do som:
GACHA = girar a manivela
PON = cair a cápsula

Dois onomatopeias que viraram um império.



2. O Efeito Mainframe: Quando o Gacha Migrou Para o Mundo Digital

Nos anos 2000, as empresas japonesas perceberam que:

“Se as crianças giram uma manivela…
…os adultos podem girar um servidor.”

Assim nasceu o Gacha Digital nos games mobile.
A lógica era simples:

  • 1 item raro em 100

  • 1 personagem SSR em 300

  • e muito “só mais uma tentativa”

A mecânica caiu como luva para jogos de:

  • RPG mobile

  • Visual novels gacha

  • Games de idol

  • Jogos de anime

  • Coletáveis de cartas digitais

E virou uma economia bilionária.



3. Como Funciona a “Engenharia Emocional” do Gacha

O Gacha trabalha com cinco pilares psicológicos:

a) Randomização Controlada

O jogo nunca revela totalmente as chances.
Você sabe que é baixo — mas não quão baixo.

b) Feedback Instantâneo

Som, luz, animação… tudo para enganar o cérebro e simular vitória.

c) Raridade Escalonada

  • N – Normal

  • R – Rare

  • SR – Super Rare

  • SSR – Super Super Rare

  • UR – Ultra Rare

  • LR – Lendário

Quanto mais letra, mais dopamina.

d) Pity System

Se você gastar X vezes, o jogo te dá 1 personagem raro por pena.
É quase um “ABEND no sistema de sorte”: falhou tanto que ganhou por misericórdia.

e) Edição Limitada

Personagem exclusivo de evento — perdeu?
Só no Japão mesmo:
anos depois, talvez volte… ou não.


4. A Sociedade Gacha: Como Isso Mudou o Comportamento Japonês

O Gacha virou parte da cultura:

  • crianças: gashapon físico

  • adolescentes: jogos de idol (Love Live, Idolm@ster)

  • adultos: FGO, Genshin, Uma Musume, Blue Archive

  • idosos: versões leves em pachinko e loterias

O Japão tem até:

📌 ruas inteiras dedicadas apenas a gacha machines
📌 lojas que vendem cápsulas raras por preço de ouro
📌 mercado secundário de alto valor

E a galera de Akihabara ama dizer:

“Quem nunca gastou mais de 10k yen em Gacha
…não viveu o Japão.”


5. Curiosidades no Estilo Bellacosa Mainframe

  • O maior single pull registrado num evento de Fate/Grand Order foi equivalente a R$ 70 mil.

  • Um programador japonês foi demitido por gastar todo o salário em Gacha durante o expediente.

  • Existe Gacha para comprar Gacha — sim, meta-gacha.

  • A cápsula mais cara vendida oficialmente custava 500 yen (físico).

  • Gacha de anime adulto existe — e vende muito.

  • O Japão exporta gacha até para aeroportos (Narita é um parque de diversões).

  • Alguns gachas têm “seed” fixa por usuário: a sorte nasce junto com a conta.


6. Easter-Eggs Que o Fã Hardcore Vai Reconhecer

  • Em Genshin, a animação dourada tem 7 frames secretos diferentes.

  • Em FGO, se a tela brilha duas vezes, é quase certo que vem SSR — quase.

  • Em Blue Archive, existe um código de debug interno famoso por vazar em 2021 revelando taxas reais.

  • Em Uma Musume, algumas jogadoras UR têm idle motions baseadas em cavalos de verdade.

  • Em gachas físicos, várias máquinas colocam cápsulas vazias para simular raridade.


7. A Parte Sombria: Problemas Legais, Éticos e Sociais

O Gacha já foi acusado de:

❖ incentivar vício

Sim, funciona como caça-níquel emocional.

❖ exploração econômica

Jogadores jovens gastam sem controle.

❖ mecânicas enganosas

Algumas empresas esconderam probabilidades reais.

❖ casos de falência pessoal

Sim, existe Gacha Bankruptcy — falência por gacha.

❖ leis

Em 2012 o Japão proibiu o “Kompu Gacha”, um formato onde o jogador precisava combinar itens raros para obter superpremio (era considerado manipulação do consumidor).


**8. Por Que o Gacha Se Sustenta?

(E a resposta é: porque o Japão ama colecionar)**

Desde a era Edo, o Japão já tinha:

  • amuletos

  • bonecos

  • selos

  • cartas

  • talismãs

  • coleções de tudo

O Gacha só digitalizou um comportamento cultural de 400 anos.


9. Conclusão Bellacosa: Gacha É o SUBMIT do Destino

O Gacha é o mainframe emocional da cultura pop japonesa:

  • processa desejo,

  • aloca esperança,

  • executa dopamina,

  • entrega frustração,

  • e reinicia o ciclo.

E no final, todo jogador pensa:

“Dessa vez vai.”
E não vai.
Mas a gente tenta de novo.

No Japão, Gacha não é só jogo —
é uma filosofia existencial,
um ritual social,
uma economia,
e um espelho da alma otaku.

domingo, 12 de agosto de 2018

🌄 Taubaté: Onde Fui Feliz Sem Saber

  





🌄 Taubaté: Onde Fui Feliz Sem Saber

Por El Jefe — Bellacosa Mainframe Chronicles

Há cidades que passam por nós.
E há cidades que ficam — como tatuagem, cicatriz e perfume antigo.

Porque amei — e ainda amo — a cidade de Taubaté.
Foram quase quatro anos vivendo ali, mas cada dia parecia um verão inteiro. Posso afirmar, sem cerimônia, que foram os anos mais intensos e livres da minha vida.

Andava de bicicleta pra lá e pra cá — Caçapava, Tremembé, Quiririm, distritos perdidos na Mantiqueira. Taubaté era plana, aberta, convidativa. Uma cidade feita para se andar a pé, com o vento leve batendo no rosto e a sensação de que o tempo não tinha pressa.

O povo, ah o povo... acolhedor, divertido, cheio de causos e risadas. Dava pra nadar nas lagoas, pescar no rio Paraíba, mergulhar na culinária do interior com pastel de feira, caldo de cana e aquele frango com quiabo que abraçava o estômago e o coração.
Havia verde por todos os lados, bosques, matas, córregos, e o mar de Ubatuba logo ali, como promessa de um fim de semana sem relógio.

Era um tempo doce. Não havia violência nas esquinas.
As crianças brincavam na rua até tarde, e a noite era um convite à liberdade — e não ao medo.
Gostava das escolas por onde passei, dos amigos que a vida me presenteou, dos amores, sapequices e pequenas rebeldias que ajudaram a moldar o homem que me tornei.

E no centro de tudo, um refúgio: a Biblioteca Municipal, meu templo.
Entre aquelas prateleiras, minha imaginação voava sem limites. Ali, aprendi que o mundo cabia dentro de um livro — e que o futuro podia ser escrito com uma caneta azul e um coração inquieto.

Mas um dia, com o coração pesado, parti.
Deixei Taubaté para trás e fui parar na fria, cinzenta e poluída metrópole de São Paulo.
A cidade grande me engoliu com seu concreto e suas urgências.
Mas Taubaté... ah, Taubaté ficou.

Ficou como lembrança que visita nas madrugadas.
Como cheiro de chuva no asfalto quente,
como saudade de um tempo em que a vida era simples — e a felicidade, distraída.


☕ Notas de Rodapé de Um Bellacosa

  1. A liberdade, às vezes, é uma bicicleta e um pôr do sol no Vale do Paraíba.

  2. O homem se forma não nas metrópoles, mas nas cidades pequenas onde ainda é possível ouvir o barulho do próprio coração.

  3. A saudade é o arquivo imutável do nosso mainframe interior.


💭 Epílogo

Hoje entendo: Taubaté foi meu compilador emocional.
Ali, compilei meus sonhos, debuguei meus medos, e rodei o programa mais importante da vida: ser feliz sem saber.


sábado, 11 de agosto de 2018

IBM MQ em Velocidade Máxima : Descobre que a Mensagem Não Pode Parar, a Fila Não Pode Estourar

 

Bellacosa Mainframe e o ibm mq em velocidade maxima

☕ Um Café no Bellacosa Mainframe

IBM MQ em Velocidade Máxima

Quando um Programador COBOL Descobre que a Mensagem Não Pode Parar, a Fila Não Pode Estourar e o Canal Precisa Permanecer Acima de 50 Milhas por Hora

Existe uma bomba dentro do ônibus.

Ela não está ligada a fios vermelhos, relógios digitais ou explosivos cinematográficos. Está ligada a algo muito mais perigoso para uma grande empresa:

uma fila IBM MQ que cresce sem parar.

O painel de monitoração mostra:

QUEUE NAME: PAGAMENTOS.ENTRADA
CURRENT DEPTH: 197.842
MAX DEPTH:     200.000

O consumidor parou.

O canal está instável.

A fila continua recebendo mensagens.

O telefone da produção toca.

O gerente pergunta:

— Quanto tempo temos?

O especialista MQ olha para a tela, respira fundo e responde:

— Se a fila atingir o MAXDEPTH, os próximos MQPUT poderão falhar. Temos poucos minutos.

Em algum lugar do ambiente corporativo, milhares de aplicações continuam enviando pagamentos, pedidos, atualizações cadastrais, reservas, autorizações e eventos.

A mensagem não pode parar.

O IBM MQ precisa continuar em movimento.

Bem-vindo a mais uma sessão de Um Café no Bellacosa Mainframe, onde hoje entraremos no mundo do IBM MQ como se estivéssemos dentro de um thriller tecnológico em velocidade máxima.

A missão é simples:

Entender como o IBM MQ transporta mensagens com confiabilidade, mesmo quando aplicações, redes e servidores não estão vivendo o seu melhor dia.

Para um programador COBOL iniciante, o MQ pode parecer uma coleção assustadora de filas, canais, listeners, Queue Managers, códigos de retorno e comandos misteriosos.

Mas, depois que compreendemos sua lógica, percebemos que ele resolve um dos problemas mais antigos da computação empresarial:

Como permitir que dois sistemas troquem informações sem depender de estarem disponíveis exatamente no mesmo instante?

Coloque o café no suporte.

Aperte o cinto.

E não deixe a profundidade da fila cair abaixo de… bem, neste caso, queremos justamente que ela caia.


1. O passageiro invisível dos sistemas corporativos

O IBM MQ raramente aparece para o usuário final.

Ninguém abre o aplicativo do banco e vê uma mensagem dizendo:

Seu pagamento está sendo transportado pelo IBM MQ.

O cliente apenas espera que a operação funcione.

Quando ele faz uma transferência, compra uma passagem aérea ou confirma um pedido, várias aplicações podem participar do processo:

Aplicativo móvel
        ↓
Sistema de autenticação
        ↓
Sistema de pagamentos
        ↓
Antifraude
        ↓
Contabilidade
        ↓
Notificações

Esses sistemas podem estar em tecnologias completamente diferentes:

  • COBOL em z/OS;

  • Java em Linux;

  • aplicações .NET em Windows;

  • microsserviços em Kubernetes;

  • bancos de dados;

  • serviços em nuvem;

  • sistemas antigos que ninguém ousa desligar.

O IBM MQ funciona como uma camada intermediária de comunicação.

Ele não precisa executar as regras do pagamento.

Ele não decide se o cliente possui saldo.

Ele não calcula os juros.

Sua principal missão é transportar a mensagem de forma confiável.

É como o ônibus do filme: ele pode não ser o protagonista humano da história, mas toda a tensão depende de mantê-lo em movimento.


2. O problema da comunicação direta

Imagine dois programas:

PROGRAMA-A
PROGRAMA-B

O Programa A precisa enviar uma informação ao Programa B.

A solução mais simples seria uma chamada direta:

PROGRAMA-A → PROGRAMA-B

Porém, o que acontece quando o Programa B está indisponível?

A chamada falha.

O Programa A precisa decidir:

  • repetir;

  • esperar;

  • registrar o erro;

  • desistir;

  • gravar a informação em algum arquivo;

  • avisar um operador;

  • criar sua própria lógica de recuperação.

Agora multiplique isso por centenas de aplicações.

Sem uma camada de mensageria, cada sistema começa a implementar sua própria tentativa de entrega.

O resultado é um ambiente frágil e fortemente acoplado.

Se o destino muda de endereço, o remetente precisa ser alterado.

Se o destino fica indisponível, o remetente sofre.

Se o tráfego aumenta, ambos podem entrar em colapso juntos.

É como colocar todos os passageiros no mesmo veículo sem freio de emergência.

O IBM MQ introduz uma fila entre os sistemas:

PROGRAMA-A
     ↓
   FILA MQ
     ↓
PROGRAMA-B

Agora, o Programa A entrega a mensagem ao MQ.

O Programa B pode consumi-la depois.

Os dois programas não precisam estar ativos ao mesmo tempo.

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


3. O Queue Manager: o centro de controle da operação

O principal componente do IBM MQ é o Queue Manager.

Ele administra os objetos do ambiente MQ:

  • filas;

  • canais;

  • listeners;

  • tópicos;

  • assinaturas;

  • processos;

  • segurança;

  • logs;

  • persistência;

  • conexões.

Uma analogia útil é imaginar o Queue Manager como o centro de controle de tráfego de uma grande cidade.

Os veículos são mensagens.

As filas são áreas de espera.

Os canais são estradas.

Os listeners são portões de entrada.

Os logs são as caixas-pretas que registram o que aconteceu.

O Queue Manager garante que cada elemento funcione segundo uma configuração conhecida.

Dois Queue Managers podem se comunicar pela rede:

QUEUE MANAGER A
        │
        │ Canal MQ
        │
QUEUE MANAGER B

O Queue Manager A pode estar em um mainframe no Brasil.

O Queue Manager B pode estar em um servidor Linux em outro país.

Para o IBM MQ, essa diferença de plataforma é apenas parte da rota.


4. Local Queue: o lugar onde a mensagem realmente espera

A Local Queue é uma fila que pertence ao Queue Manager atual e pode armazenar mensagens.

Exemplo:

PAGAMENTOS.ENTRADA

Uma aplicação produtora executa um MQPUT.

A mensagem é colocada na fila.

Uma aplicação consumidora executa um MQGET.

A mensagem é retirada.

O fluxo básico é:

Aplicação produtora
        ↓ MQPUT
Local Queue
        ↓ MQGET
Aplicação consumidora

No COBOL com MQ, os verbos mais importantes da API são chamados por meio de rotinas como:

CALL 'MQCONN'
CALL 'MQOPEN'
CALL 'MQPUT'
CALL 'MQGET'
CALL 'MQCLOSE'
CALL 'MQDISC'

Em uma visão simplificada:

CALL 'MQPUT' USING
    HCONN
    HOBJ
    MQMD
    MQPMO
    MESSAGE-LENGTH
    MESSAGE-BUFFER
    COMPLETION-CODE
    REASON-CODE.

Não é necessário decorar tudo imediatamente.

Para o iniciante, o mais importante é compreender a sequência:

Conectar
Abrir a fila
Colocar ou retirar a mensagem
Fechar a fila
Desconectar

Parece com o tratamento de arquivos:

OPEN
READ ou WRITE
CLOSE

A diferença é que agora estamos lidando com mensageria transacional.


5. Remote Queue: uma placa apontando para outro lugar

A Remote Queue Definition costuma confundir iniciantes.

Apesar do nome, ela não é uma fila que guarda mensagens.

Ela é uma definição local que aponta para uma fila existente em outro Queue Manager.

Imagine uma placa:

DESTINO: FILA.PEDIDOS
LOCALIZAÇÃO: QM-B
ROTA: XMITQ.QM-B

Quando a aplicação coloca uma mensagem nessa definição remota, o Queue Manager identifica que o destino não está localmente disponível.

A mensagem precisa viajar.

Para isso, ela será colocada em uma Transmission Queue.

A Remote Queue é mais parecida com um endereço lógico do que com uma caixa postal real.


6. Transmission Queue: a pista de aceleração

A Transmission Queue, normalmente chamada de XMITQ, armazena temporariamente mensagens destinadas a outro Queue Manager.

Fluxo:

Aplicação
    ↓
Remote Queue
    ↓
Transmission Queue
    ↓
Sender Channel
    ↓
Rede
    ↓
Receiver Channel
    ↓
Fila local no destino

Imagine que o canal esteja parado.

As mensagens não desaparecem.

Elas permanecem na Transmission Queue.

Quando o canal volta a funcionar, o transporte continua.

Essa capacidade é fundamental para a resiliência.

Em uma integração direta, uma interrupção de rede pode provocar erro imediato.

No MQ, a indisponibilidade temporária pode ser absorvida pela fila.

Entretanto, existe um detalhe importante:

Uma Transmission Queue crescendo continuamente é um sinal de que algo na rota precisa ser investigado.

Possíveis causas:

  • Sender Channel parado;

  • Receiver Channel indisponível;

  • falha de rede;

  • erro de segurança;

  • Queue Manager remoto desligado;

  • configuração incorreta;

  • problema de certificado TLS.

No mundo de velocidade máxima, a XMITQ é a pista onde os veículos se acumulam quando a ponte à frente está fechada.


7. Sender e Receiver Channel: a dupla que atravessa a rede

Os canais de mensagem transportam dados entre Queue Managers.

Uma configuração clássica utiliza:

SDR — Sender Channel
RCVR — Receiver Channel

O Sender Channel inicia o envio.

O Receiver Channel aceita as mensagens no destino.

Exemplo:

QM-A                               QM-B

XMITQ.QM-B
     ↓
CANAL.A.B SDR  ───────────────▶  CANAL.A.B RCVR
                                     ↓
                                FILA.DESTINO

Os nomes normalmente precisam corresponder.

O Sender pode conter informações como:

  • endereço do host remoto;

  • porta;

  • nome da XMITQ;

  • parâmetros de retry;

  • configuração TLS;

  • opções de batch;

  • sequência de mensagens.

O Receiver define o lado que recebe a conexão.

Uma diferença importante:

O canal não é a fila.

A fila armazena.

O canal transporta.

Confundir esses conceitos é como confundir a garagem com a estrada.


8. SVRCONN: o portão usado pelas aplicações clientes

Muitas aplicações não estão instaladas na mesma máquina do Queue Manager.

Elas se conectam remotamente usando o IBM MQ Client.

Para isso, normalmente utilizam um canal do tipo:

SVRCONN

ou Server-Connection Channel.

Fluxo:

Aplicação Java, COBOL, .NET ou Python
             ↓ TCP/IP
          SVRCONN
             ↓
        Queue Manager

A aplicação precisa saber dados como:

Host
Porta
Queue Manager
Nome do canal SVRCONN

Exemplo conceitual:

Host: mqempresa.exemplo
Porta: 1414
Canal: APP.PAGAMENTOS.SVRCONN
QMGR:  QMPROD01

O SVRCONN não transporta mensagens entre Queue Managers.

Ele permite que uma aplicação cliente acesse um Queue Manager.

Esse é outro ponto onde iniciantes frequentemente se confundem.

SDR/RCVR     → comunicação entre Queue Managers
SVRCONN      → conexão de aplicações clientes

9. Listener: alguém precisa atender a porta

O Listener fica aguardando conexões de rede em uma porta TCP.

Uma porta muito conhecida no universo MQ é a 1414, embora cada ambiente possa utilizar outra.

Sem Listener ativo, uma aplicação remota pode receber erro de conexão.

Fluxo:

Cliente
   ↓
TCP/IP
   ↓
Listener
   ↓
Canal
   ↓
Queue Manager

No diagnóstico, é necessário verificar:

  • o Listener está iniciado?

  • a porta está correta?

  • existe firewall bloqueando?

  • o endereço está acessível?

  • o canal está definido?

  • o Queue Manager está ativo?

O canal pode estar perfeitamente configurado, mas, se ninguém estiver ouvindo na porta, não haverá conexão.

É como chegar ao ponto combinado e descobrir que a porta do ônibus está trancada.


10. Dead-Letter Queue: o destino das mensagens problemáticas

A Dead-Letter Queue, ou DLQ, recebe mensagens que não puderam ser entregues corretamente.

Ela não deve ser vista como uma lixeira.

É mais adequado considerá-la uma área de quarentena.

Uma mensagem pode ir para a DLQ por vários motivos:

  • fila destino inexistente;

  • fila cheia;

  • erro de autorização;

  • nome de destino incorreto;

  • rota não encontrada;

  • Queue Manager desconhecido;

  • falha durante encaminhamento.

Quando o MQ coloca uma mensagem na DLQ, normalmente adiciona um cabeçalho chamado:

MQDLH

O MQ Dead-Letter Header contém informações sobre o motivo da falha e o destino original.

Isso permite investigar e, em alguns casos, reprocessar a mensagem.

Uma DLQ crescendo sem monitoração é perigosa.

As mensagens continuam existindo, mas o negócio pode estar parado.

Imagine mensagens de pedidos chegando à DLQ enquanto os clientes acreditam que suas compras estão sendo processadas.

A tecnologia preservou os dados.

A operação, porém, precisa responder ao alerta.


11. Persistência: a mensagem sobrevive ao acidente

Uma mensagem MQ pode ser persistente ou não persistente.

Mensagem persistente foi criada para sobreviver a falhas do Queue Manager, desde que o ambiente esteja corretamente configurado.

Ela utiliza mecanismos de log e armazenamento.

Conceitualmente:

MQPUT
  ↓
Registro em log
  ↓
Armazenamento
  ↓
Confirmação

Se o servidor for reiniciado, a mensagem persistente pode ser recuperada.

Uma mensagem não persistente oferece melhor desempenho em alguns cenários, mas pode não sobreviver a determinadas falhas.

A escolha depende do valor de negócio da informação.

Para uma telemetria descartável, perder uma mensagem pode ser aceitável.

Para uma transação financeira, provavelmente não.

Regra Bellacosa:

Antes de escolher persistência, pergunte qual seria o impacto de perder aquela mensagem.

Não escolha apenas pensando em velocidade.

Escolha pensando em risco.


12. Unidade de trabalho e syncpoint

O IBM MQ pode participar de transações.

Imagine o seguinte fluxo:

  1. Retirar mensagem de uma fila;

  2. atualizar uma tabela Db2;

  3. colocar mensagem de confirmação em outra fila;

  4. confirmar tudo junto.

Se algo falhar, queremos evitar este desastre:

Mensagem retirada da fila
Banco não atualizado
Mensagem perdida

Com controle transacional, é possível utilizar syncpoint.

Conceitualmente:

MQGET sob syncpoint
        ↓
UPDATE Db2
        ↓
MQPUT resposta
        ↓
COMMIT

Se ocorrer erro:

ROLLBACK

A mensagem pode voltar a ficar disponível na fila.

Em COBOL, CICS e ambientes transacionais, essa integração é extremamente importante.

No CICS, o MQ pode participar da unidade lógica de trabalho administrada pelo próprio CICS.

É uma das razões pelas quais IBM MQ, CICS e Db2 formam uma combinação tão forte no mainframe.


13. A armadilha do “exactly once”

Muitas pessoas dizem:

O MQ entrega exatamente uma vez.

Essa frase exige cuidado.

O IBM MQ oferece mecanismos robustos de entrega e transação, mas a arquitetura da aplicação também precisa estar correta.

Imagine:

  1. consumidor retira uma mensagem;

  2. atualiza um sistema externo;

  3. falha antes de confirmar o MQ;

  4. a mensagem fica disponível novamente;

  5. consumidor processa de novo.

Agora temos possível duplicidade.

Por isso, aplicações críticas utilizam técnicas como:

  • syncpoint;

  • controle de transação;

  • identificador único;

  • idempotência;

  • tabela de mensagens processadas;

  • deduplicação;

  • correlação.

Idempotência significa que processar a mesma solicitação duas vezes produz o mesmo resultado final.

Exemplo:

Definir saldo para R$ 100,00

é idempotente.

Já:

Adicionar R$ 100,00 ao saldo

não é necessariamente idempotente.

Se a mensagem for repetida, o valor poderá ser adicionado duas vezes.

O MQ fornece a estrada segura.

A aplicação ainda precisa dirigir corretamente.


14. Message ID e Correlation ID

Cada mensagem pode possuir um identificador chamado:

MSGID

Também existe o:

CORRELID

O Correlation ID é útil em padrões de requisição e resposta.

Exemplo:

Aplicação A
    ↓
Mensagem de requisição
MSGID = ABC123
    ↓
Aplicação B
    ↓
Mensagem de resposta
CORRELID = ABC123

A aplicação A pode procurar a resposta associada ao pedido original.

Isso é especialmente útil quando várias requisições estão sendo processadas ao mesmo tempo.

Sem correlação, seria como receber dezenas de respostas sem saber a qual pergunta cada uma pertence.


15. Reply-to Queue: para onde a resposta deve voltar?

Uma mensagem pode indicar:

ReplyToQ
ReplyToQMgr

Esses campos informam ao consumidor onde colocar a resposta.

Exemplo:

Pedido:
  Processar pagamento

ReplyToQ:
  PAGAMENTO.RESPOSTA.APP01

O consumidor processa e devolve:

Pagamento aprovado

Esse padrão permite requisição e resposta sem criar uma conexão síncrona tradicional.

No entanto, deve-se tomar cuidado para não transformar o MQ em uma falsa chamada REST, bloqueando a aplicação por muito tempo.

A mensageria brilha especialmente quando aceitamos seu modelo assíncrono.


16. Backout Queue: quando a mensagem volta muitas vezes

Imagine uma mensagem inválida.

O consumidor tenta processar.

Falha.

Executa rollback.

A mensagem volta para a fila.

O consumidor tenta novamente.

Falha outra vez.

Isso pode criar um ciclo infinito.

GET
 ↓
ERRO
 ↓
ROLLBACK
 ↓
GET
 ↓
ERRO
 ↓
ROLLBACK

Esse comportamento é conhecido como mensagem venenosa, ou poison message.

Para lidar com isso, podemos utilizar:

  • BOTHRESH, o limite de backout;

  • BOQNAME, a fila de backout;

  • lógica na aplicação para verificar o contador.

Depois de determinado número de falhas, a mensagem pode ser movida para uma fila específica:

PAGAMENTOS.BACKOUT

Assim, o fluxo normal continua e a mensagem problemática pode ser analisada separadamente.

Easter egg para os veteranos:

Quando a mesma mensagem retorna pela terceira vez, ela já não é mais passageira. Ela está tentando dirigir o ônibus.


17. Profundidade da fila: o velocímetro do ambiente

Um dos indicadores mais observados é o CURDEPTH.

Ele mostra quantas mensagens estão atualmente na fila.

Também existe o MAXDEPTH, que define o limite máximo.

Exemplo:

CURDEPTH:  75.000
MAXDEPTH: 100.000

Uma profundidade alta não significa automaticamente problema.

Pode ser normal durante uma janela batch.

O importante é observar comportamento e contexto.

Perguntas úteis:

  • a profundidade cresce continuamente?

  • o consumidor está ativo?

  • a taxa de entrada é maior que a de saída?

  • o aumento ocorre sempre no mesmo horário?

  • existe atraso aceitável?

  • quanto tempo falta para atingir o limite?

  • as mensagens são antigas?

É necessário monitorar não apenas quantidade, mas também idade.

Uma fila com dez mensagens paradas há seis horas pode ser mais crítica do que uma fila com cinquenta mil mensagens processadas em segundos.


18. Quando o consumidor fica mais lento que o produtor

Considere:

Produtor:   1.000 mensagens por segundo
Consumidor:   800 mensagens por segundo

A cada segundo:

200 mensagens ficam acumuladas.

Em uma hora:

200 × 3.600 = 720.000 mensagens

O MQ está funcionando corretamente.

A fila está apenas revelando um desequilíbrio da arquitetura.

Possíveis soluções:

  • otimizar o consumidor;

  • aumentar o número de consumidores;

  • dividir o processamento;

  • utilizar múltiplas instâncias;

  • ajustar conexões;

  • rever commits;

  • remover gargalos de banco;

  • melhorar o modelo de mensagens.

O IBM MQ não cria capacidade infinita.

Ele absorve diferenças temporárias.

Se o consumidor permanecer permanentemente mais lento, a fila acabará atingindo algum limite físico ou operacional.


19. O perigo dos commits muito frequentes

Imagine um consumidor que processa uma mensagem e faz commit.

Depois processa outra e faz commit novamente.

Mensagem 1 → COMMIT
Mensagem 2 → COMMIT
Mensagem 3 → COMMIT

Isso oferece excelente isolamento, mas pode aumentar o custo de log e I/O.

Outra opção é processar lotes:

100 mensagens → COMMIT

O desempenho pode melhorar.

Porém, se ocorrer falha, até cem mensagens poderão ser reapresentadas, dependendo da unidade de trabalho.

A escolha precisa equilibrar:

  • desempenho;

  • risco;

  • tempo de recuperação;

  • possibilidade de duplicação;

  • tamanho da transação;

  • bloqueios;

  • consumo de recursos.

Não existe número mágico universal.

Teste com carga realista.


20. Segurança: ninguém entra no ônibus sem autorização

IBM MQ oferece vários níveis de segurança.

É possível controlar:

  • quem conecta;

  • quem abre uma fila;

  • quem coloca mensagens;

  • quem retira;

  • quem consulta;

  • quem administra objetos;

  • quem inicia canais;

  • quem altera configurações.

Em z/OS, a integração com RACF é particularmente importante.

Em outras plataformas, o Object Authority Manager participa do controle de acesso.

Um erro muito conhecido é:

MQRC_NOT_AUTHORIZED
Reason Code 2035

O código 2035 é praticamente um personagem recorrente nas histórias de IBM MQ.

Ele indica que a operação não foi autorizada.

Ao investigar, verifique:

  • identidade utilizada;

  • autorização no objeto;

  • regras de channel authentication;

  • mapeamento de usuário;

  • contexto da aplicação;

  • configuração do canal;

  • políticas TLS.

Nunca resolva permanentemente um 2035 concedendo acesso total sem entender a causa.

Isso seria como remover todas as portas do ônibus para facilitar a entrada.


21. TLS: protegendo a mensagem durante a viagem

Canais MQ podem utilizar TLS para proteger a comunicação.

TLS oferece:

  • criptografia;

  • integridade;

  • autenticação;

  • proteção contra interceptação.

A configuração pode envolver:

  • certificados digitais;

  • key repositories;

  • CipherSpecs;

  • identificação do parceiro;

  • renovação de certificados;

  • regras de validação.

Uma causa frequente de incidentes é certificado expirado.

O canal funcionou durante meses.

Então, em uma madrugada aparentemente tranquila:

CHANNEL STATUS: RETRYING

A investigação revela:

Certificate expired.

Dica operacional:

Certificados devem ser monitorados antes do vencimento, não depois da interrupção.

Não espere o ônibus chegar à ponte quebrada para procurar o manual.


22. MQ Cluster: várias rotas para o mesmo destino

Um cluster MQ facilita a conectividade entre Queue Managers.

Sem cluster, cada relação pode exigir definições explícitas.

Com cluster, objetos e rotas podem ser divulgados entre participantes.

Canais típicos:

CLUSSDR
CLUSRCVR

Um cluster pode ajudar em:

  • distribuição de carga;

  • redução de definições manuais;

  • disponibilidade;

  • descoberta de filas;

  • expansão do ambiente.

Entretanto, cluster não é magia.

Ele precisa de:

  • naming standards;

  • full repositories bem administrados;

  • monitoração;

  • segurança;

  • planejamento de carga;

  • conhecimento de afinidade.

Uma mensagem enviada para uma fila clusterizada pode ser distribuída entre diferentes instâncias.

Mas, se a aplicação depende de todas as mensagens do mesmo cliente chegarem ao mesmo consumidor, será necessário considerar afinidade, agrupamento e ordenação.


23. Alta disponibilidade não é o mesmo que recuperação de desastre

Esses conceitos frequentemente são misturados.

Alta disponibilidade busca reduzir interrupções locais.

Disaster Recovery trata da recuperação diante de perda mais ampla do ambiente.

Soluções MQ podem envolver:

  • Queue Manager multi-instance;

  • RDQM;

  • clusters;

  • replicação;

  • armazenamento compartilhado;

  • IBM MQ Appliance;

  • Sysplex e Shared Queues no z/OS;

  • ambientes alternativos de recuperação.

Mas possuir dois servidores não significa automaticamente possuir alta disponibilidade.

É preciso testar:

  • failover;

  • tempo de recuperação;

  • consistência;

  • DNS;

  • canais;

  • certificados;

  • aplicações clientes;

  • procedimentos operacionais.

O melhor plano de recuperação é aquele que já foi executado em teste.

Um documento perfeito que nunca foi testado é apenas literatura de suspense.


24. IBM MQ no z/OS

No mainframe, o IBM MQ se integra profundamente ao ecossistema IBM Z.

Pode trabalhar com:

  • CICS;

  • IMS;

  • Db2;

  • RACF;

  • Sysplex;

  • Coupling Facility;

  • batch COBOL;

  • aplicações Java;

  • serviços de integração.

No z/OS, filas compartilhadas podem utilizar estruturas na Coupling Facility.

Isso permite que diferentes Queue Managers de um Queue Sharing Group acessem filas compartilhadas.

Conceitualmente:

QM1 ─┐
     ├── Shared Queue
QM2 ─┤   na Coupling Facility
     │
QM3 ─┘

Essa arquitetura oferece alta disponibilidade e escalabilidade excepcionais.

Se um Queue Manager ficar indisponível, outro pode continuar processando mensagens da fila compartilhada.

Para organizações financeiras, governamentais e de telecomunicações, isso pode ser decisivo.


25. Um exemplo completo: pagamento de cartão

Vamos acompanhar uma mensagem.

O cliente compra um produto de R$ 250,00.

A aplicação de vendas cria uma solicitação:

{
  "transacao": "984532",
  "cliente": "4711",
  "valor": 250.00,
  "moeda": "BRL"
}

A aplicação envia para:

PAGAMENTO.REQUISICAO

O MQ grava a mensagem.

O consumidor de pagamentos está temporariamente ocupado.

A mensagem espera.

Alguns segundos depois, o consumidor faz MQGET.

Ele consulta o sistema financeiro.

Depois envia uma resposta:

{
  "transacao": "984532",
  "status": "APROVADA",
  "autorizacao": "AZ9182"
}

A resposta é colocada em:

PAGAMENTO.RESPOSTA

A aplicação de vendas recebe a confirmação.

Durante todo o processo, o MQ forneceu:

  • armazenamento temporário;

  • desacoplamento;

  • persistência;

  • correlação;

  • controle transacional;

  • segurança;

  • recuperação.

O IBM MQ não aprovou a compra.

Ele garantiu que o pedido e a resposta viajassem de forma controlada.


26. Passo a passo para investigar uma fila crescendo

Quando uma fila começa a acumular mensagens, não entre diretamente no modo pânico.

Siga uma sequência.

Passo 1 — Identifique a fila

Verifique:

CURDEPTH
MAXDEPTH
IPPROCS
OPPROCS

IPPROCS indica quantos processos possuem a fila aberta para entrada.

OPPROCS indica quantos possuem a fila aberta para saída.

Se IPPROCS for zero, talvez não exista consumidor conectado.

Passo 2 — Observe a tendência

A fila está:

  • crescendo;

  • estabilizada;

  • diminuindo;

  • oscilando?

Faça medições em intervalos.

Passo 3 — Verifique o consumidor

O processo está ativo?

Existem erros?

Ele está conectado ao Queue Manager correto?

Está lendo a fila correta?

Passo 4 — Verifique mensagens antigas

Qual é a idade da mensagem mais antiga?

Mensagens antigas podem indicar paralisação silenciosa.

Passo 5 — Verifique dependências

O consumidor pode estar ativo, porém preso em:

  • Db2;

  • API externa;

  • arquivo;

  • lock;

  • timeout;

  • serviço remoto.

Passo 6 — Avalie a taxa

Entrada:

1.500 mensagens/s

Saída:

900 mensagens/s

A fila continuará crescendo mesmo com consumidor ativo.

Passo 7 — Planeje a intervenção

Possibilidades:

  • reiniciar consumidor;

  • aumentar instâncias;

  • corrigir dependência;

  • pausar produtor, quando permitido;

  • elevar temporariamente limites;

  • mover mensagens;

  • ativar contingência.

Nunca remova mensagens de produção sem compreender seu valor de negócio.


27. Passo a passo para investigar um canal parado

Quando um canal Sender não está transmitindo:

1. Consulte o status

Estados comuns:

RUNNING
RETRYING
STOPPED
INACTIVE
BINDING

2. Verifique o Queue Manager remoto

Ele está ativo?

3. Teste a rede

O host responde?

A porta está aberta?

Existe firewall?

4. Verifique o Listener

O Listener remoto está iniciado?

5. Analise os logs

Procure erros de:

  • TLS;

  • autenticação;

  • sequência;

  • conexão;

  • autorização;

  • nome de canal.

6. Verifique a XMITQ

Ela está crescendo?

7. Evite reiniciar cegamente

Reiniciar pode mascarar o problema.

Primeiro capture evidências.

Depois execute a ação.

A diferença entre troubleshooting e superstição é a coleta de evidências.


28. Modernização não significa remover o MQ

Muitas empresas confundem modernização com substituição total.

Elas imaginam:

Legado = ruim
Cloud = bom
Fila = antiga
API = moderna

A realidade é muito mais sofisticada.

IBM MQ pode integrar:

  • mainframes;

  • microsserviços;

  • APIs;

  • nuvem híbrida;

  • containers;

  • sistemas SaaS;

  • eventos corporativos.

Modernizar pode significar:

  • automatizar deploy;

  • melhorar observabilidade;

  • atualizar versões;

  • usar REST Administration API;

  • integrar com Ansible;

  • adotar containers onde fizer sentido;

  • fortalecer segurança;

  • padronizar objetos;

  • implementar Infrastructure as Code;

  • reduzir configurações manuais.

O MQ não precisa desaparecer para a empresa se modernizar.

Em muitos casos, ele é justamente a camada que permite modernizar sem interromper sistemas críticos.


29. MQ versus REST

REST costuma ser síncrono.

Cliente → Requisição → Servidor
Cliente ← Resposta  ← Servidor

O cliente espera.

Se o servidor estiver indisponível, a requisição pode falhar.

MQ é frequentemente assíncrono.

Produtor → Fila
                 → Consumidor

O produtor entrega a mensagem e pode continuar.

Nenhuma tecnologia é universalmente melhor.

REST é excelente para:

  • consultas imediatas;

  • interação de usuário;

  • operações simples;

  • APIs públicas;

  • resposta rápida.

MQ é excelente para:

  • desacoplamento;

  • entrega confiável;

  • absorção de picos;

  • processamento assíncrono;

  • transações;

  • integração corporativa.

Uma arquitetura moderna pode utilizar os dois:

Aplicativo
    ↓ REST
API
    ↓ MQ
Processamento corporativo

A API recebe a solicitação.

O MQ garante o processamento interno.


30. MQ versus Kafka

Kafka e MQ também não são equivalentes.

IBM MQ é tradicionalmente orientado à entrega confiável de mensagens e filas.

Kafka é orientado a logs distribuídos e eventos retidos.

No MQ, normalmente uma mensagem é consumida e removida da fila.

No Kafka, eventos permanecem por um período configurado e podem ser relidos.

MQ é muito forte em:

  • transações;

  • point-to-point;

  • integração empresarial;

  • garantia de entrega;

  • controle fino;

  • sistemas críticos.

Kafka é muito forte em:

  • streaming;

  • replay;

  • analytics;

  • event sourcing;

  • grande volume de eventos;

  • múltiplos consumidores independentes.

Empresas maduras podem usar ambos.

O erro está em transformar uma escolha arquitetural em disputa de torcida.


31. Dicas Bellacosa para o programador COBOL iniciante

Primeira dica:

Aprenda a diferença entre fila, canal e Queue Manager.

Segunda:

Sempre examine COMP-CODE e REASON-CODE.

Exemplo:

IF COMPLETION-CODE NOT = MQCC-OK
    DISPLAY 'ERRO MQ'
    DISPLAY 'COMP CODE: ' COMPLETION-CODE
    DISPLAY 'REASON:    ' REASON-CODE
END-IF

Terceira:

Não trate toda ausência de mensagem como erro.

Um MQGET pode retornar:

MQRC_NO_MSG_AVAILABLE
2033

Em muitos programas, isso apenas significa que não havia mensagem naquele momento.

Quarta:

Defina timeout conscientemente.

Um consumidor pode:

  • esperar indefinidamente;

  • esperar alguns segundos;

  • retornar imediatamente.

Quinta:

Compreenda syncpoint antes de processar mensagens financeiras.

Sexta:

Não grave mensagens sensíveis em logs sem mascaramento.

Sétima:

Documente o caminho completo.

Aplicação → Fila → Canal → Queue Manager → Fila → Consumidor

O mapa da mensagem é essencial durante incidentes.


32. Curiosidades do universo IBM MQ

O produto surgiu originalmente como MQSeries, no início da década de 1990.

Depois foi conhecido como:

WebSphere MQ

e voltou a ser chamado de:

IBM MQ

O nome mudou.

A missão permaneceu.

O MQ suporta múltiplas plataformas, como:

  • z/OS;

  • Linux;

  • Windows;

  • AIX;

  • IBM i;

  • containers;

  • appliances.

Uma mensagem pode nascer em um programa COBOL de décadas atrás e terminar em um microsserviço criado nesta semana.

Esse é um dos superpoderes silenciosos da mensageria empresarial.

Outro detalhe curioso é que os códigos de razão se tornam parte do vocabulário dos especialistas.

Você poderá ouvir frases como:

“Deu 2035.”
“Temos 2059.”
“A aplicação recebeu 2085.”

Para quem está de fora, parece uma conversa de agentes secretos.

Para quem trabalha com MQ:

2035 = não autorizado
2059 = Queue Manager indisponível
2085 = nome de objeto desconhecido

Easter egg:

Quando você começa a reconhecer códigos MQ antes mesmo de ler a descrição, oficialmente recebeu sua carteira de motorista da mensageria corporativa.


33. A grande lição

IBM MQ não é apenas um software de filas.

Ele representa uma filosofia de arquitetura.

Essa filosofia diz:

  • aplicações não precisam estar disponíveis ao mesmo tempo;

  • falhas temporárias podem ser absorvidas;

  • mensagens importantes não devem desaparecer;

  • produtores e consumidores podem evoluir separadamente;

  • picos podem ser amortecidos;

  • transações precisam de controle;

  • integração deve ser observável e segura.

O MQ aceita uma verdade que muitos sistemas modernos tentam ignorar:

Tudo falha em algum momento.

A rede falha.

O servidor reinicia.

A aplicação trava.

O certificado expira.

O banco fica lento.

O consumidor para.

A arquitetura resiliente não é aquela que acredita que nada falhará.

É aquela que sabe o que fazer quando a falha chegar.


Conclusão: mantenha a mensagem em movimento

No filme Velocidade Máxima, a tensão nasce porque o ônibus precisa continuar andando.

No IBM MQ, a mensagem precisa continuar avançando, mas não necessariamente sem parar.

Essa é a genialidade.

Se a estrada estiver bloqueada, ela pode esperar na Transmission Queue.

Se o consumidor estiver indisponível, ela pode permanecer na Local Queue.

Se o destino estiver errado, ela pode ser preservada na Dead-Letter Queue.

Se o processamento falhar, ela pode retornar por rollback.

Se a aplicação cliente estiver distante, ela pode entrar por um SVRCONN.

Se dois Queue Managers estiverem separados pela rede, Sender e Receiver Channels podem construir a ponte.

O MQ não promete que servidores nunca cairão.

Ele promete oferecer mecanismos para que a informação sobreviva às quedas.

Para o programador COBOL iniciante, estudar IBM MQ é aprender que integração não significa apenas chamar outro programa.

Significa pensar em:

  • tempo;

  • disponibilidade;

  • transação;

  • persistência;

  • segurança;

  • repetição;

  • recuperação;

  • observabilidade;

  • capacidade;

  • responsabilidade operacional.

Na próxima vez que alguém disser que o IBM MQ é apenas uma fila, olhe novamente para a arquitetura.

Ali existem rotas, depósitos, postos de controle, registros, certificados, mecanismos de recuperação e centros de comando.

Tudo trabalhando silenciosamente para que uma transação atravesse sistemas, plataformas e continentes.

O usuário pressiona um botão.

A aplicação executa um MQPUT.

A mensagem entra na fila.

O canal inicia a viagem.

O destino recebe.

O consumidor processa.

O commit confirma.

E, em algum centro de operações, um analista olha para o painel e percebe que o CURDEPTH finalmente começou a cair.

197.842
154.990
 92.400
 21.870
      0

O ônibus está seguro.

A fila foi drenada.

A transação chegou.

E o café, embora já esteja frio, ainda está sobre a mesa do Bellacosa Mainframe.

segunda-feira, 6 de agosto de 2018

🐔 Coxinha Paulista: o mainframe dourado da comida de boteco

 


🐔 Coxinha Paulista: o mainframe dourado da comida de boteco

Por Vagner Bellacosa ☕🔥

Antes do hambúrguer gourmet, antes do food truck e antes do brunch, o paulistano já sabia o que era felicidade empacotada: uma coxinha quente, crocante e pingando azeite no guardanapo.
Pequena por fora, épica por dentro.
A coxinha é a transação atômica da gastronomia brasileira — uma unidade indivisível de prazer.

Mas, como todo clássico, ela nasceu de uma mistura de improviso, engenho e fofoca histórica.




🏰 A origem (ou a lenda real da coxinha)

Dizem que tudo começou no final do século XIX, no interior de São Paulo, na fazenda de Limeira, que pertencia à família imperial de Dom Pedro II.
A história é quase de novela:
O filho da princesa Isabel, o pequeno Pedro Augusto, tinha hábitos alimentares peculiares — só comia coxas de frango.

Um dia, faltou frango suficiente para atender ao desejo real.
A cozinheira do palácio, com espírito de programadora criativa diante de um abend, decidiu improvisar:
desfiou o resto do frango, moldou em formato de coxa, envolveu na massa e fritou.
Nascia ali a primeira coxinha da história, versão beta, testada e aprovada pela monarquia.

O resto é deploy: da fazenda imperial, o salgado viajou para padarias, fábricas e botecos paulistanos, onde ganhou o formato, o recheio e a glória popular que conhecemos hoje.




🍗 A arquitetura de uma coxinha bem projetada

Um engenheiro chamaria de sistema em camadas:

  • Núcleo: frango desfiado (a lógica de negócio).

  • Revestimento: massa de batata e farinha (a camada de aplicação).

  • Empanamento: farinha de rosca (a camada de segurança).

  • Fritura: óleo borbulhante (o ambiente de produção).

O formato de lágrima é pura simbologia paulistana: uma gota de ouro saindo da frigideira, pronta para fazer rollback em qualquer tristeza.


🏙️ A expansão e os forks regionais

Em São Paulo, a coxinha é rainha das padarias, servida com café pingado, ketchup suspeito e conversa fiada.
Mas o sistema se espalhou pelo país e foi ganhando customizações de ambiente:

  • Coxinha de catupiry, nascida em São Paulo nos anos 1990, virou padrão de mercado;

  • Mini coxinhas — a versão microserviço do salgado;

  • Coxinha vegana, com jaca no lugar do frango (prova de que até o código legado pode ser refatorado).

Em cada esquina, uma variação. Em cada boteco, um log de fritura.
E todas giram em torno do mesmo princípio: crocância como SLA.


💬 Curiosidades e folclore

  • Em 1950, fábricas como a Perdigão e Sadia industrializaram a coxinha, tornando-a item obrigatório em festas e padarias.

  • O formato lembra o teardrop de design industrial dos anos 50 — elegante, funcional e aerodinâmico.

  • Há quem diga que a coxinha é o “pão francês dos salgados”: universal, confiável e de rápida integração social.

  • O segredo da boa coxinha é o delay da fritura — 30 segundos a mais, e o sistema colapsa.


Bellacosa comenta

A coxinha é o mainframe dos salgados brasileiros — confiável, resiliente e em operação contínua há mais de 100 anos.
Ninguém sabe ao certo onde termina o mito e começa a história, mas uma coisa é certa:
Enquanto houver balcão de padaria, vidro embaçado e café forte, a coxinha seguirá rodando em produção — sem bug, sem update, e com uptime de sabor eterno.


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