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

Translate

segunda-feira, 7 de janeiro de 2019

🦇 ALFRED PENNYWORTH E AS 10 FERRAMENTAS QUE NÃO PRECISAVAM INVADIR O MAINFRAME

 

Bellacosa Mainframe e as 10 ferramentas para ataque hacker

☕ Um Café no Bellacosa Mainframe

🦇 ALFRED PENNYWORTH E AS 10 FERRAMENTAS QUE NÃO PRECISAVAM INVADIR O MAINFRAME

Flipper Zero, HackRF One, USB Rubber Ducky, Wi-Fi Pineapple, O.MG Cable, Bash Bunny, Proxmark3, LAN Turtle, Raspberry Pi, adaptadores Wi-Fi, endpoints, redes, RACF, SMF, CICS, Db2, MQ, USS, Zero Trust — e o dia em que Alfred explicou ao jovem programador COBOL que proteger a Batcaverna não adianta muito quando alguém possui a chave da porta.




Sob a tutela de Alfred Pennyworth, o homem que provavelmente perguntaria primeiro quem limpou o teclado antes de deixar Batman procurar uma vulnerabilidade no RACF.



🎬 PRÓLOGO — SENHOR WAYNE, O PROBLEMA TALVEZ NÃO ESTEJA NO MAINFRAME

Era 03:17 da madrugada.

Naturalmente.

Porque incidentes importantes jamais parecem acontecer às 14:30 de uma terça-feira tranquila, quando toda a equipe está disponível, o café está fresco e ninguém está tentando entrar em uma reunião.

O jovem programador COBOL estava diante de uma tela 3270.

Na tela:

ICH408I USER(BRUCE01) GROUP(WAYNE)
NAME(BRUCE WAYNE)

Ele olhou assustado para Alfred.

— Alfred! Alguém está tentando invadir o mainframe!

O mordomo colocou calmamente uma xícara de café ao lado do terminal.

— Tem certeza, senhor?

— RACF registrou uma tentativa!

— Isso significa que alguém tentou utilizar uma identidade. Não necessariamente que começou atacando o mainframe.

O jovem franziu a testa.

Alfred apontou para o notebook.

— Talvez devêssemos começar por aí.

E é exatamente aí que começa nossa história.

Porque uma das maiores armadilhas ao estudar segurança de mainframe é imaginar o ataque assim:

HACKER
  │
  ▼
INTERNET
  │
  ▼
MAINFRAME

Na vida real, o caminho pode ser muito mais comprido:

PESSOA
   │
   ▼
DISPOSITIVO
   │
   ▼
ENDPOINT
   │
   ▼
IDENTIDADE
   │
   ▼
REDE
   │
   ▼
VPN
   │
   ▼
SERVIÇOS CORPORATIVOS
   │
   ├── Git
   ├── Jenkins
   ├── APIs
   ├── MQ
   ├── SSH
   └── 3270
         │
         ▼
        z/OS
         │
   ┌─────┼─────┐
   ▼     ▼     ▼
 CICS   IMS    USS
   │     │      │
   └─────┼──────┘
         ▼
       COBOL
         │
   ┌─────┼─────┐
   ▼     ▼     ▼
  Db2   VSAM   MQ

Essa mudança de perspectiva é fundamental.

Nosso assunto não é simplesmente:

“Como essas ferramentas atacariam um mainframe?”

A pergunta mais interessante é:

“Como o comprometimento do ecossistema que confia, administra, desenvolve ou acessa o mainframe pode finalmente atingir o mainframe?”

Pegue o café.

Alfred já abriu a Batcaverna.



🏰 CAPÍTULO 1 — O MAINFRAME NÃO É UMA ILHA

Para quem começa em COBOL, existe uma ilusão compreensível.

Você entra no TSO, abre ISPF, edita um programa, submete um JCL e começa a imaginar o mainframe como um universo independente.

Algo semelhante a:

           ┌─────────────────┐
           │    MAINFRAME    │
           │                 │
           │ COBOL           │
           │ JCL             │
           │ CICS            │
           │ Db2             │
           │ VSAM            │
           │ RACF            │
           └─────────────────┘

Mas o mainframe empresarial moderno participa de um ecossistema enorme.

Existem conexões com aplicações web, APIs, sistemas distribuídos, mensageria, servidores Linux, cloud, pipelines DevOps, sistemas de identidade, ferramentas de observabilidade e estações administrativas.

Portanto, precisamos desenhar outra arquitetura:

                 INTERNET
                    │
               FIREWALL/WAF
                    │
            REDE CORPORATIVA
                    │
       ┌────────────┼─────────────┐
       │            │             │
       ▼            ▼             ▼
   Windows        Linux       Kubernetes
       │            │             │
       ├────────────┼─────────────┤
                    │
               API / MQ
                    │
                    ▼
                  IBM Z
                    │
                  z/OS
          ┌─────────┼─────────┐
          ▼         ▼         ▼
        CICS       IMS       USS
          │         │         │
          └─────────┼─────────┘
                    ▼
               COBOL / PL/I
                    │
          ┌─────────┼─────────┐
          ▼         ▼         ▼
         Db2       VSAM       MQ

Alfred provavelmente resumiria:

“Senhor, um castelo com cinquenta pontes levadiças continua sendo um castelo. Mas agora temos cinquenta pontes para vigiar.”



🐬 CAPÍTULO 2 — FLIPPER ZERO: O ATAQUE PODE COMEÇAR NO CRACHÁ

O Flipper Zero é uma plataforma portátil para experimentação com diferentes tecnologias de hardware e radiofrequência.

O erro seria olhar para ele e perguntar:

“Como conecto isso ao z/OS?”

Não é essa a principal lição.

Pense no profissional que possui acesso ao mainframe.

Ele pode possuir:

CRACHÁ
  │
NOTEBOOK
  │
MFA
  │
VPN
  │
USERID
  │
RACF
  │
z/OS

Percebeu?

A segurança do mainframe pode começar na porta do prédio.

Isso cria três níveis interessantes:

IDENTIDADE FÍSICA
       │
       ▼
IDENTIDADE CORPORATIVA
       │
       ▼
IDENTIDADE MAINFRAME

Um ambiente maduro não deveria simplesmente presumir que as três são automaticamente equivalentes.

O fato de alguém possuir acesso físico não deveria significar automaticamente acesso lógico.

O fato de estar na rede corporativa não deveria significar confiança irrestrita.

E possuir um USERID não deveria significar acesso a qualquer recurso.

Esse princípio será importante durante todo nosso passeio pela Batcaverna.



📻 CAPÍTULO 3 — HACKRF ONE: O MAINFRAME NÃO PRECISA TER UMA ANTENA

O HackRF One nos leva ao universo de software-defined radio.

Mas nosso programador COBOL pergunta:

— Alfred, onde conectamos isso no CICS?

— Em lugar nenhum, espero.

Essa é precisamente a questão.

O risco não precisa existir diretamente no IBM Z.

Pode existir em uma infraestrutura da qual outro sistema depende.

Pense em camadas:

MUNDO FÍSICO
     │
RADIOFREQUÊNCIA
     │
DISPOSITIVO
     │
ENDPOINT
     │
REDE
     │
APLICAÇÃO
     │
MAINFRAME

Segurança moderna é uma disciplina de dependências.

Seu COBOL pode ser perfeito.

Seu CICS pode estar corretamente configurado.

Seu RACF pode aplicar regras rigorosas.

Mesmo assim, existe uma pergunta:

o que existe antes deles?



🦆 CAPÍTULO 4 — USB RUBBER DUCKY: QUANDO O TECLADO NÃO TEM DEDOS

Dispositivos USB voltados a testes de segurança demonstram uma ideia fascinante: um computador não sabe necessariamente que existe uma pessoa legítima do outro lado de cada interação com um periférico.

Para nós, entretanto, o importante é o endpoint.

Imagine a estação de um administrador:

┌──────────────────────────────┐
│ NOTEBOOK ADMINISTRATIVO      │
│                              │
│ VPN                          │
│ Emulador 3270                │
│ Cliente SSH                  │
│ Git                          │
│ Jenkins                      │
│ Ferramentas administrativas │
│ Navegador                    │
└──────────────┬───────────────┘
               │
               ▼
             z/OS

Agora surge uma pergunta maravilhosa para um exercício de segurança:

O que acontece se considerarmos esse notebook não confiável?

Esse é um exercício mental muito melhor do que simplesmente perguntar se RACF é seguro.

Se o endpoint for comprometido, o sistema ainda possui outras barreiras?

Temos MFA?

Privilégio mínimo?

Segmentação?

Sessões administrativas separadas?

Monitoramento?

Expiração?

Auditoria?

Detecção de comportamento anormal?

Alfred anotaria:

“Uma chave excelente continua sendo uma chave, senhor. Convém saber quem está segurando-a.”


🍍 CAPÍTULO 5 — WI-FI PINEAPPLE: NÃO PRECISA EXISTIR WI-FI NO z/OS

Aqui aparece outro erro comum.

— Mainframe não usa Wi-Fi. Portanto, ataques Wi-Fi não são problema de mainframe.

Alfred ergueria uma sobrancelha.

O mainframe pode não utilizar Wi-Fi.

O profissional que acessa o mainframe utiliza.

Considere:

CASA / HOTEL / AEROPORTO
          │
        Wi-Fi
          │
       Internet
          │
         VPN
          │
   Rede corporativa
          │
      TN3270/SSH
          │
         z/OS

A superfície de ataque não termina naquilo que está fisicamente conectado ao IBM Z.

Esse conceito é fundamental para Zero Trust.

Em vez de:

DENTRO = CONFIÁVEL
FORA   = PERIGOSO

pensamos continuamente em identidade, dispositivo, contexto, privilégio e autorização.


🔌 CAPÍTULO 6 — O.MG CABLE: QUANDO ATÉ O CABO ENTRA NO MODELO DE AMEAÇA

Um cabo parece ser um componente passivo.

E exatamente por isso essa categoria de ferramenta é didaticamente maravilhosa.

Ela ensina:

Não confunda aparência física com função lógica.

No ambiente mainframe isso produz perguntas excelentes.

Quem pode conectar dispositivos às estações administrativas?

As portas USB são controladas?

Existem equipamentos pessoais?

Há inventário?

Estações privilegiadas possuem políticas diferentes?

Administradores utilizam a mesma máquina para navegar pela internet e administrar sistemas críticos?

Veja como nosso assunto deixou rapidamente de ser COBOL.

Mas continuará afetando COBOL.

Porque aquela estação pode ser utilizada para alterar código que posteriormente entra em um pipeline:

WORKSTATION
     │
     ▼
    Git
     │
     ▼
BUILD
     │
     ▼
TESTES
     │
     ▼
DEPLOY
     │
     ▼
CICS/BATCH

Então surge uma questão ainda mais interessante:

quem alterou o programa?

E depois:

quem aprovou a alteração?

E finalmente:

o código implantado corresponde exatamente ao código aprovado?

Bem-vindo ao DevSecOps no mainframe.


🐇 CAPÍTULO 7 — BASH BUNNY E O PROBLEMA DO ENDPOINT PRIVILEGIADO

Outra classe de dispositivo USB voltada a testes de segurança reforça nossa investigação do endpoint.

O notebook de um desenvolvedor comum pode ter acesso limitado.

Já uma estação administrativa pode concentrar:

VPN
3270
SSH
z/OSMF
Git
Jenkins
Documentação
Scripts
Credenciais
Tokens
Logs
Ferramentas de suporte

Isso cria uma concentração de confiança.

Nosso modelo original:

ATACANTE → MAINFRAME

começa a parecer ingênuo.

Um modelo mais útil seria:

ATACANTE
   │
   ▼
ENDPOINT
   │
   ▼
IDENTIDADE
   │
   ▼
RELAÇÃO DE CONFIANÇA
   │
   ▼
SERVIÇO AUTORIZADO
   │
   ▼
MAINFRAME

Perceba uma coisa importantíssima:

o objetivo de uma arquitetura segura não é simplesmente impedir a primeira falha.

Devemos presumir que alguma barreira pode falhar.

A pergunta passa a ser:

Se uma camada falhar, quantas outras precisam falhar antes de chegarmos ao dado crítico?

Isso é defesa em profundidade.


📡 CAPÍTULO 8 — PROXMARK3: QUEM É BRUCE WAYNE?

Ferramentas de pesquisa RFID são particularmente interessantes porque nos obrigam a discutir identidade.

Suponha:

BRUCE WAYNE
     │
     ├── crachá físico
     │
     ├── identidade corporativa
     │
     ├── MFA
     │
     └── RACF USERID

São quatro coisas relacionadas, mas não necessariamente idênticas.

O sistema precisa determinar:

QUEM É VOCÊ?
      │
      ▼
PODE PROVAR?
      │
      ▼
O QUE PODE FAZER?
      │
      ▼
EM QUAL RECURSO?
      │
      ▼
EM QUAL CONTEXTO?
      │
      ▼
FICOU REGISTRADO?

Isso nos leva à diferença essencial entre autenticação e autorização.

Autenticação responde aproximadamente:

Quem está se apresentando?

Autorização responde:

O que essa identidade pode fazer?

E auditoria acrescenta:

O que ela realmente fez?

Para quem começa em mainframe, entender essa diferença cedo evita muita confusão sobre RACF.


🐢 CAPÍTULO 9 — LAN TURTLE: “ESTÁ DENTRO DA REDE” NÃO É CERTIFICADO DE BOA CONDUTA

Durante muito tempo, arquiteturas empresariais trabalharam fortemente com perímetros.

Simplificando:

        FIREWALL
           │
INTERNET ──┼── EMPRESA
 RUIM      │    BOM

O mundo ficou complicado demais para essa interpretação.

Imagine um dispositivo desconhecido dentro da rede.

A pergunta não é somente:

“Ele consegue chegar diretamente ao z/OS?”

Pergunte também:

“A quais sistemas que conversam com o z/OS ele consegue chegar?”

Por exemplo:

DISPOSITIVO
     │
     ▼
SERVIDOR
     │
     ▼
API
     │
     ▼
MQ
     │
     ▼
CICS
     │
     ▼
COBOL
     │
     ▼
Db2

Agora temos uma cadeia de confiança.

E uma das ferramentas intelectuais mais poderosas para um Red Team é justamente desenhar essas cadeias.


🍓 CAPÍTULO 10 — RASPBERRY PI: NÃO JULGUE UMA AMEAÇA PELO TAMANHO

Um Raspberry Pi cabe praticamente na mão.

Mas é um computador.

Isso ensina uma lição simples:

TAMANHO FÍSICO
      ≠
CAPACIDADE LÓGICA

Para defesa corporativa, surgem perguntas:

Quem colocou o equipamento ali?

Está inventariado?

Qual endereço possui?

Em qual segmento está?

Com quais sistemas conversa?

O SOC consegue identificá-lo?

Existe tráfego incomum?

Está executando um serviço autorizado?

Essa mentalidade também vale para VMs, containers, appliances e dispositivos de rede.

O que não conhecemos é difícil proteger.


📶 CAPÍTULO 11 — ALFA WI-FI ADAPTER: DISTÂNCIA NÃO É ISOLAMENTO

Adaptadores wireless especializados lembram que o perímetro físico também não é uma garantia absoluta.

Mas novamente:

não estamos imaginando uma antena conversando magicamente com um programa COBOL.

O encadeamento é mais interessante:

WIRELESS
   │
   ▼
ENDPOINT
   │
   ▼
IDENTIDADE
   │
   ▼
VPN
   │
   ▼
REDE CORPORATIVA
   │
   ▼
GATEWAY
   │
   ▼
z/OS

Uma vulnerabilidade aparentemente distante pode fazer parte de uma cadeia maior.

Essa palavra merece destaque:

CADEIA

Segurança raramente é apenas uma vulnerabilidade isolada.


🦇 CAPÍTULO 12 — ALFRED DESENHA A BATCAVERNA

Agora podemos juntar tudo.

Antes de testar qualquer coisa, desenhe.

                         PESSOA
                           │
                           ▼
                        CRACHÁ
                           │
                           ▼
                        LAPTOP
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
             USB          Wi-Fi        VPN
                                        │
                                        ▼
                               REDE CORPORATIVA
                                        │
                    ┌───────────────────┼─────────────┐
                    ▼                   ▼             ▼
                  TN3270               SSH           API
                    │                   │             │
                    └───────────────────┼─────────────┘
                                        ▼
                                      z/OS
                                        │
                        ┌───────────────┼──────────────┐
                        ▼               ▼              ▼
                       CICS            IMS            USS
                        │               │              │
                        └───────────────┼──────────────┘
                                        ▼
                                      COBOL
                                        │
                             ┌──────────┼──────────┐
                             ▼          ▼          ▼
                            Db2        VSAM        MQ

Agora faça o exercício passo a passo.

Passo 1 — Identifique as identidades

Liste usuários humanos, IDs técnicos, aplicações, serviços e integrações.

Passo 2 — Identifique os caminhos

Quem conversa com quem?

Não olhe somente para Internet → z/OS.

Olhe lateralmente.

Passo 3 — Identifique privilégios

Pergunte:

“Se esta identidade for comprometida, até onde ela chega?”

Essa pergunta é extraordinariamente poderosa.

Passo 4 — Procure confiança implícita

Algo recebe privilégios simplesmente porque está “dentro”?

Existe aplicação confiando cegamente em outra aplicação?

Passo 5 — Procure concentração

Um único notebook possui acesso a dezenas de ambientes?

Um único ID possui privilégios demais?

Uma conta técnica é utilizada por várias aplicações?

Passo 6 — Procure evidências

Se algo acontecer, conseguimos reconstruir a história?

E aqui Alfred finalmente conhece um senhor bastante antigo.

Seu nome é SMF.


📜 CAPÍTULO 13 — SMF, O DIÁRIO SECRETO DA BATCAVERNA

Security Information and Event Management, observabilidade e análise forense dependem de evidências.

Imagine um incidente hipotético:

03:17  comportamento anormal no endpoint
03:19  autenticação VPN
03:22  conexão interna
03:24  autenticação no host
03:27  acesso incomum
03:29  transação CICS
03:31  atividade de dados
03:35  alerta de segurança

Nenhum evento sozinho necessariamente explica tudo.

Mas podemos correlacionar:

EDR
 │
Firewall
 │
VPN
 │
IDS
 │
RACF
 │
SMF
 │
CICS
 │
Db2
 │
MQ
 ▼
TIMELINE

É aqui que monitoramento deixa de ser simplesmente:

CPU = 35%

e passa a responder:

O QUE ACONTECEU?

QUEM FEZ?

QUANDO?

DE ONDE?

USANDO QUAL IDENTIDADE?

EM QUAL RECURSO?

QUAL FOI O RESULTADO?

O SMF não é apenas algo que existe para produzir relatórios que ninguém lê.

Em uma investigação, seus registros podem participar da reconstrução histórica do ambiente.


🔐 CAPÍTULO 14 — RACF NÃO É O BATMAN

RACF é extremamente importante.

Mas transformar RACF em uma espécie de super-herói mágico é um erro conceitual.

Pense:

             RACF
               │
       ┌───────┼────────┐
       ▼       ▼        ▼
    USERID   GRUPO   RECURSO

Ele participa de autenticação, autorização e controle de acesso dentro de sua arquitetura.

Mas existe uma questão desconfortável.

Imagine que:

USERID legítimo
       +
autenticação válida
       +
privilégio autorizado

estejam sendo utilizados em uma situação indevida.

Do ponto de vista de um sistema isolado, isso pode parecer atividade legítima.

Por isso precisamos de várias camadas:

IDENTIDADE
    +
MFA
    +
ENDPOINT SECURITY
    +
SEGMENTAÇÃO
    +
LEAST PRIVILEGE
    +
LOGGING
    +
DETECÇÃO
    +
CORRELAÇÃO
    +
RESPOSTA

A segurança emerge do conjunto.

Não de uma única ferramenta.


💻 CAPÍTULO 15 — E O QUE O PROGRAMADOR COBOL TEM A VER COM ISSO?

Tudo.

Imagine:

       EXEC CICS
            READ FILE('CLIENTES')
            INTO(WS-CLIENTE)
       END-EXEC.

Para o iniciante, existe apenas:

PROGRAMA → ARQUIVO

Alfred pediria que olhássemos novamente.

Quem chamou a transação?

Qual identidade?

Qual terminal ou aplicação?

De onde veio a solicitação?

A transação deveria acessar aquele registro?

Qual autorização existe?

O acesso é registrado?

Existe dado sensível?

O programa valida corretamente a entrada?

Há tratamento de erro?

Existe commit ou rollback apropriado?

O comportamento incomum seria detectado?

Agora aquele pequeno READ tornou-se parte de uma arquitetura empresarial.

Essa mudança de mentalidade diferencia:

“Eu sei COBOL.”

de:

“Eu entendo como minha aplicação COBOL participa de um sistema crítico.”


🛡️ CAPÍTULO 16 — DEFESA EM PROFUNDIDADE

Imagine dez portas entre Gotham e a Batcaverna.

Uma arquitetura frágil diz:

Ninguém conseguirá abrir a porta número 1.

Uma arquitetura resiliente pergunta:

O que acontece quando a porta número 1 inevitavelmente for aberta?

Esse é o espírito da defesa em profundidade.

ATACANTE
   │
   ▼
[BARREIRA 1] Segurança física
   │
   ▼
[BARREIRA 2] Endpoint
   │
   ▼
[BARREIRA 3] Identidade/MFA
   │
   ▼
[BARREIRA 4] Rede
   │
   ▼
[BARREIRA 5] Segmentação
   │
   ▼
[BARREIRA 6] RACF/SAF
   │
   ▼
[BARREIRA 7] Aplicação
   │
   ▼
[BARREIRA 8] Dados
   │
   ▼
[BARREIRA 9] Logging
   │
   ▼
[BARREIRA 10] Detecção e resposta

Agora temos uma arquitetura na qual uma falha não precisa significar catástrofe.


🕵️ CAPÍTULO 17 — RED TEAM MAINFRAME: NÃO COMECE PELO EXPLOIT

Aqui está talvez a maior lição de toda a conversa.

Um exercício defensivo sério não deveria começar necessariamente com:

“Qual vulnerabilidade existe no z/OS?”

Comece desenhando:

ASSETS
   ↓
IDENTITIES
   ↓
TRUST
   ↓
PATHS
   ↓
PRIVILEGES
   ↓
CONTROLS
   ↓
LOGS
   ↓
DETECTION

Pergunte:

Quem possui acesso privilegiado?

Como esses profissionais chegam ao ambiente?

Quais estações utilizam?

Existe acesso remoto?

Quais aplicações distribuídas conversam com o host?

Existem APIs?

MQ?

SSH?

TN3270?

USS?

Pipelines DevOps?

Contas técnicas?

Credenciais antigas?

IDs compartilhados?

Privilégios acumulados?

Ambientes DEV, TEST e PROD estão adequadamente separados?

E então faça minha pergunta favorita:

Se eu considerar um componente já comprometido, qual é a próxima barreira?

Essa pergunta transforma completamente a análise.


🧠 CAPÍTULO 18 — A DÉCIMA PRIMEIRA FERRAMENTA

Voltamos finalmente à imagem que iniciou nossa investigação.

Ela mostrava dez ferramentas.

Mas Alfred percebeu que faltava uma.

Não cabia numa mochila.

Não tinha USB.

Não tinha antena.

Não precisava de bateria.

Era:

CONHECIMENTO DA ARQUITETURA

Um especialista que compreende:

Windows
   │
AD / IdP
   │
VPN
   │
Firewall
   │
Git
   │
CI/CD
   │
API
   │
MQ
   │
z/OSMF
   │
SSH
   │
TN3270
   │
RACF
   │
CICS
   │
IMS
   │
USS
   │
COBOL
   │
Db2 / VSAM

possui algo extraordinariamente importante:

um mapa.

E Batman sabe muito bem:

não adianta possuir o melhor equipamento do mundo se você não sabe onde está.


🦇 CAPÍTULO 19 — O SEGREDO QUE ALFRED JÁ SABIA

O jovem programador terminou de examinar os logs.

Olhou para Alfred.

— Então nosso maior problema não é necessariamente alguém quebrar o RACF?

— Correto.

— Nem descobrir uma vulnerabilidade milagrosa no COBOL?

— Também não.

— Então qual é?

Alfred apontou para a arquitetura.

PESSOA
  │
DISPOSITIVO
  │
IDENTIDADE
  │
REDE
  │
APLICAÇÃO
  │
MAINFRAME
  │
DADOS

Confiança, senhor.

Essa talvez seja a palavra mais importante deste artigo.

Toda arquitetura possui relações de confiança.

O usuário confia no notebook.

A empresa confia no dispositivo.

A VPN confia na autenticação.

A aplicação confia em uma identidade.

Um serviço confia em outro serviço.

CICS confia em determinadas condições.

O sistema de segurança aplica autorizações.

O programa processa a requisição.

O banco devolve o dado.

Segurança consiste, em grande parte, em descobrir onde essa confiança existe, por que existe e o que acontece quando ela é abusada.


🥚 EASTER EGG — 03:17

E quanto ao horário do incidente?

03:17.

O jovem finalmente perguntou:

— Alfred, por que todos esses incidentes parecem acontecer às 03:17?

Alfred terminou o café.

— Porque às 03:16 todos os dashboards ainda estavam verdes, senhor.

Silêncio.

No monitor apareceu:

ICH408I

Alfred olhou para Batman.

Batman olhou para Alfred.

O programador COBOL olhou para o JCL.

E alguém finalmente perguntou aquilo que deveria ter sido perguntado no começo:

“De onde veio essa sessão?”


☕ EPÍLOGO — O MAINFRAME MAIS SEGURO DO MUNDO AINDA POSSUI UMA PORTA

As dez ferramentas da imagem são interessantes.

Mas o maior aprendizado não está nos gadgets.

Está na arquitetura.

Flipper Zero nos fez pensar em identidade física.

HackRF One nos fez pensar nas dependências externas.

USB Rubber Ducky e Bash Bunny colocaram o endpoint sob suspeita.

Wi-Fi Pineapple mostrou que o mainframe não precisa possuir Wi-Fi para que wireless faça parte do risco.

O.MG Cable mostrou que objetos aparentemente passivos podem entrar no modelo de ameaça.

Proxmark3 nos levou à identidade.

LAN Turtle colocou em dúvida a velha confiança automática na rede interna.

Raspberry Pi mostrou que tamanho físico não determina capacidade.

Adaptadores Wi-Fi nos lembraram que distância física não equivale necessariamente a isolamento.

E então chegamos ao IBM Z.

Encontramos RACF, SAF, TCP/IP, SSH, TN3270, USS, CICS, IMS, Db2, MQ e SMF.

Descobrimos que segurança de mainframe não significa construir um muro gigantesco ao redor de COBOL.

Significa compreender o ecossistema inteiro.

Para quem está começando, guarde este mapa:

             SEGURANÇA MAINFRAME

                    PESSOA
                      │
                      ▼
                  IDENTIDADE
                      │
                      ▼
                  ENDPOINT
                      │
                      ▼
                    REDE
                      │
                      ▼
                  SERVIÇOS
                      │
                      ▼
               RACF / SAF
                      │
                      ▼
             CICS / IMS / USS
                      │
                      ▼
                    COBOL
                      │
                      ▼
              Db2 / VSAM / MQ
                      │
                      ▼
                    DADO
                      │
                      ▼
              SMF / AUDITORIA
                      │
                      ▼
             DETECÇÃO/RESPOSTA

E toda vez que alguém disser:

“O mainframe é seguro.”

Não responda imediatamente que sim.

Também não responda que não.

Faça como Alfred Pennyworth.

Sirva o café.

Olhe calmamente para a arquitetura.

E pergunte:

“Seguro contra quem, senhor? Usando qual identidade, entrando por qual caminho, com qual privilégio — e quem perceberá quando alguma coisa sair do normal?”

Porque depois de décadas de evolução tecnológica, bilhões de transações, COBOL, CICS, IMS, Db2, MQ, RACF, SMF, APIs, cloud, DevOps, Zero Trust e inteligência artificial, continuamos chegando a uma verdade desconfortavelmente simples:

não basta proteger o mainframe.

É preciso proteger a confiança que leva até ele.

E talvez essa seja justamente a lição que Alfred tentaria ensinar a Batman antes de deixá-lo sair da Batcaverna com dez gadgets pendurados no cinto.

☕🦇 Bellacosa Mainframe — porque às 03:17 o problema raramente começa onde o ABEND aparece.



domingo, 6 de janeiro de 2019

⚓ ALMIRANTE GRACE HOPPER E O MAINFRAME QUE SE RECUSAVA A FICAR NO PASSADO

Bellacosa Mainframe fala do mainframe do futuro

☕ Um Café no Bellacosa Mainframe

⚓ ALMIRANTE GRACE HOPPER E O MAINFRAME QUE SE RECUSAVA A FICAR NO PASSADO

COBOL, Git, APIs, MQ, Kafka, CI/CD, Jenkins, OpenShift, observabilidade, segurança, IA e a estranha descoberta de que modernizar um mainframe não significa necessariamente jogar fora aquilo que funciona.



🎬 PRÓLOGO — O jovem programador e a máquina do tempo

Imagine seu primeiro dia trabalhando com mainframe.

Você aprendeu algumas coisas sobre COBOL.

Já sabe que existe:

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.

Descobriu que PIC X(10) não é uma fotografia de dez pixels e que COMP-3 provavelmente vai persegui-lo em algum momento da carreira.

Então você entra no ambiente corporativo.

TSO.

ISPF.

Datasets.

JCL.

JES2.

SDSF.

CICS.

Db2.

VSAM.

De repente surge uma senhora usando uniforme da Marinha dos Estados Unidos.

Ela olha para aquele monte de tecnologia e pergunta:

Muito bem, jovem. E onde está o Git?

Silêncio.

— Git?

— Sim. E o pipeline?

Mais silêncio.

— E como essa aplicação publica uma API?

Agora o iniciante começa a suar.

— Almirante Hopper... eu só queria aprender COBOL.

Bem-vindo ao Bellacosa Mainframe.

Pegue o café.

Porque hoje vamos descobrir que aprender COBOL é apenas a porta de entrada para uma cidade tecnológica gigantesca.

E nossa guia será ninguém menos que Grace Murray Hopper, pioneira da computação, uma das figuras históricas associadas ao desenvolvimento dos primeiros compiladores e cuja trajetória ajudou a estabelecer ideias que influenciaram profundamente o nascimento das linguagens de programação de alto nível e do próprio COBOL.

Se Hopper estivesse diante de um IBM Z moderno, provavelmente reconheceria imediatamente uma ideia que atravessou toda a história da computação:

A melhor tecnologia não é necessariamente aquela que substitui tudo. É aquela que permite evoluir sem destruir o que já funciona.



⚓ CAPÍTULO 1 — COBOL NÃO É O MAINFRAME

Esse é nosso primeiro ensinamento.

Muita gente começando mistura três conceitos:

COBOL
MAINFRAME
SISTEMA LEGADO

Como se fossem sinônimos.

Não são.

COBOL é uma linguagem.

Mainframe é uma plataforma computacional.

Legado é um conceito relacionado a sistemas existentes que carregam história, regras, dependências e valor para a organização.

Uma aplicação COBOL pode executar em diferentes plataformas.

E um IBM Z executa muito mais do que COBOL.

Dentro de um ambiente moderno podemos encontrar:

COBOL
PL/I
Assembler
Java
Python
REXX
Shell
JavaScript
SQL

Além de tecnologias como:

CICS
IMS
Db2
VSAM
MQ
z/OS Connect
z/OSMF
USS

Portanto, quando alguém pergunta:

"Como modernizamos o COBOL?"

talvez esteja fazendo a pergunta errada.

A pergunta melhor é:

Como modernizamos a maneira como essa aplicação é desenvolvida, integrada, testada, entregue, observada e mantida?

Essa pequena diferença muda tudo.



🧱 CAPÍTULO 2 — NÃO DEMOLIREMOS A CATEDRAL

Imagine uma aplicação bancária escrita em COBOL há 30 anos.

Ela possui:

2 milhões de linhas de código
centenas de programas
milhares de regras
copybooks
Db2
VSAM
CICS
jobs batch
interfaces
arquivos
relatórios

Alguém entra na reunião e diz:

— Está velho. Vamos reescrever tudo em Java.

Grace Hopper lentamente coloca a xícara sobre a mesa.

Silêncio na sala.

O problema não é Java.

O problema é imaginar que idade do código determina automaticamente ausência de valor arquitetural.

Aquele COBOL pode conter regras acumuladas durante décadas:

IF CLIENTE-VIP
   AND SALDO > LIMITE-MINIMO
   AND CARTAO-ATIVO
   AND NOT BLOQUEIO-FRAUDE
      PERFORM AUTORIZAR-COMPRA.

Parece simples.

Mas talvez existam outros 300 critérios espalhados pelo sistema.

Quando reescrevemos uma aplicação, não estamos simplesmente traduzindo:

COBOL → Java

Estamos tentando transportar:

30 anos de decisões
30 anos de exceções
30 anos de legislação
30 anos de bugs corrigidos
30 anos de conhecimento institucional

É como desmontar uma catedral pedra por pedra porque alguém não gosta da cor da porta.

Modernização inteligente começa perguntando:

O que realmente precisa mudar?



💻 CAPÍTULO 3 — O PROGRAMADOR COBOL GANHA UMA NOVA OFICINA

Durante décadas, uma imagem clássica do desenvolvimento mainframe foi:

TSO
 ↓
ISPF
 ↓
EDIT
 ↓
JCL
 ↓
COMPILADOR
 ↓
LINK-EDIT
 ↓
LOADLIB

Isso continua válido.

Aliás, iniciante: aprenda isso.

Não pule ISPF.

Não pule JCL.

Não pule SDSF.

Você precisa entender a máquina antes de automatizá-la.

Mas a oficina moderna ganhou ferramentas novas.

Podemos ter:

VS Code / IDz
       ↓
      Git
       ↓
Pull Request
       ↓
Code Review
       ↓
CI/CD
       ↓
Build
       ↓
Tests
       ↓
Deploy
       ↓
z/OS

Perceba algo maravilhoso.

O COBOL continua lá.

O que mudou foi o processo ao redor dele.



🌳 CAPÍTULO 4 — GIT ENCONTRA O COBOL

Imagine dois programadores modificando PGM001.

No modelo tradicional, o controle pode depender bastante da ferramenta de SCM mainframe utilizada e dos procedimentos da empresa.

Com Git temos conceitos como:

repository
branch
commit
merge
pull request
tag

Por exemplo:

main
 │
 ├──── feature/nova-regra-cartao
 │
 │          ↓
 │
 │       alterações
 │
 │          ↓
 │
 │        commit
 │
 │          ↓
 │
 └──────── merge

O grande ganho não é apenas guardar código.

Git permite registrar a história das mudanças.

Quem alterou?

Quando?

Por quê?

Qual ticket motivou?

Qual revisão aprovou?

Qual versão entrou em produção?

Isso conversa perfeitamente com uma filosofia antiga do Bellacosa Mainframe:

Código também é documento histórico.

Aquele comentário de manutenção:

* 2026-09-17 BELLACOSA
* AJUSTE REGRA DE AUTORIZACAO

continua útil.

Mas agora existe também uma trilha externa muito mais poderosa.


⚙️ CAPÍTULO 5 — CI/CD: O ROBÔ QUE NÃO ESQUECE PASSOS

Suponha que exista um procedimento com 17 passos para publicar uma aplicação.

Humano fazendo:

1
2
3
4
5
6
...
16
17

Depois de seis meses alguém executa:

1
2
3
4
6

Cadê o passo 5?

Produção descobre.

Pipeline existe justamente para transformar procedimentos repetitivos em processos executáveis.

COMMIT
   ↓
BUILD
   ↓
TEST
   ↓
SECURITY
   ↓
PACKAGE
   ↓
DEPLOY

Ferramentas como Jenkins podem orquestrar esse fluxo.

Mas atenção para uma distinção importante:

Jenkins não é o compilador COBOL.

Ele é um orquestrador.

Pode dizer:

execute build

Depois:

execute tests

Depois:

deploy

É quase como um maestro.

Os instrumentos continuam sendo outros.


📜 CAPÍTULO 6 — JCL NÃO MORREU; GANHOU UM ROBÔ

Aqui surge uma das minhas partes favoritas.

Alguém olha CI/CD e imagina:

"Então jogamos fora o JCL."

Não necessariamente.

Podemos fazer:

Jenkins
   ↓
z/OSMF
   ↓
JES2
   ↓
JCL
   ↓
Compiler

O pipeline pode submeter um JOB.

Depois acompanhar seu retorno:

RC=0000

Tudo certo.

Prossegue.

Se receber:

RC=0008

o pipeline pode parar.

Perceba a beleza histórica disso.

Temos tecnologias de gerações completamente diferentes cooperando:

JCL      + REST
COBOL    + Git
JES2     + Jenkins
CICS     + JSON
Db2      + APIs

O mainframe não precisa fingir que nasceu ontem.

Ele simplesmente aprende a conversar com quem nasceu ontem.


🧠 CAPÍTULO 7 — DEPENDÊNCIAS: QUANDO O COPYBOOK ESPIRRA

Imagine:

COPY CUSTOMER.

Esse copybook é utilizado por 137 programas.

Você muda um campo.

Parabéns.

Agora começa a diversão.

Quem precisa recompilar?

É aqui que ferramentas modernas de build e análise de dependências tornam-se valiosas.

Podemos representar:

CUSTOMER
   │
   ├── PROG001
   ├── PROG014
   ├── PROG087
   └── PROG231

Em vez de depender exclusivamente de:

"Pergunta para o João, ele trabalha aqui desde 1998."

transformamos conhecimento institucional em informação processável por ferramentas.

Essa é uma das formas mais profundas de modernização.

Automatizar conhecimento.


🌐 CAPÍTULO 8 — O COBOL DESCOBRE A INTERNET SEM APRENDER JSON

Agora nosso programa precisa atender um aplicativo móvel.

O programador iniciante entra em pânico.

— Vou precisar colocar JSON dentro do COBOL?

Calma.

Imagine:

MOBILE
   ↓
HTTPS
   ↓
API Gateway
   ↓
z/OS Connect
   ↓
CICS
   ↓
COBOL

O cliente pode enviar:

{
  "conta": "1234567890"
}

Nosso programa pode continuar trabalhando com estruturas tradicionais:

01 LK-CONTA PIC X(10).

Uma camada intermediária realiza a transformação.

E temos um conceito importantíssimo:

Modernizar a interface não exige necessariamente modernizar internamente toda a aplicação.

Isso permite expor funções existentes como serviços modernos sem imediatamente reescrever décadas de lógica.


📬 CAPÍTULO 9 — IBM MQ: NEM TODO MUNDO PRECISA RESPONDER AGORA

Agora imagine uma compra.

Precisamos saber imediatamente se ela foi autorizada.

Isso é naturalmente síncrono:

COMPRA
  ↓
CICS
  ↓
COBOL
  ↓
APROVADA

Mas depois precisamos:

enviar e-mail
dar pontos
atualizar analytics
notificar aplicativo
alimentar antifraude

Será que tudo precisa acontecer antes de devolver "COMPRA APROVADA"?

Não.

Podemos desacoplar:

COMPRA
  ↓
CICS
  ↓
APROVADA
  ↓
 MQ
  │
  ├── Cashback
  ├── Notification
  ├── Analytics
  └── Fraud

Se o cashback estiver indisponível por cinco minutos, não necessariamente precisamos impedir a compra.

MQ ajuda a construir esse desacoplamento e confiabilidade.


📡 CAPÍTULO 10 — EVENTOS: "ALGO ACONTECEU!"

Agora avançamos.

Em vez de perguntar constantemente:

O cliente mudou?
O cliente mudou?
O cliente mudou?

podemos produzir:

CLIENTE_ALTERADO

Esse evento pode ser consumido por diferentes sistemas.

             IBM Z
               │
        CLIENTE_ALTERADO
               │
               ▼
             Kafka
               │
      ┌────────┼────────┐
      ▼        ▼        ▼
     CRM      AI     Analytics

O sistema mainframe torna-se participante de uma arquitetura orientada a eventos.

Esse é um belo exemplo de modernização sem apagar o passado.


🧪 CAPÍTULO 11 — "FUNCIONOU NA MINHA LPAR" NÃO É TESTE

O iniciante modifica o programa.

Compila.

RC=0000

E anuncia:

— Funcionou!

Hopper ergue uma sobrancelha.

Compilar não significa funcionar corretamente.

Precisamos testar comportamento.

DADO
cliente VIP

E
saldo disponível = 10.000

QUANDO
compra = 8.000

ENTÃO
resultado esperado = APROVADO

Testes automatizados permitem verificar continuamente regras conhecidas.

E aqui existe algo profundo.

Em sistemas legados, testes automatizados podem se tornar documentação viva.

Quando alguém perguntar daqui a cinco anos:

"Cliente VIP pode fazer isso?"

o teste ajuda a responder.


🔐 CAPÍTULO 12 — DEVSECOPS: SEGURANÇA NÃO É O ÚLTIMO PASSO

O modelo ruim:

DEV
 ↓
TEST
 ↓
PROD
 ↓
SEGURANÇA DESCOBRE

Modelo melhor:

             COMMIT
                │
     ┌──────────┼──────────┐
     ▼          ▼          ▼
   BUILD      TEST       SECURITY

Podemos procurar:

  • vulnerabilidades;

  • credenciais expostas;

  • problemas de dependências;

  • configurações inseguras;

  • violações de políticas.

E no mainframe continuamos tendo controles fundamentais envolvendo RACF, ACF2 ou Top Secret, certificados, TLS, SMF, auditoria e autorização.

DevSecOps não substitui RACF.

Ele amplia a segurança para todo o ciclo de desenvolvimento.


🔭 CAPÍTULO 13 — OBSERVABILIDADE: O TELEFONE NÃO É DASHBOARD

Antigamente, o melhor sistema de monitoramento de algumas empresas era:

produção caiu
     ↓
usuário percebe
     ↓
usuário telefona
     ↓
War Room

Não recomendo.

Mainframes possuem décadas de experiência em monitoramento operacional.

SMF, RMF, OMEGAMON, SDSF e outras ferramentas já forneciam visibilidade muito antes de "observability" virar palavra de conferência.

A evolução moderna é conectar os mundos.

Imagine:

Celular
  ↓
API
  ↓
Kubernetes
  ↓
Kafka
  ↓
z/OS Connect
  ↓
CICS
  ↓
COBOL
  ↓
Db2

O usuário diz:

Está lento.

Quem é culpado?

Sem telemetria, começa o campeonato corporativo:

Cloud:      "é o mainframe!"
Mainframe:  "é a rede!"
Rede:       "é a aplicação!"
Aplicação:  "é o banco!"
Banco:      "não sou eu!"

Todos inocentes.

O usuário continua esperando.


📊 CAPÍTULO 14 — MÉTRICAS, LOGS E TRACES

Três conceitos aparecem constantemente:

METRICS
LOGS
TRACES

Métricas respondem perguntas como:

quantas transações?
qual latência?
qual CPU?
quantos erros?
qual throughput?

Logs contam eventos:

programa iniciado
cliente não encontrado
timeout
erro SQL

Traces mostram a viagem da transação.

Por exemplo:

TRACE-ID = 0317

Sim.

Nosso easter egg apareceu.

Quem acompanha o Bellacosa Mainframe sabe que quando alguma coisa estranha acontece às 03:17, provavelmente teremos uma investigação.

Nosso trace percorre:

Mobile       20 ms
Gateway       7 ms
Java         31 ms
z/OS Connect 11 ms
CICS          4 ms
COBOL         3 ms
Db2         817 ms

Pronto.

Em vez de:

"O mainframe está lento."

temos:

"Esta operação específica está gastando aproximadamente 817 ms no acesso ao Db2."

Isso é uma War Room baseada em evidências.


🔬 CAPÍTULO 15 — OPENTELEMETRY E A TRANSAÇÃO VIAJANTE

OpenTelemetry aparece justamente para ajudar a padronizar telemetria distribuída.

A ideia simplificada:

Aplicações
    ↓
telemetria
    ↓
OpenTelemetry
    │
    ├── metrics
    ├── logs
    └── traces

Depois podemos integrar essa informação a plataformas de observabilidade.

Prometheus, Grafana, Elastic, Splunk, Dynatrace e outros componentes podem participar do ecossistema, dependendo da arquitetura adotada.

Mas nunca esqueça:

dashboard bonito não é observabilidade.

Observabilidade útil significa conseguir investigar comportamento.


📦 CAPÍTULO 16 — NÃO COLOQUE TUDO NUM CONTAINER SÓ PORQUE É MODERNO

Outra reunião.

Alguém anuncia:

— Vamos containerizar tudo!

Hopper procura a saída.

Containers são excelentes.

Kubernetes é excelente para determinados workloads.

OpenShift também.

Mas arquitetura não deveria ser religião.

Podemos perfeitamente ter:

                 EMPRESA
                    │
        ┌───────────┴───────────┐
        ▼                       ▼
    OpenShift                  z/OS
        │                       │
  Java / Node              CICS / IMS
        │                       │
  Microservices               COBOL
        │                       │
        └───────── API ─────────┤
                  MQ           │
                Kafka          │
                               ▼
                            Db2/VSAM

Isso é arquitetura híbrida.

Cada workload executa onde faz sentido.


🌱 CAPÍTULO 17 — STRANGLER FIG: MODERNIZANDO SEM EXPLODIR PRODUÇÃO

Temos:

SISTEMA-CARTAO

com:

autorização
faturamento
cashback
notificação
relatórios
antifraude

Em vez de:

DELETE EVERYTHING;

podemos modernizar progressivamente.

Primeiro retiramos notificações:

COBOL
 ↓
evento
 ↓
Kafka
 ↓
Notification Service

Depois talvez cashback.

Depois outra função.

O core de autorização permanece enquanto houver razões econômicas e técnicas para mantê-lo.

Essa estratégia lembra o chamado Strangler Fig Pattern.

A arquitetura nova cresce progressivamente ao redor da existente.


🗄️ CAPÍTULO 18 — NÃO ESQUEÇA ONDE MORA O TESOURO

Aplicações são importantes.

Mas dados talvez sejam ainda mais importantes.

No mainframe encontramos:

Db2
VSAM
IMS DB
datasets

A modernização precisa considerar como esses dados serão disponibilizados sem criar vinte cópias descontroladas da verdade.

Podemos usar:

APIs
eventos
CDC
replicação

CDC significa Change Data Capture.

Quando alguma coisa relevante muda, podemos capturar essa alteração e propagá-la para outros ecossistemas.

Isso ajuda analytics, integração, data lakes e aplicações de IA.


🤖 CAPÍTULO 19 — IA ENTRA NO MAINFRAME, MAS SEM A MOTOSSERRA

Então chega 2026.

Alguém digita:

"Converta meus 14 milhões de linhas COBOL para Java."

Talvez seja prudente esconder o botão ENTER.

IA pode ser extremamente interessante para legado, mas há aplicações mais inteligentes do que tradução indiscriminada.

Por exemplo:

COBOL legado
     ↓
     IA
     │
     ├── explicar código
     ├── documentar
     ├── localizar regras
     ├── sugerir testes
     ├── explicar erros
     ├── analisar dependências
     └── auxiliar manutenção

Imagine encontrar um programa de 9.000 linhas.

Em vez de começar lendo linha 1 e terminar três cafés depois na linha 9.000, ferramentas assistidas por IA podem ajudar a construir um mapa inicial.

Mas atenção.

IA pode errar.

Em sistemas críticos precisamos continuar tendo:

revisão humana
testes
evidências
controle de versão
segurança
auditoria

O compilador não aceita:

TRUST ME BRO.

Produção também não deveria aceitar.


🛠️ CAPÍTULO 20 — AUTOMAÇÃO E INFRASTRUCTURE AS CODE

Procedimentos operacionais frequentemente vivem em documentos:

Entre no ISPF, escolha opção X, abra Y, copie Z...

Funciona.

Até alguém esquecer uma linha.

Automação permite transformar procedimentos em código.

Ferramentas como Ansible podem participar da administração e automação de ambientes IBM Z.

A filosofia passa a ser:

ESTADO DESEJADO
      ↓
AUTOMAÇÃO
      ↓
ESTADO REAL

Uma palavra importante aqui é:

idempotência.

Simplificando para o iniciante:

Executar a automação novamente não deveria destruir tudo; ela deve procurar manter ou alcançar o estado definido.

Isso transforma conhecimento operacional em algo reproduzível.


🗺️ CAPÍTULO 21 — O MAPA DO MAINFRAME MODERNO

Agora podemos juntar nosso quebra-cabeça.

                     USUÁRIOS
                        │
                 Mobile / Web
                        │
                        ▼
                   API Gateway
                        │
             ┌──────────┴──────────┐
             ▼                     ▼
         OpenShift             z/OS Connect
             │                     │
       Microservices               ▼
             │                    CICS
             ├────── MQ ───────────┤
             │                     │
             ├──── Kafka ──────────┤
             │                     ▼
             │                   COBOL
             │                     │
             │               ┌─────┴─────┐
             │               ▼           ▼
             │              Db2         VSAM
             │
             ▼
        Analytics / AI

Por trás:

Developer
   ↓
VS Code / IDz
   ↓
Git
   ↓
Pull Request
   ↓
Pipeline
   ↓
Build
   ↓
Tests
   ↓
Security
   ↓
Deploy
   ↓
IBM Z

E observando tudo:

          OBSERVABILITY
               │
      ┌────────┼────────┐
      ▼        ▼        ▼
   Metrics    Logs    Traces

Agora temos a visão completa.


🎓 CAPÍTULO 22 — ROTEIRO PARA QUEM ESTÁ COMEÇANDO

Não tente aprender tudo simultaneamente.

Isso seria como tentar aprender mecânica estudando um Boeing inteiro.

Construa camadas.

Etapa 1 — Fundamentos

Aprenda:

COBOL
JCL
TSO
ISPF
datasets
JES2/SDSF

Entenda como um programa nasce e executa.

Etapa 2 — Dados

Aprenda:

VSAM
SQL
Db2

Depois explore IMS se fizer sentido para seu ambiente.

Etapa 3 — Online

Estude:

CICS
transações
programas
COMMAREA
channels/containers

Etapa 4 — Integração

Aprenda:

REST
JSON
APIs
MQ
z/OS Connect

Etapa 5 — Engenharia moderna

Entre em:

Git
branch
commit
merge
CI/CD
Jenkins
automated testing

Etapa 6 — Arquitetura

Estude:

microservices
event-driven
Kafka
containers
Kubernetes
OpenShift
hybrid cloud

Etapa 7 — Operação

Aprenda:

SMF
RMF
logs
metrics
traces
OpenTelemetry
observability

Etapa 8 — Segurança

Entenda:

RACF
identidade
autorização
TLS
certificados
DevSecOps
auditoria

Etapa 9 — Automação

Explore:

z/OSMF
REST APIs
Ansible
Infrastructure as Code

Etapa 10 — IA

Finalmente:

code explanation
documentation
test generation
code assistance
incident analysis
legacy discovery

Agora você não é simplesmente alguém que aprendeu sintaxe COBOL.

Você começou a entender engenharia de aplicações IBM Z.


🧭 CAPÍTULO 23 — A LIÇÃO DA ALMIRANTE

Nosso jovem programador finalmente olha novamente para seu pequeno programa:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO.
       PROCEDURE DIVISION.
           DISPLAY 'HELLO WORLD'.
           STOP RUN.

No começo da história aquilo parecia ser COBOL.

Agora ele consegue imaginar todo o mundo ao redor:

                     Git
                      │
                      ▼
                    COBOL
                      │
                      ▼
                    Build
                      │
                      ▼
                    Tests
                      │
                      ▼
                   Pipeline
                      │
                      ▼
                     CICS
                      │
              ┌───────┼───────┐
              ▼       ▼       ▼
             API      MQ     Kafka
              │               │
              ▼               ▼
          OpenShift          Cloud
              │               │
              └───────┬───────┘
                      ▼
                Observability

Grace Hopper então aponta para a tela.

A verdadeira modernização não está em trocar uma palavra por outra.

Não está em:

COBOL → Java

ou:

Mainframe → Cloud

A transformação está em construir pontes:

LEGADO ↔ MODERNO
BATCH ↔ API
CICS ↔ MOBILE
COBOL ↔ GIT
JCL ↔ CI/CD
JES2 ↔ REST
MQ ↔ MICROSERVICES
DB2 ↔ ANALYTICS
IBM Z ↔ CLOUD
SMF ↔ OBSERVABILITY
PROGRAMADOR ↔ AUTOMAÇÃO

☕ EPÍLOGO — A CATEDRAL CONTINUA ABERTA

Existe uma mania curiosa na tecnologia de declarar coisas mortas.

COBOL morreu.

Mainframe morreu.

Batch morreu.

SQL morreu.

Data center morreu.

Toda década alguém publica um novo obituário.

Enquanto isso, sistemas continuam processando transações.

Talvez o iniciante deva aprender uma lição diferente.

Tecnologia empresarial raramente evolui simplesmente apagando o passado.

Ela evolui em camadas.

O COBOL permanece.

Mas agora está no Git.

O JCL permanece.

Mas um pipeline pode submetê-lo.

O CICS permanece.

Mas uma API pode chamá-lo.

O MQ permanece.

Mas pode conectar arquiteturas distribuídas.

O Db2 permanece.

Mas seus dados podem alimentar analytics e IA.

O IBM Z permanece.

Mas não precisa permanecer isolado.

Essa talvez seja uma das ideias mais importantes para quem começa a carreira em mainframe:

Você não está estudando apenas uma tecnologia antiga. Está estudando como décadas diferentes da história da computação conseguem continuar trabalhando juntas.

E isso muda a pergunta.

Não pergunte apenas:

"Como programo COBOL?"

Pergunte:

"Como uma mudança que fiz neste COBOL percorre Git, build, testes, segurança, CI/CD, CICS, APIs, integração, dados e observabilidade até chegar ao cliente?"

Quando conseguir responder essa pergunta, você terá atravessado uma fronteira importante.

Deixou de olhar somente para as 80 colunas.

Começou a enxergar a arquitetura.

E, em algum lugar da sala de máquinas, nossa Almirante provavelmente estaria satisfeita.

Antes de sair, porém, Hopper olha novamente para o dashboard.

Uma transação desconhecida apareceu.

Horário:

03:17:00

TRACE-ID:

BELLACOSA-0317

Origem:

UNKNOWN

Ela pega o café.

— Bellacosa...

— Sim, Almirante?

— Temos um incidente.

Continua no próximo JOB.

//BELLACOS JOB (0317),'COFFEE',
//             CLASS=A,
//             MSGCLASS=X
//*
//* NEVER UNDERESTIMATE OLD CODE
//* THAT STILL RETURNS RC=0000
//*

Um Café no Bellacosa Mainframe

Porque modernizar não é esquecer de onde viemos. É garantir que aquilo que construímos ontem ainda consiga conversar com o amanhã.

PS: Este artigo foi pensado para responder a seguinte pergunta.

Como uma empresa moderna desenvolve, integra, automatiza, observa e moderniza aplicações que rodam nesse mainframe? 



sábado, 5 de janeiro de 2019

🧰 CHECKLIST BELLACOSA DE MANUTENÇÃO MENTAL

 


🧰 CHECKLIST BELLACOSA DE MANUTENÇÃO MENTAL
(O toolkit diário para manter o cérebro rodando suave, sem abends nem travamentos)


☀️ 1. BOOT DO DIA – “Initialize System”

Logo ao acordar, evite abrir o celular.
A primeira hora do dia define a prioridade de jobs do seu emocional.
Respire, alongue, pense no que realmente importa.

O primeiro comando do dia deve vir de você, não da notificação.


💬 2. STATUS CHECK – “DISPLAY MIND,DETAIL”

No meio da manhã, faça uma autoanálise rápida:
Como estou me sentindo agora? Calmo? Tenso? Disperso?
Nomear o que sente é o mesmo que identificar o dataset antes de manipulá-lo.

Sentimento sem nome vira processo fantasma ocupando CPU emocional.


🧘‍♀️ 3. REFRESH BUFFER – “CANCEL ALL”

Durante o dia, tire micro-pausas de 5 minutos sem estímulos.
Nada de rolar tela — apenas respire, feche os olhos, escute o ambiente.
Isso reinicia o cache e traz foco de volta.

O silêncio é o comando “RESET” da mente.


4. AFTERNOON MAINTENANCE – “SORT PRIORITIES”

No meio da tarde, revise o que ainda precisa ser feito e o que pode ficar para amanhã.
Reorganize, defer, skip step, se necessário.
Aprender a priorizar é um ato de amor-próprio.

Nem todo job precisa rodar em hoje.


🌙 5. SHUTDOWN MODE – “LOGOFF PEACEFULLY”

Antes de dormir, agradeça.
Pense no que funcionou bem, e libere o que travou.
Desligue as telas, leia algo leve, ouça uma música calma.

Um bom “shutdown” garante logs limpos e sonhos desfragmentados.


🔁 ROTINA OPCIONAL – “RUN MIND CLEANER, DAILY”

  • 5 minutos de respiração consciente

  • 10 minutos de caminhada leve

  • 1 momento de riso genuíno

  • 1 conversa sincera

  • 1 ato de gentileza (mesmo anônima)

Esses comandos simples fazem tuning na alma e aumentam o throughput da paz interior.


Bellacosa Mainframe 💾🧠
Porque cuidar da mente é como manter um sistema z/OS: se você ignora o warning, o dump vem inevitável.

sexta-feira, 4 de janeiro de 2019

☕💣📼 OPERADOR, O ABEND DE SCHOOL DAYS NÃO FOI UM CASO ISOLADO!

 

Bellacosa Mainframe e os animes proibidoes estilo school days


☕💣📼 OPERADOR, O ABEND DE SCHOOL DAYS NÃO FOI UM CASO ISOLADO!

10 ANIMES PARA QUEM SOBREVIVEU AO DESASTRE OPERACIONAL DE MAKOTO ITOU

Se você terminou School Days e ficou pensando:

"Não acredito que um romance escolar terminou desse jeito..."

Prepare-se.

Existem animes que exploram traição, obsessão, psicologia, realidades alternativas, assassinatos, loops temporais e relacionamentos tão perigosos quanto um DELETE sem backup no catálogo mestre.


1. HIGURASHI NO NAKU KORO NI

Título Original

ひぐらしのなく頃に

Lançamento

2006

Personagens

  • Keiichi Maebara

  • Rena Ryugu

  • Mion Sonozaki

  • Rika Furude

Resumo

Um garoto se muda para uma vila aparentemente tranquila.

Pouco depois descobre uma série de assassinatos ligados a um festival local.

História

A cada arco a realidade parece reiniciar.

Os acontecimentos mudam.

As mortes mudam.

As respostas mudam.

Easter Egg

Os relógios e calendários escondem pistas dos loops temporais.

Curiosidade

Foi originalmente uma Visual Novel, assim como School Days.

Por que assistir?

Se você gostou do colapso psicológico.

Por que não assistir?

Violência extrema.


2. UMINEKO NO NAKU KORO NI

Título Original

うみねこのなく頃に

Lançamento

2009

Personagens

  • Battler Ushiromiya

  • Beatrice

  • Ange

Resumo

Uma família rica fica presa numa ilha.

Assassinatos começam a ocorrer.

A culpa é de uma bruxa?

Ou de um humano?

História

Uma guerra entre lógica e fantasia.

Easter Egg

Quase todos os mistérios possuem solução racional.

Curiosidade

Criado pelo mesmo autor de Higurashi.

Por que assistir?

Mistério de altíssimo nível.

Por que não assistir?

Anime adapta apenas parte da obra.


3. MIRAI NIKKI

Título Original

未来日記

Lançamento

2011

Personagens

  • Yukiteru Amano

  • Yuno Gasai

Resumo

Participantes recebem diários que mostram o futuro.

O último sobrevivente se torna deus.

História

Battle Royale psicológico.

Easter Egg

O nome Yuno lembra "YU-NO", outra obra clássica de ficção científica japonesa.

Curiosidade

Yuno tornou-se referência para o arquétipo "Yandere".

Por que assistir?

Uma das personagens mais icônicas dos animes.

Por que não assistir?

Algumas incoerências narrativas.


4. ELFEN LIED

Título Original

エルフェンリート

Lançamento

2004

Personagens

  • Lucy

  • Kouta

  • Nana

Resumo

Uma mutante escapa de um laboratório.

História

Mistura ficção científica com tragédia humana.

Easter Egg

O título vem de um poema alemão.

Curiosidade

Influenciou obras como Stranger Things.

Por que assistir?

Drama emocional devastador.

Por que não assistir?

Violência extrema.


5. WHITE ALBUM 2

Título Original

ホワイトアルバム2

Lançamento

2013

Personagens

  • Haruki

  • Setsuna

  • Kazusa

Resumo

Triângulo amoroso.

História

Diferente de School Days.

Aqui o foco é emocional.

Não físico.

Easter Egg

Referências musicais aparecem em praticamente todos os episódios.

Curiosidade

Considerado um dos romances mais maduros dos animes.

Por que assistir?

Drama romântico excelente.

Por que não assistir?

Muito sofrimento emocional.


6. KUZU NO HONKAI

Título Original

クズの本懐

Lançamento

2017

Personagens

  • Hanabi

  • Mugi

Resumo

Dois estudantes fingem namorar.

História

Uma análise brutal sobre desejos não correspondidos.

Easter Egg

As flores exibidas refletem o estado emocional dos personagens.

Curiosidade

Foi chamado de "School Days da geração moderna".

Por que assistir?

Psicologia sofisticada.

Por que não assistir?

Clima extremamente melancólico.


7. YOSUGA NO SORA

Título Original

ヨスガノソラ

Lançamento

2010

Personagens

  • Haruka

  • Sora

Resumo

Irmãos retornam à cidade natal.

História

Rotas alternativas semelhantes às Visual Novels.

Easter Egg

Cada arco corresponde a uma rota diferente do jogo.

Curiosidade

Uma das adaptações mais fiéis de Visual Novel.

Por que assistir?

Narrativa experimental.

Por que não assistir?

Tema altamente controverso.


8. SHUFFLE!

Título Original

シャッフル!

Lançamento

2005

Personagens

  • Rin

  • Kaede

  • Asa

Resumo

Romance envolvendo humanos, deuses e demônios.

História

Começa leve.

Termina surpreendentemente sombria.

Easter Egg

Vários finais da Visual Novel foram incorporados.

Curiosidade

Influenciou diversos romances escolares posteriores.

Por que assistir?

Mistura romance e fantasia.

Por que não assistir?

Primeira metade é lenta.


9. ANOTHER

Título Original

アナザー

Lançamento

2012

Personagens

  • Kouichi Sakakibara

  • Mei Misaki

Resumo

Uma turma sofre uma maldição mortal.

História

Mortes absurdamente imprevisíveis.

Easter Egg

Diversas pistas estão escondidas nos fundos das cenas.

Curiosidade

Popularizou o "guarda-chuva assassino".

Por que assistir?

Suspense constante.

Por que não assistir?

Não é romance.


10. YU-NO: KONO YO NO HATE DE KOI WO UTAU SHOUJO

Título Original

この世の果てで恋を唄う少女YU-NO

Lançamento Original

Visual Novel: 1996

Anime: 2019

Personagens

  • Takuya Arima

  • Kanna

  • Mio

  • Amanda

Resumo

Viagens entre realidades paralelas.

História

O protagonista precisa reconstruir a verdade através de múltiplas linhas temporais.

Easter Egg

Praticamente todos os finais possuem relevância para a conclusão final.

Curiosidade

Influenciou:

  • Steins;Gate

  • Re:Zero

  • Muv-Luv

Por que assistir?

Uma das obras mais importantes da ficção científica japonesa.

Por que não assistir?

O anime simplifica bastante a Visual Novel.


☕💣 Ranking Bellacosa Mainframe de Similaridade com School Days

AnimeSimilaridade
White Album 2⭐⭐⭐⭐⭐
Kuzu no Honkai⭐⭐⭐⭐⭐
Yosuga no Sora⭐⭐⭐⭐⭐
Shuffle!⭐⭐⭐⭐
Mirai Nikki⭐⭐⭐⭐
Higurashi⭐⭐⭐⭐
Umineko⭐⭐⭐
Another⭐⭐⭐
Elfen Lied⭐⭐⭐
YU-NO⭐⭐⭐

📼 Veredito Final

Se School Days foi seu primeiro contato com romances psicológicos sombrios, a sequência ideal é:

School Days → White Album 2 → Kuzu no Honkai → Yosuga no Sora → Higurashi → Umineko → YU-NO

Essa ordem aumenta gradualmente a complexidade narrativa, levando você do simples "triângulo amoroso problemático" até mistérios multidimensionais capazes de fazer um operador de mainframe revisar o mesmo dump emocional dezenas de vezes antes de encontrar a causa raiz do ABEND. ☕💣🔪📼


quinta-feira, 3 de janeiro de 2019

☕💥 A Jornada do Padawan COBOL – Parte 1 Desvendando o Universo dos CALLs no Mainframe

 

Bellacosa Mainframe e o CALL em programas COBOL Parte I

☕💥 A Jornada do Padawan COBOL – Parte 1

Desvendando o Universo dos CALLs no Mainframe

Ou como descobrir que chamar um programa em COBOL é quase tão importante quanto saber preparar café às 3 da manhã durante uma janela de produção

Por Vagner Bellacosa – Bellacosa Mainframe


Introdução

Todo desenvolvedor COBOL passa por um momento de iluminação.

Normalmente acontece quando ele abre um programa de produção com 30 mil linhas e encontra algo parecido com isto:

CALL 'PROG0001'
USING WS-AREA.

CALL WS-PROGRAMA
USING WS-COMMAREA.

CALL 'VALIDA01'
USING BY CONTENT WS-DATA.

CALL 'ROTINA99'
USING BY REFERENCE WS-BLOCO.

Neste momento surge a dúvida existencial:

Por que existem tantos tipos de CALL?

Qual é o mais rápido?

Qual gasta menos memória?

O que acontece dentro do z/OS?

O compilador faz mágica?

O Load Module engorda?

Como um banco executa milhões de CALLs por segundo sem explodir?

Prepare seu café.

Vamos abrir a tampa do motor do z/OS.


O que é um CALL?

Simplificando:

CALL significa pedir ajuda para outro programa.

Em vez de colocar 100 mil linhas em um único fonte, quebramos o sistema em pequenas peças reutilizáveis.

Por exemplo:

Programa principal

PROCESSA-CLIENTES

chama

VALIDA-CPF

CALCULA-JUROS

GERA-BOLETO

ENVIA-MQ

ATUALIZA-DB2

Cada um especializado.

É praticamente microserviços.

Só que inventados em 1960.


Por que IBM fez isso?

Porque memória custava uma fortuna.

Década de 70

Memória podia custar mais que um carro.

Era necessário:

reutilizar código

economizar memória

compartilhar lógica

facilitar manutenção

Assim nasceu o CALL.


Anatomia de um programa COBOL

Um programa COBOL compilado produz:

Objeto

Binder

Load Module

PDs Loadlib

Execução

Exemplo:

SYS1.LOADLIB


PROCESSA
VALIDA
JUROS
CPFCHK

O Padawan descobre o Static CALL

Exemplo

CALL 'VALIDA'

Simples.

Mas o compilador já conhece VALIDA.

Ele avisa o Binder:

Inclua VALIDA aqui.


O que acontece no LinkEdit

Binder faz:

PROCESSA


+

VALIDA


+

CPFCHK


+

JUROS


=

EXECUTÁVEL FINAL

Na memória

Antes:

PROCESSA

Depois:

PROCESSA


VALIDA


CPFCHK


JUROS

Tudo junto.

Tudo carregado.


Vantagens

Performance

Excelente.

Não precisa procurar.

Não precisa abrir bibliotecas.

Não precisa localizar módulo.

É praticamente:

BALR

Menor CPU

Menos instruções.

Menos overhead.

Menos I/O.


Desvantagens

Executável cresce.

Muito.

Exemplo

Programa principal

1 MB

Subrotinas

500 KB

Total

1,5 MB


Imagine 200 subrotinas.

Seu módulo vira um Godzilla.


Problema clássico

Padawan:

"Troquei VALIDA"

Produção:

Ainda usa antiga.

Porque precisa relinkar.


Quando usar?

Sempre que:

Programa nunca muda

Alta performance

Rotina crítica

Batch pesado

Exemplo:

Juros

Cálculo tributário

Validação interna


O Dynamic CALL aparece

Padawan evolui.

Descobre:

01 WS-PGM PIC X(8).

MOVE 'VALIDA' TO WS-PGM.

CALL WS-PGM.

O que acontece?

COBOL não sabe quem será chamado.

Somente em execução.


Busca do módulo

zOS procura:

STEPLIB

JOBLIB

LPA

LINKLIST


Exemplo

CALL CPFCHK

Sistema:

Existe?

Não.

Próximo.

Existe?

Sim.

Carrega.

Executa.


Vantagens

Flexibilidade absurda.

Pode trocar programas.

Sem recompilar.

Sem binder.

Sem relink.


Plugins COBOL

Exemplo

Cartão VISA

MOVE 'VISA0001'

Master

MOVE 'MASTER01'

PIX

MOVE 'PIX00001'

Mesmo sistema.

Rotinas diferentes.


Desvantagens

Procura programa.

Mais CPU.

Mais I/O.

Mais tempo.


Mas é lento?

Depende.

Primeira chamada.

Sim.

Segunda.

Muito rápida.

Porque pode ficar residente.


O segredo da residência

zOS é esperto.

Se programa está em memória.

Reutiliza.

Não busca novamente.


Comparação

Static

Casa própria

Dynamic

Airbnb

O executável cresce?

Static

Sim.

Dynamic

Não.

Executável principal fica pequeno.


Exemplo

Static

PROCESSA

1.5 MB

Dynamic

PROCESSA

600 KB

Subrotinas externas.


O que é mais performático?

Resposta curta.

Static.

Fim.

Mas...


O que é melhor?

Depende.

Banco.

Static.

Framework.

Dynamic.

Produtos.

Dynamic.

Rotinas financeiras.

Static.


Como o CALL funciona internamente?

Imagine isto.

Programa principal

00001000
PROCESSA

Subrotina

00025000
VALIDA

CALL executa

Guardar endereço retorno


Ir para 25000


Executar


Voltar

É praticamente um GOTO sofisticado.

Só que elegante.


Erros clássicos

S806

Programa não encontrado.

Mensagem

IEC806I

Causa

Módulo ausente.

STEPLIB errada.

Nome inválido.


S0C1

Executou lixo.

Programa corrompido.


S0C4

Endereço inválido.

Muito comum em parâmetros errados.


Como descobrir

SDSF

JESMSGLG

SYSOUT


Verificar:

STEPLIB

SYSLIB

LOADLIB


Easter Egg IBM

Muitos bancos possuem:

PROG0001

PROG0002

PROG0003

Ninguém sabe o que fazem.

Autor aposentou em 1998.

Documentação desapareceu.

Programa continua funcionando.

Todos têm medo de alterar.

É chamado:

Código Arqueológico Mainframe™


Dicas Bellacosa Mainframe

Dica 1

Static para alta frequência.


Dica 2

Dynamic para produtos.


Dica 3

Nunca fazer:

MOVE WS-USUARIO TO WS-PGM

CALL WS-PGM

Sem validar.

Pode chamar qualquer coisa.

Inclusive algo inexistente.


Dica 4

Validar sempre.

EVALUATE WS-PGM

WHEN 'CPFCHK'

WHEN 'JUROS01'

WHEN 'PIX0001'

WHEN OTHER

DISPLAY 'INVALIDO'

END-EVALUATE

Dica 5

Logar chamadas.

DISPLAY 'CALL=' WS-PGM

Ajuda muito.


A Filosofia Jedi do CALL

O Padawan iniciante pensa:

CALL serve apenas para executar outro programa.

O desenvolvedor intermediário pensa:

CALL serve para reutilizar código.

O Mestre Mainframe entende:

CALL é uma decisão arquitetural.

Ele impacta:

  • CPU

  • Memória

  • Tempo de resposta

  • Tamanho do Load Module

  • Facilidade de manutenção

  • Segurança

  • Escalabilidade

  • Observabilidade

  • Estratégia de deploy

E é exatamente por isso que, cinquenta anos depois, os sistemas bancários que movimentam bilhões de dólares diariamente ainda utilizam a mesma instrução COBOL que um programador digitou em um terminal verde na década de 1970:

CALL 'SUBPGM'

Na próxima etapa da jornada, o Padawan descobrirá que o verdadeiro poder do COBOL não está apenas em chamar programas, mas em como os dados atravessam a fronteira entre eles, mergulhando nos mistérios de BY REFERENCE, BY CONTENT, BY VALUE, ponteiros, Work-Storage, Local-Storage e Language Environment, onde vivem os temidos S0C4, os buffers compartilhados e os segredos que fazem alguns programas parecerem mágicos aos olhos dos desenvolvedores mais jovens.

sábado, 29 de dezembro de 2018

Brasil 2018: quando o sistema foi reiniciado à força e ninguém leu o README

 

Bellacosa Mainframe e o caos brasileiro em 2018

Brasil 2018: quando o sistema foi reiniciado à força e ninguém leu o README

Meu quinto ano de volta ao Brasil foi 2018. Se 2017 tinha sido o ano do cansaço, 2018 foi o ano do susto. Aquele momento em que alguém, exausto de ver o sistema falhar, decide reiniciar tudo no grito — sem diagnóstico completo, sem plano de contingência, sem saber exatamente o que será perdido no processo.

Depois de doze anos na Europa, eu já reconhecia esse padrão. Vi versões parecidas em outros lugares: quando a política falha por tempo demais, o medo vira argumento, e o argumento vira arma.

Economia: estabilidade de papel, insegurança real

Economicamente, 2018 parecia estável apenas nos relatórios. O chão continuava irregular. Empregos mais frágeis, renda achatada, informalidade disfarçada de empreendedorismo. Era como rodar um sistema que não cai mais, mas também não entrega desempenho.

Para quem viveu fora, o contraste seguia brutal: na Europa, crise vem com proteção mínima. No Brasil, a lógica parecia outra — o sistema se preserva, o usuário se adapta. A economia seguia deixando rastros, não caminhos.

O brasileiro já não planejava. Administrava danos.

Sociedade: medo como política pública informal

Socialmente, 2018 foi dominado pelo medo. Medo do outro, medo do colapso, medo de perder o pouco que restava. As eleições amplificaram isso. A política deixou de ser espaço de projeto coletivo e virou campo de batalha emocional.

Bolsonaro emergiu não apenas como candidato, mas como sintoma. Para quem voltou da Europa, o padrão era reconhecível: discurso simples, soluções duras, nostalgia de ordem, promessa de força. O “terror da direita” não era só retórico — era a normalização do autoritarismo como resposta ao caos.

Quando o sistema falha demais, alguém sempre promete apertar o botão vermelho.

Cultura: o fim da nuance

Culturalmente, 2018 matou a nuance. Tudo virou rótulo. Ou você estava “dentro” ou “fora”. A complexidade foi tratada como defeito moral. O diálogo virou fraqueza. A dúvida virou crime.

Para quem passou anos em sociedades onde discordar não rompe laços automaticamente, foi doloroso assistir à dissolução do espaço comum. Arte, humor, conversa de bar — tudo contaminado por tensão política constante. O país parecia rodar em high availability, mas com latência emocional altíssima.

População: sobrevivendo em modo defensivo

O povo em 2018 já não reagia — se defendia. As pessoas se fecharam em bolhas, em narrativas próprias, em pequenos círculos de confiança. Vi gente boa se calar para evitar conflito. Vi outras gritarem para não desaparecer.

O brasileiro, resiliente como sempre, seguiu em frente. Mas agora com armadura. E armadura pesa.

Eleições: quando o sistema escolhe o risco

As novas eleições não foram um debate sobre futuro — foram um plebiscito sobre frustração. Bolsonaro venceu não porque apresentou um projeto consistente, mas porque encarnou a negação de tudo que estava aí. Foi um voto de ruptura, não de construção.

Como ex-imigrante, a sensação foi clara: o Brasil escolheu rodar uma versão experimental do sistema em produção. Sem testes suficientes. Sem rollback confiável.

Veteranos de mainframe sabem: isso nunca termina bem.

Vida pessoal: o colapso e o recomeço

E enquanto o país passava por sua própria ruptura, minha vida pessoal também atravessava um cutover. 2018 marcou o fim da Juliana e o início da Ana Paula. Não como metáfora política barata, mas como sincronia estranha entre o macro e o micro.

O fim de um ciclo longo, conhecido, já desgastado. O início de algo novo, incerto, mas necessário. Assim como o país, eu estava cansado de remendos. Precisava de verdade, não de estabilidade artificial.

Às vezes, o sistema pessoal também precisa cair para ser reconstruído com mais honestidade.

Quinto ano pós-retorno: sem ilusões

Em 2018, já não havia ilusão alguma. Nem sobre o Brasil, nem sobre mim mesmo. Eu já não esperava normalidade europeia nem redenção automática brasileira. Entendi que tinha voltado para um país em disputa profunda — de narrativa, de valores, de futuro.

O sistema seguia ligado, sim. Mas agora sob nova administração, com operadores dispostos a sacrificar segurança em nome de controle, e usuários divididos entre esperança desesperada e medo resignado.

Epílogo: lição dura de sistemas críticos

2018 ensinou uma das lições mais antigas de qualquer ambiente complexo:
quando a frustração substitui o projeto,
qualquer solução parece aceitável —
até que o custo aparece.

O Brasil de 2018 não escolheu um caminho claro.
Escolheu um risco.

E todo operador experiente sabe:
reiniciar um sistema sem entender por que ele falhou
é a forma mais rápida de repetir o erro —
só que com consequências maiores.


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