Translate

segunda-feira, 16 de abril de 2018

🔥 Tsundere: o amor que disfarça com tapas

Bellacosa Mainframe e a tsundere do anime


 🔥 Tsundere: o amor que disfarça com tapas

Entre tantos arquétipos marcantes dos animes, nenhum é tão icônico — e tão mal compreendido — quanto o tsundere. Aquele personagem que age com grosseria, mas cujo coração grita amor. É o “não é como se eu gostasse de você, baka!” que virou lenda no mundo otaku.


💢 O que significa “tsundere”?

A palavra vem da fusão de dois termos japoneses:

  • Tsun (ツン) — de tsuntsun, que significa “irritado”, “arrogante”, “frio”.

  • Dere (デレ) — de deredere, que significa “apaixonado”, “carinhoso”.

Ou seja: tsundere (ツンデレ) é aquele que oscila entre a frieza e o carinho, entre o tapa e o afago.
No fundo, é um personagem que não sabe lidar com os próprios sentimentos — então esconde o amor por trás de uma fachada ríspida.


❤️ A essência do tsundere

O tsundere é o retrato da negação emocional. Ama, mas não admite. Quer cuidar, mas disfarça. É o tipo que xinga você por estar atrasado, mas estava esperando ansiosamente há meia hora.

Em narrativas, o tsundere representa o amadurecimento do afeto: mostra que o amor não surge pronto, ele se constrói entre orgulho e vulnerabilidade.


🎭 Características típicas

  • Responde com raiva ou sarcasmo a qualquer demonstração de carinho.

  • Age como se não ligasse, mas observa cada detalhe.

  • Fica visivelmente embaraçado quando o relacionamento avança.

  • Muitas vezes tem duas fases: a “tsun” (fria, irritada) e a “dere” (doce, aberta).

  • A transformação da primeira para a segunda é o que cativa o público.


🌸 Origem e evolução

O termo “tsundere” começou a se popularizar nos fóruns japoneses do início dos anos 2000, principalmente entre fãs de visual novels e animes românticos.
A ideia surgiu como uma brincadeira, mas o arquétipo rapidamente virou um símbolo da cultura moe — aquela ternura fofa e atrapalhada que derrete o coração.

Com o tempo, o tsundere ganhou várias subversões: versões masculinas, adultas, até vilãs que escondem o amor por trás da rigidez. É o tipo de personagem que existe em qualquer era — afinal, quem nunca escondeu o que sentia?


💫 Exemplo clássico

Taiga Aisaka, de Toradora! (2008), é o rosto do tsundere moderno.
Pequena, temperamental e agressiva, é conhecida como a “Tigresa de Bolso”.
Mas por trás do temperamento explosivo, esconde uma doçura imensa e uma solidão profunda.

Taiga agride, grita e reclama — mas quando ama, é de verdade.
Ela ensina que o tsundere não é sobre violência, e sim sobre a dificuldade de ser vulnerável.


💡 Outros tsunderes icônicos

  • Asuka Langley (Neon Genesis Evangelion) – orgulho e fragilidade em perfeita colisão.

  • Rin Tohsaka (Fate/stay night) – elegante, inteligente e orgulhosa, mas derrete por dentro.

  • Kyo Sohma (Fruits Basket) – versão masculina carismática, que equilibra raiva e ternura.

  • Misaka Mikoto (Toaru Kagaku no Railgun) – a rainha elétrica do “não é como se eu gostasse de você!”


☕ Curiosidades Bellacosa

  • O tsundere é o arquétipo mais usado em rom-coms (comédias românticas).

  • É o oposto natural do yandere — enquanto um ama demais, o outro ama “com vergonha”.

  • “Tsundere” virou até sinônimo de estilo de voz e atitude em dublagens japonesas (tsun-tsun voice).

  • Existe uma “curva tsundere”: quanto mais bravo o personagem, mais doce o payoff emocional.


💬 Reflexão Bellacosa

O tsundere é o amor travado pela própria insegurança.
É o “eu te amo” que sai como “me deixa em paz”.
É o coração que teme ser rejeitado e, por isso, ergue muralhas de orgulho.

E é justamente por isso que o tsundere é tão humano.
Porque no fundo, quem nunca disfarçou o afeto com um suspiro impaciente?


#BellacosaMainframe #Tsundere #AnimeLove #MoeCulture #Toradora #TaigaAisaka

sábado, 14 de abril de 2018

Um dos Últimos Boteco Analógico de Itatiba: Torresmo, Universitários, Original em Território Brahma e uma Pinga que Ninguém Sabe de Onde Vem

 

Bellacosa Mainframe e o bar bhrama da camilo pires

☕ Um Café no Bellacosa Mainframe

Um dos Últimos Boteco Analógico de Itatiba: Torresmo, Universitários, Original em Território Brahma e uma Pinga que Ninguém Sabe de Onde Vem

🍺 Há lugares que o Google conhece. E há lugares que Itatiba conhece.


Existe uma diferença enorme entre um bar e um boteco.

Bar pode ter branding.

Pode ter iluminação estudada, cardápio acessado por QR Code, IPA com nome de constelação, hambúrguer desconstruído e uma parede cuidadosamente preparada para você tirar uma fotografia e publicar no Instagram.

Boteco não.

Boteco simplesmente acontece.

Ele abre a porta pela manhã, alguém encosta no balcão, outro chega depois, uma cerveja aparece, alguém pergunta se fulano morreu, outro responde que não morreu coisa nenhuma, apenas mudou para Valinhos, um terceiro garante que encontrou o sujeito na semana passada e, quando você percebe, quatro homens reconstruíram quarenta anos da história municipal sem consultar uma única fonte primária.

Itatiba possui desses lugares.

E existe um deles no Centro, na Rua Coronel Camilo Pires, 441.

O endereço, pelo menos, conseguimos confirmar documentalmente: registros públicos de imóveis descrevem o nº 441 como prédio de destinação comercial e de serviços.

O resto?

Bem...

O resto pertence àquilo que existia muito antes do Google:

memória oral.

🍺 A placa diz Brahma. Eu peço Original.

Comecemos pela primeira heresia.

Na fachada existe uma enorme placa da Brahma.

Daquelas placas que não pedem licença para participar da arquitetura. Ela está lá dizendo:

BRAHMA.

O sujeito entra, olha para o balcão e pede:

— Uma Brahma?

Não.

Eu:

Me dá uma Original.

Original da Antarctica.

Porque coerência arquitetônica tem limites.

Aparentemente o boteco resolveu o problema da interoperabilidade muito antes da computação moderna:

FRONT-END....... BRAHMA
BACK-END........ BOTECO
CLIENTE......... BELLACOSA
REQUEST......... ORIGINAL ANTARCTICA
RETURN-CODE..... 00

É o verdadeiro ambiente multivendor.

Ninguém abre chamado.

Ninguém convoca reunião.

A cerveja chega gelada e seguimos o processamento.

🐷 E então aparece o verdadeiro sistema crítico: o torresmo

Porque cerveja você encontra em centenas de lugares.

Torresmo também.

Mas existe aquele torresmo que transforma um estabelecimento comercial em infraestrutura crítica municipal.

E, na minha opinião de frequentador — aqui não existe Michelin, TripAdvisor nem auditor independente —, ali mora o melhor torresmo de Itatiba.

Torresmo de boteco não precisa de apresentação.

Não vem acompanhado de manifesto gastronômico.

Ninguém explica que o porco foi “reinterpretado”.

Ninguém chama aquilo de:

Pork Belly Experience sobre cama de alguma coisa.

É torresmo.

PIC X(08).

TORRESMO.

Crocante onde precisa ser crocante, gorduroso onde Deus e o açougueiro determinaram que fosse gorduroso, acompanhado de cerveja e absolutamente incompatível com qualquer tentativa séria de alta gastronomia.

E boteco raiz tem outras coisas que desafiam a modernidade.

Salgados.

Não finger foods.

Salgados.

Coxinha, bolinho, pastel, quibe, qualquer criatura empanada cuja procedência você talvez prefira não investigar profundamente porque existe uma regra ancestral:

Se está quente, crocante e gostoso, não execute DISPLAY ORIGIN.

Aliás, a própria Prefeitura de Itatiba apresenta a gastronomia local misturando restaurantes sofisticados com comidas de boteco, torresmo, aipim à pururuca e outras tradições culinárias bastante brasileiras.

Mas boteco raiz possui uma característica adicional.

Existem coisas que não estão no cardápio.

🥃 A misteriosa pinga

Em algum lugar existe um alambique.

Provavelmente.

Quem produz?

Informação classificada.

Onde fica?

LOCATION UNKNOWN

Qual a marca?

Marca?

Você está fazendo perguntas demais.

😂

A pinga simplesmente aparece.

Alguém conhece alguém que conhece alguém.

Chega uma garrafa.

— É boa?

— Boa demais.

— De onde veio?

— De um conhecido.

Pronto.

Fim da rastreabilidade da cadeia produtiva.

O auditor ISO 9001 desmaia no balcão.

E aqui entra outra memória cultural itatibense que merece ser registrada justamente porque encontrei pouquíssima documentação digital sobre ela: a pinga com arruda no Sábado de Aleluia.

Essa é daquelas tradições que precisam ser tratadas como tradição oral enquanto não encontramos documentação histórica adequada.

No sábado entre a Sexta-feira da Paixão e o Domingo de Páscoa, há itatibenses que preservam o costume de tomar sua dose de pinga com arruda.

Por quê?

Aí começa justamente a maravilha das tradições populares.

Pergunte para cinco pessoas e talvez consiga sete explicações.

Proteção.

Saúde.

Espantar mau-olhado.

Tradição dos antigos.

“Meu pai fazia.”

“Meu avô já fazia.”

E chega um momento em que a melhor explicação talvez seja simplesmente:

porque em Itatiba se fazia assim.

Isso merece pesquisa histórica própria.

👴 O banco de dados dos velhos itatibenses

Mas a bebida é apenas o protocolo de transporte.

O verdadeiro dado está sentado nas mesas.

Ali estão figuras antigas e folclóricas da cidade.

Homens que conhecem pessoas que você nunca conheceu, lembram estabelecimentos que já não existem e conseguem localizar acontecimentos históricos através de referências absolutamente impossíveis para um historiador profissional:

— Foi quando o Toninho ainda tinha aquele Opala.

Pronto.

TIMESTAMP RESOLVIDO.

Outro corrige:

— Não era Opala. Era Caravan.

E começa uma discussão paralela de vinte minutos.

Essas pessoas formam uma espécie de banco de dados distribuído da memória municipal.

Não existe DBA.

Não existe backup.

Não existe normalização.

Existem duplicidades, inconsistências e versões conflitantes do mesmo registro.

Mas faça a consulta certa e aparece informação que jamais foi digitalizada.

Até que um belo dia...

🎓 Chegaram os universitários

Sangue novo.

Gente jovem.

Novos frequentadores.

E, aparentemente, eles gostaram do lugar.

Ótimo para o estabelecimento.

Só que aconteceu uma coisa inesperada.

Os velhos começaram a ficar desconfortáveis.

Não necessariamente porque os universitários estivessem fazendo alguma coisa.

A simples presença de uma geração diferente modificou o ambiente.

A piada que João fazia havia trinta anos de repente ganhou uma audiência desconhecida.

Aquela história meio indecente agora poderia receber outra interpretação.

A opinião politicamente jurássica do Seu Fulano talvez não sobrevivesse ao compilador social de 2026.

E surgiu o:

ALERTÔMETRO.

Antes de falar, pensar.

Antes da piada, olhar.

Antes do causo, verificar quem está ouvindo.

E quando você precisa fazer análise de impacto antes de contar uma piada no boteco, alguma coisa mudou.

🚨 Reunião extraordinária do CAB

A velharada então realizou aquilo que qualquer organização madura faria diante de uma alteração crítica de produção.

Formou uma comissão.

😂

Imagino a ata:

INCIDENT: BHRAMA-001

PROBLEMA:
Excesso de universitários no ambiente.

SINTOMAS:
- redução da espontaneidade;
- histórias sendo interrompidas;
- aumento do alertômetro;
- tiozões executando autocensura.

AÇÃO:
Solicitar intervenção do barman.

SEVERIDADE:
SEV2 — cerveja ainda sendo servida.

E coube ao barman resolver o problema.

🤝 O grande diplomata da Camilo Pires

E, segundo me contaram, o homem foi conversar com os jovens praticamente ao melhor estilo ChatGPT.

Cheio de paninhos.

😂

Nada de:

— Vocês precisam ir embora.

Muito pelo contrário.

A mensagem foi aproximadamente:

vocês são bem-vindos.

Podem vir.

Voltem.

A casa também é de vocês enquanto clientes.

Mas existe uma informação importante no README deste ambiente:

isto aqui é boteco de homem velho.

Tiozões da Sukita.

Homens formados socialmente em outro século.

Alguns sem exatamente aquilo que chamaríamos de refinamento social do século XXI.

Com opiniões antigas.

Piadas antigas.

Vocabulário antigo.

Maneiras antigas.

Não precisam concordar com eles.

Mas precisam compreender onde entraram.

E isso talvez tenha sido uma das melhores soluções possíveis.

Ninguém foi expulso.

Ninguém precisou passar por reeducação compulsória.

Os universitários continuaram universitários.

Os velhos continuaram velhos.

O barman simplesmente instalou uma:

CAMADA DE COMPATIBILIDADE.

🧠 Talvez seja isso que esteja faltando

A pequena história desse boteco diz alguma coisa maior sobre nosso tempo.

Estamos ficando muito bons em identificar diferenças.

Talvez estejamos ficando piores em conviver com elas.

Nem todo lugar precisa ser igual.

Nem todo grupo precisa falar da mesma maneira.

Nem toda geração precisa compartilhar exatamente os mesmos códigos.

O universitário pode olhar para o velho e pensar:

— Meu Deus, que ideia jurássica.

E o velho pode olhar para o universitário e pensar:

— Meu Deus, essa molecada inventa palavra para tudo.

Depois ambos podem pedir cerveja.

E comer torresmo.

Isso se chama sociedade.

Não precisamos necessariamente resolver todas as divergências antes da próxima rodada.

🐷 Porque no final existe o torresmo

Talvez seja esse o segredo.

Quando ideologias, gerações, costumes e vocabulários entram em conflito, alguém coloca um prato de torresmo na mesa.

O velho pega um.

O universitário pega outro.

Alguém pede uma cerveja.

Outro pergunta:

— Você conhece o fulano?

E começa outra história.

Enquanto isso, discretamente, na fachada continua escrito Brahma.

Eu continuo bebendo Original.

Uma misteriosa pinga continua chegando de algum alambique cuja localização provavelmente está protegida pelo sigilo profissional dos botequeiros.

E em algum Sábado de Aleluia alguém ainda coloca arruda dentro da cachaça porque aprendeu com alguém que aprendeu com alguém que aprendeu com alguém.

Talvez o Google nunca indexe isso.

Talvez nenhum historiador registre.

Talvez daqui a cinquenta anos ninguém saiba quem eram aqueles homens das fotografias penduradas na parede.

Por isso vale escrever.

Porque existem lugares que são mais do que estabelecimentos comerciais.

São arquivos vivos de uma cidade.

E, enquanto houver alguém na Rua Coronel Camilo Pires contando uma história, alguém duvidando dela, outro corrigindo a data e um prato de torresmo circulando...

o velho mainframe social de Itatiba continuará processando.

Sem cloud.

Sem IA.

Sem documentação.

E, preferencialmente,

sem mexer no JCL que está funcionando.

terça-feira, 10 de abril de 2018

O Mistério das Regiões Invisíveis : Como o MRO Transformou o CICS em uma Cidade Secreta Onde Cada Região Guarda um Segredo

 

Bellacosa Mainframe e o misterio das regioes invisiveis

☕ Um Café no Bellacosa Mainframe

O Mistério das Regiões Invisíveis

Como o MRO Transformou o CICS em uma Cidade Secreta Onde Cada Região Guarda um Segredo

"Naquela manhã, o operador jurava que a transação havia desaparecido. O terminal permaneceu em silêncio por menos de um segundo. Quando a resposta voltou, parecia mágica. Mas não era magia. Era engenharia. E como todo bom mistério, existiam corredores invisíveis, mensageiros silenciosos e guardiões que ninguém via..."


Prólogo — O Caso do Banco que Nunca Dormia

Imagine entrar em uma agência bancária às oito horas da manhã.

Ao mesmo tempo em que você consulta seu saldo:

  • milhares de pessoas pagam boletos;

  • empresas enviam folhas de pagamento;

  • cartões são autorizados;

  • caixas eletrônicos distribuem dinheiro;

  • aplicativos móveis fazem PIX;

  • APIs atendem fintechs;

  • internet banking consulta investimentos.

Tudo isso acontece em menos de um segundo.

Quem faz esse milagre?

Muitos responderiam:

"O CICS."

Mas essa resposta está incompleta.

A verdadeira resposta é muito mais interessante.

O CICS não trabalha sozinho.

Ele coordena uma pequena cidade.

Uma cidade composta por especialistas.

Cada edifício possui uma função.

Cada habitante conhece exatamente seu trabalho.

E todos se comunicam através de túneis invisíveis.

Esse sistema secreto atende por um nome:

MRO — Multi-Region Operation.

Hoje vamos abrir a porta desse mundo escondido.

Pegue seu café.

A investigação começou.


Capítulo 1 — Quando Um Único CICS Não Era Mais Suficiente

No início da computação corporativa era comum existir apenas uma única região CICS.

Ela fazia tudo.

Recebia usuários.

Executava COBOL.

Acessava VSAM.

Conversava com DB2.

Controlava impressoras.

Respondia terminais.

Era uma verdadeira central de operações.

Visualmente:

Usuários
     │
     ▼
+----------------+
|    CICS        |
| Tudo acontece  |
| aqui           |
+----------------+
     │
     ▼
Arquivos / DB2

Parecia perfeito.

Até que chegaram milhões de usuários.

Foi como transformar uma pequena delegacia em uma capital inteira.

A fila aumentou.

A CPU começou a sofrer.

Os tempos de resposta cresceram.

E surgiu uma pergunta:

"E se dividíssemos as responsabilidades?"

Essa simples ideia mudaria a história do CICS.


Capítulo 2 — O Nascimento da Cidade Secreta

A IBM percebeu algo extremamente elegante.

Nem todo mundo precisava fazer tudo.

Assim como uma cidade possui:

  • prefeitura;

  • hospital;

  • biblioteca;

  • fórum;

  • correios;

o CICS também poderia criar especialistas.

Nascia o conceito de Multi-Region Operation.

Agora existiam regiões especializadas.

Cada uma extremamente eficiente.

Não era mais um prédio gigantesco.

Era uma metrópole inteira.


Capítulo 3 — Conheça os Três Grandes Personagens

Se o MRO fosse um filme noir dos anos 1950, existiriam três protagonistas.

TOR

O Porteiro.

O Concierge.

O Recepcionista.

Nunca resolve o problema.

Mas sabe exatamente para quem enviar.

Ele recebe o visitante e pergunta:

"Em que posso ajudar?"

Depois encaminha a pessoa ao especialista correto.

Jamais executa o trabalho pesado.

Sua missão é apenas direcionar.


AOR

O Detetive.

Aqui mora o cérebro.

É onde vivem os programas COBOL.

Onde estão:

  • EXEC CICS

  • EXEC SQL

  • CALL

  • LINK

  • XCTL

É nessa região que a lógica de negócio acontece.

Quando alguém consulta saldo...

Quem calcula?

O AOR.

Quem faz validações?

O AOR.

Quem chama programas?

O AOR.

Ele é o verdadeiro investigador do caso.


FOR

O Arquivista.

Imagine um enorme cofre.

Centenas de estantes.

Milhões de documentos.

O FOR é responsável por guardar tudo.

VSAM.

KSDS.

RRDS.

ESDS.

Nada entra.

Nada sai.

Sem passar por ele.


Capítulo 4 — Os Túneis Invisíveis

Agora surge a pergunta.

Como essas regiões conversam?

Resposta:

IRC — Interregion Communication.

O IRC é o correio secreto da cidade.

Imagine túneis subterrâneos ligando todos os prédios.

As pessoas caminham por eles sem serem vistas.

No CICS acontece exatamente isso.

TOR
 │
 │ IRC
 ▼
AOR
 │
 │ IRC
 ▼
FOR

O usuário nunca percebe.

Para ele existe apenas uma resposta.

Mas internamente houve uma verdadeira viagem.


Capítulo 5 — A Jornada de uma Consulta de Saldo

Vamos acompanhar uma única transação.

Você abre o aplicativo do banco.

Digita sua senha.

Pressiona:

Consultar Saldo

O que acontece?

Passo 1

O pedido chega ao TOR.

O TOR olha a fila.

Existem oito AOR disponíveis.

Qual está mais livre?

Escolhe uma.


Passo 2

Via MRO.

O pedido atravessa o IRC.

Chega ao AOR.


Passo 3

O programa COBOL inicia.

Ele verifica:

  • agência;

  • conta;

  • autenticação;

  • permissões.


Passo 4

Agora precisa acessar o cadastro.

Quem possui os arquivos?

O FOR.

Nova viagem.


Passo 5

O FOR abre o VSAM.

Localiza o cliente.

Retorna:

Saldo:

R$ 8.435,91


Passo 6

O COBOL monta a tela.


Passo 7

O TOR devolve a resposta.

Tudo isso pode ocorrer em poucos milissegundos.

Parece magia.

Mas é apenas uma arquitetura brilhantemente organizada.


Capítulo 6 — O Grande Segredo da Escalabilidade

Imagine uma loja.

Existem apenas dois caixas.

Forma-se fila.

O gerente faz o quê?

Contrata mais caixas.

O mesmo ocorre com o CICS.

Hoje:

TOR

↓

AOR1
AOR2

Amanhã:

TOR

↓

AOR1
AOR2
AOR3
AOR4
AOR5

Nenhuma linha do COBOL precisou mudar.

Esse é um dos maiores poderes do MRO.

Escalar sem reescrever aplicações.

Décadas antes da computação em nuvem.


Capítulo 7 — Alta Disponibilidade

Imagine um AOR travando.

Antigamente...

Tudo parava.

Hoje:

TOR

↓

AOR1

AOR2

AOR3 (OFF)

AOR4

AOR5

As novas transações seguem para as demais regiões.

O cliente sequer percebe.

Essa capacidade é um dos motivos pelos quais bancos conseguem funcionar praticamente vinte e quatro horas por dia.


Capítulo 8 — MRO Não é ISC

Essa confusão aparece em praticamente toda entrevista técnica.

Vamos resolver isso de uma vez.

MRO

Mesmo z/OS.

Mesmo computador.

Mesma LPAR.

Regiões diferentes.


ISC

Outro computador.

Outra LPAR.

Outro ambiente.

Outra máquina.

Em outras palavras:

MRO trabalha "dentro da cidade".

ISC comunica cidades diferentes.

Uma excelente forma de memorizar.


Capítulo 9 — O CICS Antecipou os Microsserviços?

Curiosamente...

Muito antes da palavra "microsserviços" existir...

O CICS já fazia algo parecido.

Observe.

Cada região possui uma responsabilidade.

TOR:

Entrada.

AOR:

Processamento.

FOR:

Persistência.

Separação.

Especialização.

Baixo acoplamento.

Balanceamento.

Escalabilidade.

Isso soa familiar?

Sim.

Muitas ideias atribuídas às arquiteturas modernas já estavam presentes no mundo mainframe há décadas, embora implementadas de maneira diferente e com objetivos próprios.


Capítulo 10 — Como um Programador COBOL Deve Pensar

Um erro comum do iniciante é imaginar:

"Meu programa roda no CICS."

Na verdade...

Seu programa normalmente roda:

No AOR.

Quem recebeu o usuário foi outro.

Quem abriu o VSAM foi outro.

Quem fez o roteamento foi outro.

Seu COBOL é apenas uma peça da investigação.

Quanto antes compreender isso...

Mais fácil será entender:

  • performance;

  • dumps;

  • rastreamento;

  • problemas de produção;

  • roteamento.


Capítulo 11 — Onde Entram os Comandos EXEC CICS?

Quando o COBOL executa:

EXEC CICS READ FILE('CLIENTE')
END-EXEC.

Você imagina:

"CICS abriu o arquivo."

Na realidade, dependendo da arquitetura, a solicitação pode viajar:

Programa COBOL

AOR

MRO

FOR

VSAM

FOR

AOR

Programa COBOL

Essa viagem inteira acontece antes da próxima instrução COBOL ser executada.

É por isso que compreender arquitetura é tão importante quanto aprender sintaxe.


Capítulo 12 — Dicas de Ouro para Quem Está Começando

✔ Não memorize apenas siglas. Entenda a responsabilidade de cada região.

✔ Sempre desenhe o fluxo de uma transação antes de estudar comandos.

✔ Aprenda primeiro TOR, depois AOR, depois FOR e só então MRO.

✔ Quando estudar desempenho, pergunte sempre: "Em qual região estou?"

✔ Ao analisar um problema de produção, descubra primeiro onde a transação foi roteada.

✔ Entender MRO ajuda a interpretar logs, SMF, rastreamentos e ferramentas de monitoramento com muito mais clareza.


Curiosidades do CPD

☕ Alguns ambientes bancários possuem dezenas de AORs trabalhando simultaneamente.

☕ O usuário nunca sabe por qual região passou.

☕ Uma mesma transação pode ser atendida por AORs diferentes ao longo do dia.

☕ Em ambientes grandes, o número de regiões CICS pode ultrapassar uma centena, cada uma com funções específicas.

☕ Muitas arquiteturas modernas de alta disponibilidade adotam princípios semelhantes aos usados pelo CICS desde os anos 1980.


Easter Eggs do Bellacosa Mainframe 🕵️

🔎 Easter Egg #1 — O Porteiro Invisível

Assim como Alfred organizava discretamente a Mansão Wayne enquanto Batman enfrentava os vilões, o TOR raramente recebe os holofotes. Ele apenas garante que cada visitante encontre o caminho certo.


🔎 Easter Egg #2 — A Cidade Subterrânea

Os túneis do IRC lembram passagens secretas de romances policiais clássicos. O cidadão comum nunca os vê, mas toda a cidade depende deles.


🔎 Easter Egg #3 — O Arquivista

O FOR faz lembrar os grandes arquivos de bibliotecas históricas: silencioso, organizado e indispensável. Sem ele, encontrar um único registro entre milhões seria um pesadelo.


🔎 Easter Egg #4 — A Ponte para o Futuro

Quando ouvir alguém dizer que microsserviços inventaram a separação de responsabilidades, sorria. O CICS já demonstrava esse princípio décadas antes, em um contexto completamente diferente, provando que boas ideias atravessam gerações.


Perguntas de Entrevista

O que significa MRO?

Multi-Region Operation.


Qual seu objetivo?

Permitir comunicação entre regiões CICS executando no mesmo z/OS.


Quem recebe usuários?

TOR.


Quem executa COBOL?

AOR.


Quem controla VSAM?

FOR.


Quem liga tudo?

IRC através do MRO.


MRO funciona entre máquinas diferentes?

Não.

Para isso normalmente utiliza-se ISC.


Conclusão — O Mistério Resolvido

Durante décadas, milhares de profissionais observaram apenas a superfície do CICS. Viam uma tela 3270 responder em menos de um segundo e imaginavam existir apenas um grande programa fazendo todo o trabalho. A realidade é muito mais fascinante.

Por trás de cada transação existe uma verdadeira cidade invisível: porteiros que recebem visitantes, investigadores que resolvem problemas, arquivistas que protegem informações e mensageiros que percorrem túneis secretos levando pedidos e respostas em velocidade impressionante. Essa organização permitiu que o CICS acompanhasse a evolução da computação por gerações, mantendo confiabilidade, desempenho e disponibilidade em ambientes que processam milhões de transações diariamente.

Para quem está iniciando em COBOL, compreender o MRO é um divisor de águas. A partir desse momento, o CICS deixa de ser uma "caixa-preta" e passa a ser um organismo vivo, formado por regiões especializadas que cooperam de maneira elegante. Você não verá apenas comandos EXEC CICS; enxergará o caminho percorrido por cada solicitação, entenderá por que a arquitetura foi desenhada dessa forma e perceberá que muitos conceitos considerados modernos já eram praticados no universo IBM Z muito antes de se tornarem tendências.

E da próxima vez que uma consulta de saldo aparecer instantaneamente na tela, talvez você se lembre desta investigação. Em algum lugar, um TOR abriu a porta, um AOR resolveu o caso, um FOR encontrou a prova escondida em um arquivo VSAM, e o MRO garantiu que todos trabalhassem em perfeita harmonia.

Porque, no fim das contas, o maior mistério do mainframe nunca foi a velocidade.

Foi fazer parecer simples aquilo que, nos bastidores, é uma das mais elegantes obras de engenharia da história da computação.

segunda-feira, 9 de abril de 2018

🎭 10 Animes com Yanderes Marcantes — Amor, Loucura e Tragédia

 🎭 10 Animes com Yanderes Marcantes — Amor, Loucura e Tragédia



O arquétipo yandere é o retrato do amor que atravessou a linha da sanidade. É o sorriso doce com uma faca escondida atrás das costas. A seguir, uma seleção ao estilo Bellacosa Mainframe com 10 animes que exploram o amor doentio de forma intensa, trágica e fascinante.



1️⃣ Mirai Nikki (Future Diary)2011

Autor: Sakae Esuno
Personagem Yandere: Yuno Gasai
Sinopse: Yukiteru recebe um diário que prevê o futuro e é arrastado para um jogo mortal de sobrevivência. Ao seu lado, Yuno — uma garota linda, obcecada e disposta a tudo para protegê-lo.
Curiosidades: Yuno é o padrão-ouro do yandere moderno. Sua insanidade inspirou memes, cosplays e um subgênero inteiro.
Dica: Observe como o amor e a tragédia se confundem até o último episódio.




2️⃣ School Days2007

Autor: Overflow (visual novel)
Personagens Yandere: Kotonoha Katsura e Sekai Saionji
Sinopse: Um triângulo amoroso colegial toma rumos inesperados e cruéis quando ciúmes e traições se acumulam.
Curiosidades: O final chocante se tornou lendário — a série foi até banida em algumas emissoras japonesas.
Dica: Não se engane com o visual “fofinho”. Este é um anime que destrói corações.


3️⃣ Elfen Lied2004

Autor: Lynn Okamoto
Personagem Yandere: Lucy/Nyu
Sinopse: Uma mutante com poderes telecinéticos foge de um laboratório e encontra abrigo com humanos que não sabem quem ela realmente é.
Curiosidades: Mistura brutalidade e ternura como poucos. A dualidade de Lucy e Nyu é a essência do yandere.
Dica: Prepare-se emocionalmente — violência e dor andam lado a lado com amor e arrependimento.


4️⃣ Happy Sugar Life2018

Autor: Tomiyaki Kagisora
Personagem Yandere: Satou Matsuzaka
Sinopse: Satou vive um “doce amor” com a pequena Shio, mas para manter esse segredo, ela é capaz de qualquer coisa — inclusive matar.
Curiosidades: Um dos animes mais perturbadores disfarçados de shoujo kawaii.
Dica: Analise o contraste entre a estética fofa e o enredo sombrio — é pura ironia visual.


5️⃣ Higurashi no Naku Koro ni (When They Cry)2006

Autor: Ryukishi07
Personagens Yandere: Rena Ryuuguu, Shion Sonozaki
Sinopse: Em uma vila aparentemente pacata, uma série de assassinatos e eventos paranormais revelam a loucura escondida nos moradores.
Curiosidades: A série redefine o horror psicológico em animes.
Dica: Cada arco mostra um novo lado das personagens, e quando Rena sorri… fuja.


6️⃣ Future Diary: Redial2013 (OVA)

Autor: Sakae Esuno
Personagem Yandere: Yuno Gasai (versão alternativa)
Sinopse: Continuação direta de Mirai Nikki, mostrando as consequências emocionais do amor obsessivo.
Curiosidades: Mostra uma Yuno mais humana, tentando se redimir.
Dica: Assista após a série principal — é o epílogo que fecha o ciclo da insanidade.


7️⃣ Yandere Kanojo (Yandere Girlfriend)2009

Autor: Shinobi
Personagem Yandere: Reina Ryuugu
Sinopse: Comédia romântica sobre uma delinquente apaixonada, que equilibra o amor e a agressividade.
Curiosidades: Apesar do nome, o tom é leve e paródico.
Dica: Ideal para quem quer um “yandere do bem” e dar risadas entre os surtos.


8️⃣ Future Diary Another: World2012 (Live-action)

Autor: Baseado em Sakae Esuno
Personagem Yandere: Yuno Gasai reinterpretada
Sinopse: Versão alternativa do universo Mirai Nikki, com um novo protagonista e uma Yuno ainda mais imprevisível.
Curiosidades: Mistura suspense e romance com um toque de realismo perturbador.
Dica: Uma boa curiosidade para comparar como o arquétipo yandere funciona fora do anime tradicional.


9️⃣ Big Order2016

Autor: Sakae Esuno
Personagem Yandere: Rin Kurenai
Sinopse: Um jovem com poder de dominar o mundo desperta a fúria de Rin, que deseja matá-lo — até o ódio se transformar em amor distorcido.
Curiosidades: Do mesmo autor de Mirai Nikki, com a mesma pegada de amor caótico.
Dica: É quase uma continuação espiritual, ideal para quem amou o estilo Yuno Gasai.


🔟 Shimoneta: A World Without Dirty Jokes2015

Autor: Hirotaka Akagi
Personagem Yandere: Anna Nishikinomiya
Sinopse: Em um mundo onde palavras indecentes são proibidas, Anna descobre o amor e… perde totalmente o controle.
Curiosidades: Paródia hilária e exagerada do yandere clássico, com toques de comédia sexual.
Dica: Leve na loucura, pesado no humor — uma sátira perfeita ao arquétipo.


☕ Conclusão Bellacosa

O yandere é o espelho do amor que perdeu o limite — um lembrete de que até o sentimento mais puro pode adoecer quando o medo e a obsessão tomam conta.
Esses animes não são só sobre sangue e ciúme; são sobre a fragilidade emocional humana e a linha tênue entre proteger e possuir.

#BellacosaMainframe #Yandere #AnimePsychoLove #MiraiNikki #ElfenLied #HappySugarLife

sábado, 7 de abril de 2018

IBM MQ : Quando um Programador Descobre que a Mensagem Não Precisa Viajar de Carona pela Galáxia — Ela Pode Entrar numa Fila, Sobreviver ao Fim do Mundo

 

Bellacosa Mainframe uma carona nos meandros dos ibm mq

☕ Um Café no Bellacosa Mainframe

IBM MQ sem Mistérios para Programadores COBOL

Quando um Programador Descobre que a Mensagem Não Precisa Viajar de Carona pela Galáxia — Ela Pode Entrar numa Fila, Sobreviver ao Fim do Mundo e Chegar ao Destino com Protocolo de Entrega

Existe uma frase muito conhecida entre os viajantes experientes da galáxia computacional:

Não entre em pânico. Verifique primeiro se a mensagem ainda está na fila.

Naturalmente, essa frase não aparece em nenhum manual oficial da IBM, talvez porque os manuais técnicos normalmente preferem expressões menos tranquilizadoras, como:

AMQ9208E: Error on receive from host.

Ainda assim, o princípio permanece válido.

Em algum ponto da carreira, todo programador COBOL descobre que escrever o programa é apenas uma parte relativamente pequena do problema. A outra parte consiste em convencer o restante do universo corporativo a receber os dados produzidos pelo programa.

Você pode calcular corretamente o valor de uma transferência bancária.

Pode atualizar o saldo no Db2.

Pode montar um registro de 500 bytes com precisão quase artística.

Pode validar datas, CPFs, códigos de agência e números de conta.

Mas surge então a pergunta que assombra arquitetos, programadores, analistas de produção e operadores desde os primórdios da computação distribuída:

Como enviar essa informação para outro sistema sem depender de ele estar funcionando exatamente naquele momento?

É aqui que entra o IBM MQ.

Ele é o carteiro confiável da arquitetura corporativa.

Não é o carteiro que toca a campainha, espera vinte segundos, joga o pacote por cima do muro e marca no sistema que ele foi recebido por “Morador”.

O IBM MQ é mais parecido com um mensageiro interestelar que guarda a encomenda em um cofre, atravessa panes, reinicializações, falhas de rede, indisponibilidades, atualizações de sistema e mudanças de turno até conseguir realizar a entrega.

Para o programador COBOL iniciante, compreender MQ significa aprender uma das ideias mais importantes da integração de sistemas:

O sistema que envia uma mensagem não precisa esperar pelo sistema que vai recebê-la.

Essa pequena ideia sustenta bancos, companhias aéreas, seguradoras, redes varejistas, órgãos públicos, sistemas de cartões, plataformas logísticas e uma considerável quantidade de computadores que, por razões administrativas, ainda acreditam estar vivendo em fusos horários diferentes.

Prepare seu café, localize sua toalha, abra o editor COBOL e embarque. A fila está pronta.


Capítulo 1 — O problema de conversar diretamente

Imagine dois sistemas.

O primeiro será chamado de Sistema A, porque arquitetos gostam de começar pelo A.

O segundo será chamado de Sistema B, porque chamar o segundo sistema de Sistema Faria Lima exigiria mais documentação.

O Sistema A precisa enviar uma solicitação ao Sistema B.

Sem MQ, a comunicação poderia acontecer diretamente:

SISTEMA A  -------------------->  SISTEMA B

O Sistema A abre uma conexão.

Envia uma requisição.

Espera a resposta.

O Sistema B processa.

Retorna o resultado.

Quando tudo funciona, essa arquitetura parece perfeita.

Também parece perfeita uma viagem de carro em uma estrada vazia, durante o dia, com combustível suficiente, motor revisado e nenhuma criatura de três cabeças atravessando a pista.

O problema é que sistemas corporativos raramente operam em condições perfeitas.

O Sistema B pode estar:

  • indisponível;

  • reiniciando;

  • em manutenção;

  • congestionado;

  • com a CPU elevada;

  • esperando uma tabela Db2 ser liberada;

  • sofrendo timeout;

  • preso em um loop;

  • com o certificado expirado;

  • acessível pela rede, mas incapaz de responder;

  • funcionando normalmente, segundo o painel de monitoramento, embora ninguém consiga utilizá-lo.

Quando A fala diretamente com B, A depende da disponibilidade imediata de B.

Isso é chamado de acoplamento temporal.

Os dois sistemas precisam estar ativos ao mesmo tempo.

O emissor precisa aguardar.

O receptor precisa responder dentro de determinado prazo.

A rede precisa permanecer estável durante a comunicação.

Em um processo simples, isso pode ser aceitável.

Em uma operação crítica, pode ser perigoso.

Considere uma transferência bancária de R$ 5.000.

O sistema envia a operação.

A conexão cai antes de receber a confirmação.

Agora surge o maior terror da computação distribuída:

A transferência aconteceu ou não?

Tentar novamente pode duplicar o pagamento.

Não tentar novamente pode perder a transação.

A tela do cliente permanece girando.

O usuário clica outra vez.

O operador abre um chamado.

O analista examina os logs.

O gerente pergunta se já existe previsão.

A previsão depende de descobrir se a primeira tentativa chegou.

Nesse momento, alguém pronuncia uma frase ancestral:

“Parece que foi problema de comunicação.”

Essa frase é tecnicamente possível, socialmente conveniente e praticamente inútil.


Capítulo 2 — A chegada do mensageiro confiável

O IBM MQ muda o desenho da comunicação.

Em vez de A entregar diretamente para B, A entrega a mensagem para uma fila administrada pelo MQ:

SISTEMA A  --->  FILA MQ  --->  SISTEMA B

O Sistema A não precisa conversar diretamente com o Sistema B.

Ele conversa com o Queue Manager.

Se a operação de colocação da mensagem for concluída com sucesso, A sabe que o MQ assumiu a responsabilidade por ela.

A mensagem permanece na fila até que B esteja disponível para consumi-la.

Se B estiver offline, a mensagem espera.

Se B estiver lento, a mensagem espera.

Se B estiver processando outras solicitações, a mensagem espera.

Se B estiver passando por manutenção porque alguém decidiu atualizar 47 componentes em uma sexta-feira, a mensagem também espera, embora provavelmente faça isso com certa desaprovação.

Essa espera não é um erro.

Ela faz parte do projeto.

Essa é uma mudança fundamental para quem está acostumado apenas com chamadas diretas.

No modelo síncrono:

A chama B
A espera B
B responde
A continua

No modelo assíncrono:

A entrega a mensagem ao MQ
A continua trabalhando
B consome a mensagem quando puder

O MQ introduz uma camada intermediária.

Essa camada reduz a dependência entre os sistemas.

O emissor não precisa saber exatamente quando o receptor processará a mensagem.

O receptor não precisa estar disponível no momento do envio.

É o início do desacoplamento.


Capítulo 3 — O que é uma mensagem?

Uma mensagem é uma unidade de informação transportada pelo MQ.

Ela pode representar:

  • um pedido;

  • uma autorização de pagamento;

  • uma transferência bancária;

  • uma reserva;

  • uma solicitação de emissão de nota fiscal;

  • uma atualização cadastral;

  • uma movimentação de estoque;

  • uma notificação;

  • um lote de registros;

  • um evento de negócio;

  • uma instrução para outro sistema.

Para o programador COBOL, a mensagem frequentemente se parece com uma área de dados comum:

01  WS-MENSAGEM.
    05 WS-TIPO-OPERACAO       PIC X(02).
    05 WS-NUMERO-CONTA        PIC 9(10).
    05 WS-VALOR               PIC S9(11)V99 COMP-3.
    05 WS-DATA-OPERACAO       PIC 9(08).
    05 WS-HORA-OPERACAO       PIC 9(06).
    05 WS-CODIGO-ORIGEM       PIC X(08).

Mas existe uma diferença importante.

O receptor precisa conhecer o formato.

Se o emissor enviar:

TIPO + CONTA + VALOR + DATA

e o receptor interpretar:

CONTA + TIPO + DATA + VALOR

a mensagem chegará perfeitamente, mas o resultado será um desastre de alta qualidade.

O MQ garante o transporte.

Ele não adivinha o significado do conteúdo.

Essa distinção é essencial:

MQ garante que os bytes sejam entregues. A aplicação garante que os bytes façam sentido.

Por isso, integrações baseadas em MQ precisam de contratos de mensagem.

Esses contratos devem definir:

  • tamanho;

  • campos;

  • tipos;

  • codificação;

  • versão;

  • obrigatoriedade;

  • valores válidos;

  • tratamento de erros;

  • compatibilidade entre versões.

No mundo COBOL, isso pode ser documentado por meio de copybooks compartilhados.

Exemplo:

COPY PEDIDO01.

O emissor usa o copybook.

O receptor usa o mesmo copybook.

O problema começa quando o emissor altera o copybook e esquece de avisar o receptor.

A partir desse instante, nasce uma entidade conhecida como incidente de integração, que se alimenta de campos deslocados e costuma aparecer fora do horário comercial.


Capítulo 4 — O Queue Manager, gerente da estação espacial

O principal componente do IBM MQ é o Queue Manager.

Ele administra os objetos, a segurança, a recuperação e o fluxo das mensagens.

Pense nele como o administrador de uma estação espacial dedicada ao transporte de pacotes.

O Queue Manager controla:

  • filas;

  • canais;

  • logs;

  • conexões;

  • transações;

  • persistência;

  • segurança;

  • recuperação;

  • entrega de mensagens;

  • comunicação com outros Queue Managers.

Uma aplicação não coloca mensagens aleatoriamente no universo.

Ela se conecta a um Queue Manager e solicita acesso a uma fila.

Conceitualmente:

APLICAÇÃO
    |
    v
QUEUE MANAGER
    |
    v
FILA

No z/OS, o Queue Manager é uma infraestrutura robusta, integrada ao ambiente operacional, aos mecanismos de segurança e aos recursos de alta disponibilidade.

Ele mantém registros necessários para recuperar mensagens persistentes após falhas.

Também controla transações e acessos concorrentes.

É por isso que uma fila MQ não deve ser confundida com uma simples tabela improvisada contendo status “N”, “P” e “E”.

Uma tabela pode até implementar um mecanismo semelhante, mas você terá de construir:

  • bloqueios;

  • concorrência;

  • confirmação;

  • recuperação;

  • retry;

  • controle transacional;

  • ordenação;

  • segurança;

  • expiração;

  • gerenciamento;

  • monitoramento;

  • tratamento de mensagens problemáticas.

Depois de alguns meses, você terá criado um pequeno sistema de mensageria.

Provavelmente pior.

Talvez mais caro.

Certamente acompanhado por uma documentação chamada fluxo_novo_final_v7_corrigido_definitivo.pptx.


Capítulo 5 — O que é uma fila?

Uma fila é uma estrutura onde as mensagens são armazenadas até serem consumidas.

Em sua forma mais simples:

ENTRADA
   |
   v
+-----------------------------+
| MSG 001                     |
| MSG 002                     |
| MSG 003                     |
+-----------------------------+
   |
   v
SAÍDA

Normalmente, pensamos em uma fila como FIFO:

First In, First Out.

A primeira mensagem a entrar tende a ser a primeira a sair.

Entretanto, a ordem real de recuperação pode ser influenciada por fatores como:

  • prioridade;

  • critérios de seleção;

  • múltiplos consumidores;

  • agrupamento;

  • sincronização;

  • comportamento da aplicação.

Portanto, dizer que “MQ sempre garante a ordem absoluta em qualquer arquitetura” seria uma simplificação perigosa.

Em uma fila simples, com um consumidor e mensagens de mesma prioridade, o comportamento FIFO é natural.

Mas imagine três consumidores lendo simultaneamente:

FILA
 |
 +--> CONSUMIDOR 1
 |
 +--> CONSUMIDOR 2
 |
 +--> CONSUMIDOR 3

As mensagens podem ser retiradas em ordem, porém o término do processamento pode acontecer em outra sequência.

A mensagem 2 pode terminar antes da mensagem 1.

Isso não significa que o MQ falhou.

Significa que processamento paralelo produz resultados paralelos.

Quando a ordem de negócio é obrigatória, a arquitetura precisa considerar:

  • um único consumidor;

  • grupos de mensagens;

  • afinidade;

  • particionamento por chave;

  • controle de sequência na aplicação;

  • confirmação do passo anterior.

A regra é simples:

Ordem técnica e ordem de negócio não são necessariamente a mesma coisa.


Capítulo 6 — Persistência: a mensagem que se recusou a morrer

Uma mensagem pode ser persistente ou não persistente.

Mensagem persistente

É projetada para sobreviver a falhas e reinicializações, conforme a configuração e o comportamento do ambiente.

É adequada para operações críticas:

  • pagamentos;

  • transferências;

  • pedidos;

  • emissão fiscal;

  • autorizações;

  • atualizações financeiras.

Mensagem não persistente

Pode ser usada quando desempenho é mais importante e a perda ocasional é aceitável.

Exemplos possíveis:

  • telemetria descartável;

  • atualização temporária;

  • informação de baixa criticidade;

  • eventos que podem ser recriados.

O erro clássico é escolher mensagem não persistente porque ela é mais rápida, sem perguntar se a empresa aceita perder a informação.

Imagine a seguinte reunião:

— Conseguimos melhorar o desempenho em 18%.

— Excelente. Como?

— As mensagens agora podem desaparecer durante uma falha.

Essa reunião tende a terminar com uma breve pausa contemplativa.

A persistência envolve gravação e uso de logs de recuperação.

Existe um custo de desempenho.

Mas esse custo compra confiabilidade.

Em sistemas críticos, a pergunta não deve ser apenas:

Quantas mensagens por segundo conseguimos processar?

Também deve ser:

Quantas mensagens podemos perder?

Em muitas aplicações financeiras, a resposta aceitável é:

Nenhuma.


Capítulo 7 — Unidade de trabalho e sincronização

Uma das partes mais importantes do MQ é o suporte transacional.

Considere um programa que precisa:

  1. ler uma mensagem;

  2. atualizar uma tabela Db2;

  3. colocar uma nova mensagem em outra fila;

  4. confirmar tudo.

Se o programa retirar a mensagem e falhar antes da atualização, existe risco de perda.

Se atualizar o banco, mas falhar antes de enviar a próxima mensagem, existe inconsistência.

Por isso, essas operações podem participar de uma unidade lógica de trabalho.

A ideia é:

INÍCIO DA TRANSAÇÃO

MQGET
UPDATE DB2
MQPUT

COMMIT

Se tudo funcionar:

COMMIT

As operações são confirmadas.

Se algo falhar:

ROLLBACK

As alterações são desfeitas.

A mensagem original pode voltar a ficar disponível para reprocessamento.

Em COBOL, a lógica conceitual poderia ser:

PERFORM LER-MENSAGEM

IF WS-REASON-CODE = ZERO
    PERFORM PROCESSAR-NEGOCIO
    PERFORM ATUALIZAR-DB2
    PERFORM ENVIAR-RESPOSTA

    IF WS-PROCESSAMENTO-OK
        EXEC SQL
             COMMIT
        END-EXEC
    ELSE
        EXEC SQL
             ROLLBACK
        END-EXEC
    END-IF
END-IF

A implementação exata depende da integração, do ambiente e da coordenação transacional.

O princípio, porém, é universal:

A mensagem só deve desaparecer da fila quando o processamento associado estiver realmente confirmado.

Esse é um dos pilares da confiabilidade do MQ.


Capítulo 8 — “Exactly once” e a verdade menos confortável

A imagem afirma que nada chega duas vezes.

Essa é uma forma didática de apresentar o objetivo do MQ.

Entretanto, em sistemas distribuídos, “exatamente uma vez” exige atenção.

O MQ fornece mecanismos robustos para entrega confiável e processamento transacional, mas a aplicação também precisa ser desenhada corretamente.

Uma mensagem pode ser reapresentada em situações como:

  • rollback;

  • falha antes do commit;

  • recuperação;

  • reconexão;

  • incerteza na confirmação;

  • lógica inadequada da aplicação;

  • reenvio feito pelo produtor.

Por isso, aplicações críticas devem considerar idempotência.

Idempotência significa que processar novamente a mesma solicitação não produz um efeito duplicado.

Exemplo: cada transferência recebe um identificador único.

ID-TRANSACAO = 202607260000123456

Antes de processar, o sistema verifica:

SELECT STATUS
FROM TRANSACOES
WHERE ID_TRANSACAO = ?

Se já existe como concluída, não debita novamente.

Assim, mesmo que a mensagem seja reapresentada, o efeito financeiro não é duplicado.

Portanto, uma arquitetura confiável combina:

  • transação MQ;

  • commit adequado;

  • identificador único;

  • idempotência;

  • validação de duplicidade;

  • auditoria.

O MQ é um excelente mensageiro.

Mas até o melhor mensageiro da galáxia não pode impedir que o destinatário registre duas vezes o mesmo pacote se a recepção tiver sido programada por alguém que considerou duplicidade uma superstição.


Capítulo 9 — MQPUT e MQGET

Duas operações fundamentais são:

  • MQPUT: colocar uma mensagem;

  • MQGET: recuperar uma mensagem.

De maneira simplificada:

PRODUTOR --MQPUT--> FILA --MQGET--> CONSUMIDOR

O produtor cria a mensagem.

O consumidor processa.

Em um programa COBOL com a API MQI, aparecem estruturas e chamadas como:

  • MQCONN ou MQCONNX;

  • MQOPEN;

  • MQPUT;

  • MQGET;

  • MQCLOSE;

  • MQDISC.

Fluxo típico do produtor:

CONECTAR
ABRIR FILA
COLOCAR MENSAGEM
FECHAR FILA
DESCONECTAR

Fluxo típico do consumidor:

CONECTAR
ABRIR FILA
LER MENSAGEM
PROCESSAR
FECHAR FILA
DESCONECTAR

Conceitualmente:

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

Cada chamada retorna:

  • completion code;

  • reason code.

O completion code indica a categoria geral:

  • sucesso;

  • aviso;

  • falha.

O reason code explica o motivo específico.

Nunca ignore esses códigos.

Uma chamada MQ que “aparentemente funcionou” não constitui evidência técnica.

O programador deve registrar informações como:

  • nome do Queue Manager;

  • nome da fila;

  • operação;

  • completion code;

  • reason code;

  • Message ID;

  • Correlation ID;

  • data e hora;

  • identificador de negócio.

Esses dados transformam uma investigação de cinco horas em uma investigação de vinte minutos.

Ou, pelo menos, em uma investigação de cinco horas com melhor documentação.


Capítulo 10 — Message ID e Correlation ID

O MQ possui identificadores importantes no cabeçalho da mensagem.

Message ID

Identifica tecnicamente uma mensagem.

Pode ser gerado pelo Queue Manager.

Correlation ID

Permite relacionar mensagens.

Imagine o modelo request/reply.

O Sistema A envia uma solicitação:

PEDIDO 784512

O Sistema B processa e devolve uma resposta.

Como A saberá qual resposta pertence a qual pedido?

Usando correlação.

SOLICITAÇÃO
MESSAGE-ID = ABC123

RESPOSTA
CORREL-ID = ABC123

Assim, o consumidor pode procurar a resposta relacionada à solicitação original.

Em aplicações de alto volume, isso é essencial.

Sem correlação, receber respostas seria semelhante a entrar em um terminal espacial, ouvir alguém gritar “seu transporte chegou” e embarcar no primeiro veículo disponível.

Pode funcionar.

Mas talvez você termine em um planeta dedicado à contabilidade tributária intergaláctica.


Capítulo 11 — Request/Reply

Embora MQ seja assíncrono, ele também pode implementar solicitação e resposta.

Fluxo:

SISTEMA A
   |
   | solicitação
   v
FILA.REQUEST
   |
   v
SISTEMA B
   |
   | resposta
   v
FILA.REPLY
   |
   v
SISTEMA A

A mensagem de solicitação pode indicar:

  • fila de resposta;

  • Queue Manager de resposta;

  • identificador para correlação.

Esse modelo é útil quando A precisa de retorno, mas deseja manter os benefícios da mensageria.

No entanto, é necessário definir timeout.

O Sistema A não pode esperar eternamente.

Em algum momento, ele precisa decidir:

  • continuar aguardando;

  • consultar depois;

  • gerar pendência;

  • tentar novamente;

  • informar processamento assíncrono;

  • encaminhar para intervenção humana.

A ausência de resposta não significa necessariamente que a operação falhou.

Pode significar que a resposta está atrasada.

Esse é outro motivo para utilizar identificadores únicos e consultas de status.


Capítulo 12 — Dead Letter Queue: o setor de achados e perdidos

Nem toda mensagem consegue chegar ao destino.

A fila pode não existir.

O caminho pode estar incorreto.

O destino pode rejeitar.

A mensagem pode expirar.

A configuração pode estar inconsistente.

Nesses casos, mensagens podem ser encaminhadas para a Dead Letter Queue, também chamada de fila de mensagens não entregues.

Pense nela como o setor de bagagens extraviadas da integração.

A mensagem não é simplesmente abandonada.

Ela é armazenada com informações que ajudam a explicar o problema.

A Dead Letter Queue deve ser monitorada.

Criar uma DLQ e nunca verificá-la é como instalar um alarme de incêndio dentro de um armário à prova de som.

O alarme funciona perfeitamente.

Apenas ninguém percebe.

Uma boa operação de MQ deve definir:

  • quem monitora a DLQ;

  • com que frequência;

  • quais alertas são gerados;

  • como analisar o motivo;

  • quando reenviar;

  • quando corrigir dados;

  • quando descartar;

  • como registrar evidências.


Capítulo 13 — Backout Queue: a mensagem amaldiçoada

Imagine uma mensagem com conteúdo inválido.

O consumidor lê.

Tenta processar.

Falha.

Faz rollback.

A mensagem volta para a fila.

O consumidor lê novamente.

Falha novamente.

Rollback.

A mensagem volta.

Esse ciclo pode continuar indefinidamente:

LER
FALHAR
ROLLBACK
LER
FALHAR
ROLLBACK

Essa é a chamada poison message, ou mensagem venenosa.

Ela bloqueia ou prejudica o fluxo.

Para tratar esse cenário, pode-se usar controle de backout.

Depois de determinado número de tentativas, a mensagem é movida para uma Backout Queue.

Assim, o restante do processamento continua.

A mensagem problemática fica isolada para investigação.

É o equivalente operacional a retirar da nave uma caixa que emite luz verde, produz ruídos desconhecidos e possui uma etiqueta dizendo:

NÃO ABRIR EM PRODUÇÃO

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

O MQ possui diferentes tipos de objetos.

Local Queue

É uma fila real no Queue Manager.

Armazena mensagens localmente.

Remote Queue Definition

É uma definição que representa uma fila localizada em outro Queue Manager.

Ela orienta o MQ sobre o destino remoto.

Transmission Queue

Armazena temporariamente mensagens que serão enviadas para outro Queue Manager.

Fluxo simplificado:

QM_A
 |
 | Remote Queue
 v
Transmission Queue
 |
 | Channel
 v
QM_B
 |
 v
Local Queue

Esse desenho permite comunicação distribuída.

A aplicação em A não precisa administrar diretamente os detalhes de rede.

Ela coloca a mensagem em uma definição apropriada.

A infraestrutura MQ cuida do encaminhamento.

Essa é uma das razões pelas quais MQ é tão poderoso em grandes empresas: ele fornece uma malha confiável entre plataformas, datacenters e sistemas heterogêneos.


Capítulo 15 — Canais: as rotas entre os mundos

Os channels permitem a comunicação entre Queue Managers ou entre clientes e servidores MQ.

Existem diferentes tipos de canais, cada um com finalidade específica.

Em uma comunicação entre Queue Managers, canais enviam mensagens pelas rotas configuradas.

Uma arquitetura pode envolver:

z/OS
 |
 | MQ Channel
 v
Linux
 |
 | MQ Channel
 v
Cloud

O canal precisa ser:

  • configurado;

  • autenticado;

  • protegido;

  • monitorado;

  • recuperado em caso de falha.

A existência de uma fila não significa que a rota esteja saudável.

É possível ter:

  • mensagens acumuladas na transmission queue;

  • canal parado;

  • erro de conexão;

  • certificado expirado;

  • endereço incorreto;

  • bloqueio de firewall;

  • falha de autenticação;

  • incompatibilidade de configuração.

Por isso, o analista precisa olhar o fluxo completo.

Não basta perguntar:

A mensagem foi colocada na fila?

Também é necessário perguntar:

  • Em qual Queue Manager?

  • Em qual fila?

  • Foi encaminhada?

  • O canal estava ativo?

  • A fila de transmissão acumulou mensagens?

  • O destino recebeu?

  • O consumidor retirou?

  • O processamento confirmou?


Capítulo 16 — IBM MQ no mundo COBOL, CICS e z/OS

No mainframe, o MQ aparece integrado a diferentes tipos de aplicação.

COBOL batch

Um programa batch pode gerar mensagens a partir de:

  • arquivos sequenciais;

  • VSAM;

  • tabelas Db2;

  • processamento diário;

  • fechamento contábil;

  • lote de pagamentos.

Exemplo:

ARQUIVO DE PEDIDOS
        |
        v
PROGRAMA COBOL
        |
        v
FILA MQ
        |
        v
SISTEMA LOGÍSTICO

COBOL CICS

Uma transação CICS pode colocar mensagens sem precisar aguardar todo o processamento posterior.

Exemplo:

CLIENTE CONFIRMA PEDIDO
        |
        v
CICS VALIDA
        |
        v
MQPUT
        |
        v
RESPOSTA AO TERMINAL

A emissão fiscal, separação de estoque e integração logística podem acontecer posteriormente.

Isso melhora a experiência do usuário e reduz dependências.

IMS

Aplicações IMS também podem participar de fluxos integrados via MQ.

Db2

MQ e Db2 podem ser coordenados em transações, dependendo da arquitetura.

Java e sistemas distribuídos

Uma aplicação COBOL pode enviar uma mensagem consumida por Java em Linux.

O receptor não precisa saber que o emissor é COBOL.

O emissor não precisa saber que o receptor roda em contêiner.

Ambos precisam respeitar o contrato.

É assim que tecnologias de gerações diferentes trabalham juntas sem transformar o datacenter em uma guerra civil tecnológica.


Capítulo 17 — MQ não é apenas para sistemas antigos

Algumas pessoas acreditam que MQ é legado.

Essa conclusão costuma vir de duas fontes:

  1. desconhecimento;

  2. apresentações com muitos hexágonos coloridos.

MQ continua relevante porque os problemas que ele resolve continuam existindo.

Redes ainda falham.

Sistemas ainda ficam indisponíveis.

Aplicações ainda precisam de transações.

Pagamentos ainda não podem desaparecer.

Pedidos ainda não devem ser duplicados.

Empresas modernas utilizam IBM MQ com:

  • containers;

  • Kubernetes;

  • Red Hat OpenShift;

  • APIs;

  • microserviços;

  • cloud híbrida;

  • Java;

  • Node.js;

  • Python;

  • .NET;

  • aplicações mainframe.

Tecnologia antiga é uma ferramenta que deixou de resolver problemas relevantes.

Tecnologia madura é uma ferramenta que continua resolvendo problemas importantes depois de décadas.

O IBM MQ pertence à segunda categoria.


Capítulo 18 — MQ versus REST

REST é excelente para comunicação síncrona.

Exemplo:

CLIENTE SOLICITA SALDO
       |
       v
API REST
       |
       v
RESPOSTA IMEDIATA

O usuário precisa do saldo naquele momento.

MQ é excelente quando o processamento pode ou deve ser desacoplado:

CLIENTE ENVIA PEDIDO
       |
       v
MQ
       |
       v
PROCESSAMENTO POSTERIOR

REST e MQ não são inimigos.

Uma arquitetura pode usar os dois:

APP
 |
 | REST
 v
API
 |
 | MQPUT
 v
FILA
 |
 v
BACKEND

A API recebe a requisição, valida e publica a mensagem.

O backend processa de forma assíncrona.

A resposta inicial pode ser:

{
  "protocolo": "784512",
  "status": "RECEBIDO"
}

Depois, o cliente consulta o resultado.

Isso é comum em operações que não precisam terminar durante a chamada inicial.


Capítulo 19 — MQ versus Kafka

Kafka e MQ são frequentemente comparados como se somente um pudesse existir.

Na prática, eles resolvem problemas parcialmente diferentes.

IBM MQ

Muito forte em:

  • entrega confiável de mensagens;

  • filas de trabalho;

  • transações;

  • request/reply;

  • integração corporativa;

  • processamento ponto a ponto;

  • operações críticas.

Kafka

Muito forte em:

  • streaming de eventos;

  • retenção de histórico;

  • replay;

  • múltiplos consumidores;

  • pipelines de dados;

  • grande escala de eventos;

  • analytics.

Uma empresa pode usar MQ para autorizar um pagamento e Kafka para distribuir o evento de pagamento autorizado para analytics, fraude, marketing e relatórios.

Exemplo:

PAGAMENTO
   |
   v
IBM MQ
   |
   v
CORE FINANCEIRO
   |
   v
EVENTO PUBLICADO
   |
   v
KAFKA

A pergunta correta não é:

Qual tecnologia é melhor?

A pergunta correta é:

Qual problema estamos tentando resolver?

Essa pergunta, embora simples, tem o curioso efeito de reduzir em 73% o número de diagramas inúteis em reuniões de arquitetura.


Capítulo 20 — Passo a passo mental para investigar problemas

Quando uma integração MQ falhar, não comece culpando a rede.

Também não comece culpando o COBOL.

E, por razões diplomáticas, não comece culpando o fornecedor.

Siga o caminho da mensagem.

Passo 1 — A aplicação gerou a mensagem?

Verifique:

  • log;

  • retorno do MQPUT;

  • completion code;

  • reason code;

  • data e hora;

  • identificação da transação.

Passo 2 — A mensagem entrou na fila?

Verifique a profundidade da fila e os registros de aplicação.

Passo 3 — A mensagem era persistente?

Isso importa em caso de falha ou reinicialização.

Passo 4 — O canal estava funcionando?

Se o destino é remoto, confira:

  • status do canal;

  • fila de transmissão;

  • erros de conexão;

  • autenticação;

  • TLS;

  • rede.

Passo 5 — A mensagem chegou ao Queue Manager de destino?

Verifique a fila local de destino.

Passo 6 — O consumidor estava ativo?

Pode haver mensagens disponíveis, mas nenhuma aplicação consumindo.

Passo 7 — O consumidor leu a mensagem?

Confirme por logs, Message ID, Correlation ID ou identificador de negócio.

Passo 8 — Houve commit?

A mensagem pode ter sido lida e devolvida por rollback.

Passo 9 — Ela foi para uma Backout Queue?

Uma mensagem problemática pode ter sido isolada.

Passo 10 — O negócio foi concluído?

Entrega técnica não significa conclusão funcional.

A mensagem pode ter chegado, mas sido rejeitada por:

  • cadastro inexistente;

  • valor inválido;

  • formato incorreto;

  • versão incompatível;

  • regra de negócio;

  • duplicidade;

  • data fora do período.

Essa distinção é fundamental:

ENTREGA TÉCNICA ≠ PROCESSAMENTO DE NEGÓCIO

Capítulo 21 — Boas práticas para o Padawan COBOL

1. Verifique todos os retornos

Nunca ignore completion code e reason code.

2. Registre identificadores

Guarde:

  • Message ID;

  • Correlation ID;

  • protocolo de negócio;

  • fila;

  • Queue Manager;

  • timestamp.

3. Defina um contrato de mensagem

Documente:

  • layout;

  • versão;

  • campos;

  • codificação;

  • regras;

  • tamanho máximo.

4. Planeje duplicidades

Use identificadores únicos e processamento idempotente.

5. Trate poison messages

Configure estratégia de backout.

6. Monitore profundidade das filas

Fila crescendo continuamente pode indicar:

  • consumidor parado;

  • consumidor lento;

  • volume inesperado;

  • erro de processamento.

7. Defina expiração quando fizer sentido

Nem toda mensagem precisa viver para sempre.

Uma cotação válida por cinco minutos talvez não deva ser processada três dias depois.

8. Não use uma única fila para tudo

Separar fluxos facilita:

  • monitoramento;

  • segurança;

  • prioridade;

  • capacidade;

  • resolução de problemas.

9. Não coloque senha ou dado sensível sem proteção

Segurança não desaparece porque a mensagem está dentro do datacenter.

10. Teste falhas deliberadamente

Desligue consumidores em homologação.

Interrompa canais.

Simule rollback.

Reinicie componentes.

Observe o comportamento.

Um sistema confiável não é aquele que nunca falhou.

É aquele cujo comportamento durante a falha foi planejado.


Curiosidades do setor galáctico de mensageria

O IBM MQ surgiu originalmente como MQSeries na década de 1990.

Depois foi chamado de WebSphere MQ.

Mais tarde, voltou a uma identidade mais direta: IBM MQ.

O produto atravessou várias eras tecnológicas:

  • cliente-servidor;

  • arquitetura distribuída;

  • SOA;

  • web services;

  • APIs;

  • microserviços;

  • containers;

  • cloud híbrida.

Enquanto nomes, padrões e modas mudavam, o problema central permanecia:

Como entregar uma informação importante com confiança?

MQ também é multiplataforma.

Ele permite integrar aplicações rodando em ambientes muito diferentes.

Essa neutralidade tecnológica é valiosa.

Uma mensagem não se importa se foi criada por COBOL, Java ou Python.

Ela apenas deseja ser tratada com respeito, processada corretamente e não abandonada em uma fila sem monitoramento por sete anos.


Easter egg: a resposta fundamental da integração

Segundo uma conhecida tradição literária galáctica, a resposta para a vida, o universo e tudo mais é 42.

No mundo da mensageria, porém, a resposta correta depende do Reason Code.

Se o retorno foi diferente de zero, consultar apenas a filosofia talvez não resolva.

Ainda assim, o número 42 pode aparecer em seu programa:

IF WS-MQ-REASON-CODE = 42
    DISPLAY 'A RESPOSTA FOI ENCONTRADA'
END-IF

Não há garantia de que o Queue Manager considere isso uma prática recomendada.

Outro easter egg importante:

Sempre carregue uma toalha.

Mas, em uma sala de servidores, evite colocá-la sobre a saída de ventilação.


Conclusão — Do “espero que tenha chegado” ao “sei onde está”

IBM MQ não é apenas uma fila.

É uma infraestrutura de confiança.

Ele permite que sistemas diferentes troquem informações mesmo quando:

  • um deles está indisponível;

  • a rede apresenta falhas;

  • o processamento demora;

  • os componentes operam em velocidades diferentes;

  • existe necessidade de transação;

  • o ambiente precisa recuperar mensagens após falhas.

Para o programador COBOL, aprender MQ significa ampliar a visão além do programa individual.

Você deixa de pensar apenas em:

ENTRADA
PROCESSAMENTO
SAÍDA

e começa a pensar em:

PRODUTOR
MENSAGEM
FILA
TRANSPORTE
CONSUMIDOR
COMMIT
RECUPERAÇÃO
AUDITORIA

Esse é um passo importante na formação de um profissional mainframe.

O programa COBOL pode estar perfeito.

O JCL pode terminar com MAXCC=0000.

A atualização Db2 pode estar correta.

Mas, se a informação precisa chegar a outro sistema, alguém deve garantir a viagem.

O IBM MQ assume esse papel.

Ele não exige aplausos.

Não aparece para o usuário final.

Não recebe crédito quando tudo funciona.

Permanece silenciosamente transportando pagamentos, pedidos, reservas, autorizações e eventos entre sistemas.

Quando algum componente fica offline, o MQ não entra em pânico.

Ele guarda a mensagem.

Espera.

Tenta novamente.

E, quando o receptor finalmente retorna, entrega o conteúdo como se dissesse:

“Você demorou. Mas eu trouxe o pacote.”

É por isso que grandes empresas confiam no IBM MQ.

Não porque falhas nunca acontecem.

Mas porque, quando acontecem, a mensagem não precisa desaparecer no vazio interestelar da integração.

Ela fica na fila.

Segura.

Persistente.

Rastreável.

Esperando o momento certo de continuar sua viagem.

E essa é a diferença entre:

“Acho que o pagamento foi enviado.”

e:

“A transação está registrada, a mensagem está protegida e sabemos exatamente onde ela está.”

No universo dos sistemas críticos, essa diferença vale mais que ouro, mais que créditos galácticos e, em certos fechamentos bancários, possivelmente mais que uma nave inteiramente abastecida com café.


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