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

Translate

Mostrar mensagens com a etiqueta zOS. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta zOS. Mostrar todas as mensagens

terça-feira, 15 de setembro de 2026

🧟 Mainframe Evolution — O Pesadelo Open Source que Entrou na LPAR

 

Bellacosa Mainframe e o Mainframe Evolution

☕ Um Café no Bellacosa Mainframe

🧟 Mainframe Evolution — O Pesadelo Open Source que Entrou na LPAR

Segurança, observabilidade e escala no IBM Z, investigadas sob a ótica de Dylan Dog, o Investigador do Pesadelo



Há casos que chegam ao escritório de Dylan Dog embrulhados em jornais velhos, acompanhados por fotografias borradas e pelo depoimento de alguma testemunha dizendo ter visto uma criatura impossível atravessar a parede à meia-noite.

Este caso chegou de maneira ainda mais suspeita.

Em uma apresentação apareceu a frase:

Mainframe Evolution: Securing, Monitoring, and Scaling with Next-Gen Open Source

Dylan olhou para o papel.

Groucho olhou para Dylan.

— Chefe, acho que descobriram algo mais antigo que os vampiros.

— O quê?

— COBOL.

Silêncio.

Em algum lugar distante, uma fita magnética girou sozinha.

Bem-vindo a mais uma investigação do Bellacosa Mainframe.

Desta vez nosso cliente afirma que existe open source dentro do mainframe.

Para muitos programadores, isso parece perfeitamente normal em 2026.

Para outros, principalmente aqueles que ainda imaginam o mainframe como uma fortaleza isolada onde todos entram pelo TSO e qualquer alteração precisa de três formulários, dois CABs e o sangue de um analista de produção, a afirmação parece paranormal.

Dylan Dog foi chamado.

Vamos investigar.



🕵️ CAPÍTULO 1 — O cadáver que se recusava a morrer

A primeira coisa que chamou a atenção de Dylan foi a idade da vítima.

O mainframe já havia sido declarado morto tantas vezes que seu prontuário parecia uma coleção de obituários.

Client/server iria matá-lo.

Depois Unix.

Depois Windows.

Depois servidores x86.

Depois Java.

Depois a Web.

Depois cloud.

Depois containers.

Depois Kubernetes.

Agora inteligência artificial.

Dylan abriu o arquivo.

STATUS: EXECUTING.

— Estranho — comentou ele.

Muito estranho.

Talvez estivéssemos procurando o cadáver errado.

Porque o IBM Z moderno não é simplesmente um computador gigantesco escondido no porão executando programas COBOL escritos quando os Beatles ainda tocavam juntos.

Ele é uma plataforma capaz de reunir tecnologias de gerações muito diferentes.

Podemos encontrar algo parecido com:

                 IBM Z
                   │
        ┌──────────┼──────────┐
        │          │          │
       z/OS       Linux      z/VM
        │          │          │
      COBOL      Python    Virtualização
      CICS       Java
      IMS        Open Source
      Db2        Containers
      MQ

A primeira pista estava diante de Dylan.

Talvez evolução do mainframe não significasse substituição.

Significasse incorporação.



🧟 CAPÍTULO 2 — Frankenstein não precisava morrer

Existe uma velha tentação em tecnologia.

Quando encontramos algo antigo, imediatamente pensamos:

"Precisamos substituir isso."

Imagine um banco possuindo milhões de linhas COBOL responsáveis por contas, cartões, pagamentos, empréstimos e liquidação financeira.

Alguém entra na reunião e anuncia:

— Temos uma ideia revolucionária! Vamos reescrever tudo!

Dylan provavelmente perguntaria:

— Por quê?

Essa é uma excelente pergunta.

Modernização não significa obrigatoriamente:

COBOL
  ↓
Java

Muito menos:

MAINFRAME
   ↓
CLOUD

Podemos modernizar ao redor da aplicação:

               Git
                │
VS Code ───► COBOL ◄─── CI/CD
                │
             Testing
                │
          Security Scan
                │
              APIs
                │
         Observability

O programa continua COBOL.

A lógica continua executando no z/OS.

CICS continua administrando transações.

Db2 continua guardando dados.

RACF continua controlando acessos.

Mas a maneira como desenvolvemos, testamos, implantamos, observamos e integramos essas aplicações pode mudar radicalmente.

Nosso monstro de Frankenstein não precisava ser destruído.

Precisávamos apenas entender como ele funcionava.



🔐 CAPÍTULO 3 — SECURING: alguém abriu novas portas no castelo

Dylan chegou à primeira cena do crime.

Uma enorme fortaleza.

Sobre o portão estava escrito:

RACF

Nada particularmente assustador.

O mainframe conhece controle de acesso há décadas.

Usuários possuem identidades.

Recursos possuem regras.

Datasets podem ser protegidos.

Transações CICS podem ser protegidas.

Recursos do sistema podem ser protegidos.

Aplicações podem ser protegidas.

Então apareceu o open source.

Depois vieram APIs.

CLI.

VS Code.

Git.

Jenkins.

Zowe.

Containers.

OpenShift.

Linux.

Cloud.

Service accounts.

Automação.

De repente, nosso castelo ganhou dezenas de portas.

                    IBM Z
                      │
     ┌────────────────┼────────────────┐
     │                │                │
    API              CLI             IDE
     │                │                │
 Jenkins            Zowe            VS Code
     │
   CI/CD

Nenhuma dessas tecnologias é inerentemente um problema.

O problema aparece quando adicionamos conectividade sem adicionar governança.



👻 CAPÍTULO 4 — O fantasma das credenciais

Groucho apareceu segurando um papel.

— Dylan, encontrei a senha.

— Onde?

— No script.

Isso é exatamente o tipo de fantasma que ninguém quer encontrar.

Imagine:

USER=DEPLOY01
PASSWORD=SUPERSECRET123

dentro de um script versionado.

Ou um token esquecido em um arquivo de configuração.

Ou uma service account com privilégios maiores que o necessário.

Automação multiplica produtividade.

Mas também pode multiplicar erros.

Um humano pode cometer um erro uma vez.

Um pipeline consegue cometer o mesmo erro automaticamente quinhentas vezes antes do café.

Por isso modernização exige pensar em:

Identity
Authentication
Authorization
Certificates
TLS
Secrets
Tokens
Audit
Least Privilege
API Security
Logging

O velho princípio continua válido:

Quem é você, o que você pode fazer e quem registrará que você fez?

RACF não ficou obsoleto porque apareceu DevOps.

Na verdade, DevOps torna essas perguntas ainda mais importantes.



🧪 CAPÍTULO 5 — Zowe entra na investigação

Dylan encontrou outra inscrição:

ZOWE

Aqui encontramos uma das pontes mais interessantes entre o mainframe tradicional e ferramentas modernas.

Imagine nosso jovem programador COBOL.

Ele conhece:

Git
VS Code
Terminal
REST
JSON
CLI

Então alguém apresenta:

TSO
ISPF
SDSF
JCL
3270

Nada disso é ruim.

Mas existe uma curva de aprendizagem.

Uma proposta importante do Zowe é permitir interfaces familiares ao desenvolvedor moderno para interação com o ecossistema z/OS.

Simplificando bastante:

VS Code ──────┐
              │
CLI ──────────┤
              │
REST ─────────┼──► Zowe ───► z/OS
              │
Scripts ──────┤
              │
Automation ───┘

Isso não significa abolir ISPF.

Nem significa transformar z/OS em Linux.

Significa criar novas maneiras de conversar com a plataforma.

Dylan anotou:

O suspeito não destruiu a porta antiga. Construiu outra entrada.


👁️ CAPÍTULO 6 — MONITORING: o mainframe sempre esteve olhando

Aqui nossa investigação fica especialmente interessante.

O mundo distribuído descobriu recentemente uma palavra maravilhosa:

observability.

Logs!

Metrics!

Traces!

Dashboards!

Alertas!

Dylan quase sorriu.

Porque no porão do mainframe encontrou arquivos muito mais antigos:

SMF
RMF
SYSLOG
OPERLOG
WLM
CICS Statistics
Db2 Accounting
IMS Logs
MQ Statistics

O mainframe sempre produziu uma quantidade extraordinária de informações operacionais.

Então qual é a novidade?

Correlação.


🔎 CAPÍTULO 7 — O cliente não sabe o que é uma LPAR

Imagine Maria pagando R$100 usando o celular.

Para ela:

CELULAR
  ↓
PAGAMENTO

Simples.

Agora acompanhemos o que pode acontecer por trás:

Mobile App
    ↓
Internet
    ↓
API Gateway
    ↓
OpenShift
    ↓
Java
    ↓
MQ
    ↓
z/OS Connect
    ↓
CICS
    ↓
COBOL
    ↓
Db2

Maria liga:

— Meu pagamento demorou.

Ela não diz:

"Observei um aumento no response time da transaction class associada ao CICS."

Seria fantástico se dissesse.

Mas não diz.

Ela quer saber por que o botão demorou.

A empresa precisa investigar a transação inteira.

Esse é o grande salto entre simplesmente monitorar componentes e observar serviços distribuídos.


🔦 CAPÍTULO 8 — A lanterna chamada Trace ID

Dylan coloca uma etiqueta na vítima:

TRACE-ID: BELLACOSA-0317

Agora imagine essa identificação acompanhando a solicitação:

APP
 │
 │ 0317
 ▼
API
 │
 │ 0317
 ▼
OPENSHIFT
 │
 │ 0317
 ▼
MQ
 │
 │ 0317
 ▼
CICS
 │
 │ 0317
 ▼
COBOL
 │
 │ 0317
 ▼
DB2

Agora temos uma investigação de verdade.

Podemos descobrir:

APP            120 ms
API             80 ms
OPENSHIFT       90 ms
MQ              40 ms
CICS            70 ms
COBOL           20 ms
DB2           3.900 ms

A aplicação demorou aproximadamente 4,3 segundos.

E finalmente encontramos o suspeito.

Não era COBOL.

Era uma consulta no banco.

O pobre COBOL estava sendo acusado porque morava no bairro errado.


🩸 CAPÍTULO 9 — OpenTelemetry encontra SMF

Aqui existe uma possibilidade particularmente fascinante.

De um lado temos o universo tradicional:

SMF
RMF
WLM
CICS
Db2
IMS
MQ

Do outro:

OpenTelemetry
Prometheus
Grafana
Elastic
OpenSearch
Jaeger

Historicamente eles podem parecer dois mundos.

Mas uma aplicação empresarial moderna pode atravessar ambos.

Portanto, o verdadeiro objetivo passa a ser:

             BUSINESS TRANSACTION
                     │
       ┌─────────────┴─────────────┐
       │                           │
 DISTRIBUTED WORLD             MAINFRAME
       │                           │
 OpenTelemetry                   SMF
 Prometheus                      RMF
 Containers                      WLM
 Kubernetes                      CICS
 APIs                            Db2
       │                           │
       └─────────────┬─────────────┘
                     │
               OBSERVABILITY

Agora podemos começar a responder não apenas:

"A CPU está boa?"

Mas:

"Por que o cliente não conseguiu concluir a compra?"

Essa segunda pergunta vale dinheiro.


📈 CAPÍTULO 10 — SCALING: o monstro começou a crescer

Nosso terceiro mistério é escala.

Alguém poderia dizer:

— Finalmente Kubernetes ensinará mainframe a escalar!

Nesse momento talvez Dylan pedisse para Groucho retirar a pessoa da sala.

Mainframes foram construídos justamente para executar workloads enormes.

z/OS possui uma longa história de administração sofisticada de workloads.

Temos conceitos como:

LPAR
WLM
Parallel Sysplex
Coupling Facility
Capacity
Workload Management

O que mudou foi o ambiente ao redor.

Imagine:

               INTERNET
                   │
             LOAD BALANCER
                   │
          ┌────────┼────────┐
          │        │        │
         POD      POD      POD
          │        │        │
          └────────┼────────┘
                   │
                  MQ
                   │
                CICS
                   │
                COBOL
                   │
                 DB2

Kubernetes pode aumentar pods.

Ótimo.

Mas isso não significa capacidade infinita.


☠️ CAPÍTULO 11 — O horror do autoscaling cego

Aqui mora um monstro interessante.

Suponhamos:

3 PODS

O sistema detecta carga elevada.

Então:

3 → 6 → 12 → 24 → 48 PODS

Fantástico!

Exceto que todos atacam o mesmo backend.

48 PODS
   │
   │
   ▼
   MQ
   │
   ▼
  CICS
   │
   ▼
  DB2

Escalar frontend sem compreender backend pode simplesmente produzir um ataque DDoS patrocinado pela própria empresa.

Essa é uma das grandes lições de arquitetura híbrida.

Precisamos compreender:

  • throughput;

  • concorrência;

  • filas;

  • limites;

  • CPU;

  • I/O;

  • locks;

  • conexões;

  • response time;

  • prioridades;

  • capacidade do backend.

Escalabilidade não significa "crie mais coisas".

Significa administrar capacidade do sistema completo.


🐧 CAPÍTULO 12 — Há um pinguim no porão

Dylan ouviu um barulho.

Desceu mais um andar.

Encontrou Linux.

Sim, Linux no mainframe.

Essa confusão ainda existe:

MAINFRAME = z/OS

Não exatamente.

IBM Z pode hospedar diferentes ambientes e workloads.

Podemos pensar conceitualmente em:

IBM Z
 │
 ├── z/OS
 │    ├── COBOL
 │    ├── CICS
 │    ├── IMS
 │    └── Db2
 │
 ├── Linux on Z
 │    ├── Java
 │    ├── Python
 │    └── Open Source
 │
 └── Virtualização
      ├── z/VM
      └── outros ambientes suportados

Isso muda completamente a imagem mental de "computador antigo".

O hardware permanece centralizado e extremamente robusto.

O ecossistema de software, entretanto, tornou-se bastante heterogêneo.


🔧 CAPÍTULO 13 — DevOps encontra COBOL

Nosso programador iniciante agora recebe uma missão.

Modificar:

CUSTOMER.cbl

No fluxo tradicional poderia acontecer:

ISPF
 ↓
EDIT
 ↓
JCL
 ↓
COMPILE
 ↓
LINK
 ↓
TEST

Esse fluxo continua perfeitamente válido em muitos ambientes.

Mas podemos criar:

VS Code
   ↓
Git
   ↓
Commit
   ↓
Pull Request
   ↓
Automated Build
   ↓
Unit Test
   ↓
Security Scan
   ↓
Deploy
   ↓
Monitoring

Observe o detalhe.

Em nenhum momento fomos obrigados a escrever:

rm CUSTOMER.cbl

O COBOL continua lá.

Mudamos o software delivery lifecycle.

Essa diferença é fundamental.


🧠 CAPÍTULO 14 — O erro clássico: confundir modernização com linguagem

Dylan encontra finalmente uma testemunha.

— Eu vi tudo! Modernizaram o sistema!

— Como?

— Converteram COBOL para Java!

Dylan fecha o bloco de notas.

Isso pode ser modernização.

Mas não é a definição de modernização.

Um programa COBOL pode estar integrado a:

Git
CI/CD
Automated Tests
APIs
Modern IDE
Observability
Security Automation
AI Assistance

Enquanto um programa Java pode viver em:

FTP
manual deployment
no tests
hardcoded passwords
no monitoring
no documentation

Qual dos dois é realmente "legado"?

A linguagem não responde sozinha.

Processo, arquitetura, governança e manutenibilidade importam enormemente.


🕸️ CAPÍTULO 15 — O verdadeiro monstro é a complexidade

Depois de horas investigando, Dylan percebe algo.

Não existe apenas um assassino.

Existe uma teia.

                    USER
                      │
                     APP
                      │
                     API
                      │
                  KUBERNETES
                      │
                      MQ
                      │
               z/OS CONNECT
                      │
                    CICS
                      │
                    COBOL
                      │
                     DB2

Cada camada possui:

Security
Monitoring
Configuration
Capacity
Networking
Logging
Authentication
Authorization
Versioning
Dependencies

É aqui que open source pode ajudar muito.

Mas também é onde ele pode criar problemas se for adotado simplesmente porque "todo mundo usa".

Open source não elimina complexidade.

Às vezes ele democratiza ferramentas para administrá-la.

E às vezes adiciona outra camada.

Arquitetura continua exigindo engenharia.


🧰 CAPÍTULO 16 — O arsenal do Investigador do Pesadelo

Se Dylan Dog fosse engenheiro de plataforma IBM Z, sua mala talvez tivesse:

┌─────────────────────────────┐
│ DYLAN DOG TOOLBOX           │
├─────────────────────────────┤
│ RACF       → Security       │
│ SMF        → Evidence       │
│ RMF        → Performance    │
│ WLM        → Workloads      │
│ SDSF       → Operations     │
│ Zowe       → Integration    │
│ Git        → Versioning     │
│ CI/CD      → Automation     │
│ OTel       → Tracing        │
│ Grafana    → Visualization  │
│ Linux      → Open ecosystem │
└─────────────────────────────┘

Mas ferramentas não resolvem crimes sozinhas.

Precisamos saber que pergunta fazer.


🎓 CAPÍTULO 17 — O novo programador mainframe

Talvez esta seja a maior transformação.

Durante décadas uma trilha de formação poderia começar assim:

3270
 ↓
TSO
 ↓
ISPF
 ↓
JCL
 ↓
COBOL
 ↓
VSAM
 ↓
CICS
 ↓
DB2

Eu ainda ensinaria essa base.

Porque abstração sem fundamento produz profissionais que sabem apertar botões, mas não entendem o que acontece quando o botão falha.

Porém acrescentaria outra coluna:

MAINFRAME CLÁSSICO       ENGENHARIA MODERNA

TSO/ISPF                 VS Code
JCL                      Pipelines
COBOL                    Git
CICS                     APIs
Db2                      Observability
RACF                     IAM concepts
SDSF                     Automation
SMF                      Telemetry
USS                      Open Source

Não são inimigos.

São camadas de conhecimento.

O profissional interessante do futuro sabe atravessar essa ponte.


🧟 CAPÍTULO 18 — E a inteligência artificial?

Naturalmente nosso monstro mais recente aparece.

IA pode ajudar a:

explicar COBOL
gerar documentação
analisar dependências
sugerir testes
interpretar mensagens
auxiliar debugging
explicar JCL
produzir scripts
examinar código legado

Fantástico.

Mas existe uma regra Dylan Dog para isso:

Não confie no monstro apenas porque ele fala educadamente.

Código gerado precisa ser revisado.

JCL precisa ser entendido.

Sugestões precisam ser validadas.

Segurança precisa permanecer sob controle.

Imagine uma IA sugerindo:

PERMIT * CLASS(DATASET) ACCESS(ALTER)

e alguém respondendo:

"A inteligência artificial recomendou."

Nesse momento o verdadeiro terror começou.

IA deve aumentar a capacidade do engenheiro.

Não abolir julgamento técnico.


🕯️ CAPÍTULO 19 — O Easter Egg das 03:17

Às 03:17, todos os dashboards ficaram vermelhos.

CPU?

Normal.

Storage?

Normal.

CICS?

UP.

Db2?

UP.

MQ?

UP.

Kubernetes?

Healthy.

O operador escreveu:

03:17:22 - USERS REPORTING PAYMENT TIMEOUT

Dylan olhou para o dashboard.

Tudo verde.

Olhou novamente para o cliente.

Tudo quebrado.

E finalmente percebeu o verdadeiro pesadelo:

Todos monitoravam componentes. Ninguém monitorava a experiência completa.

O sistema poderia estar tecnicamente saudável enquanto o serviço estava funcionalmente morto.

Essa talvez seja a melhor explicação de por que observabilidade tornou-se tão importante.


🧩 CAPÍTULO 20 — Security + Monitoring + Scaling

Finalmente podemos retornar ao título:

Securing

Garantir que as novas portas abertas pela modernização não destruam décadas de controles.

Monitoring

Sair da visão isolada do componente e compreender a transação ponta a ponta.

Scaling

Fazer ambientes distribuídos e mainframe responderem à demanda sem simplesmente transferir o gargalo de uma camada para outra.

E existe um quarto elemento escondido:

Integrating

Porque todos os anteriores dependem dele.

            MAINFRAME EVOLUTION
                    │
     ┌──────────────┼──────────────┐
     │              │              │
 SECURITY      OBSERVABILITY     SCALE
     │              │              │
     └──────────────┼──────────────┘
                    │
              INTEGRATION
                    │
                OPEN SOURCE
                    │
              AUTOMATION
                    │
                 IBM Z

☕ EPÍLOGO — Dylan fecha o caso

O sol começava a nascer.

Groucho trouxe café.

Dylan fechou a pasta.

Na capa escreveu:

CASE CLOSED?

Depois riscou o ponto de interrogação.

E tornou a colocá-lo.

Porque sistemas nunca ficam realmente prontos.

Eles evoluem.

O ponto central de Mainframe Evolution: Securing, Monitoring, and Scaling with Next-Gen Open Source não precisa ser interpretado como uma guerra entre dois mundos.

Não é:

MAINFRAME
   VS
OPEN SOURCE

Também não é:

OLD
 ↓
DELETE
 ↓
NEW

É algo muito mais interessante:

       60+ ANOS DE ENGENHARIA
                │
                ▼
             IBM Z
                │
      ┌─────────┼─────────┐
      │         │         │
    z/OS      Linux    Open Source
      │         │         │
 COBOL/CICS    Apps      Tools
 Db2/IMS/MQ   Cloud     Automation
      │         │         │
      └─────────┼─────────┘
                │
              APIs
                │
              Git
                │
             CI/CD
                │
         Observability
                │
            Security
                │
               AI
                │
                ▼
       MODERN ENTERPRISE

E isso nos conduz a uma conclusão deliciosa para alguém que trabalha com mainframe.

Durante décadas perguntaram:

"Quando o mainframe vai morrer?"

Talvez a pergunta estivesse errada.

A pergunta mais interessante em 2026 é:

"Quantas tecnologias novas o mainframe ainda conseguirá absorver sem deixar de ser mainframe?"

Até agora, a resposta parece ser:

muitas.

Talvez seja exatamente isso que explique sua longevidade.

O mainframe não sobreviveu apesar das mudanças.

Em boa medida, sobreviveu porque aprendeu a incorporá-las.

Dylan Dog saiu do data center.

As luzes se apagaram.

Uma última mensagem apareceu no console:

IEF404I BELLACOSA - ENDED - TIME=04.17.00

Groucho olhou para a tela.

— Então o monstro morreu?

Dylan vestiu o casaco.

— Não.

— E agora?

Ao fundo, outra mensagem apareceu:

$HASP100 BELLACOSA ON READER

O JOB seguinte acabara de entrar.

Bellacosa Mainframe — porque no mainframe até os fantasmas têm retrocompatibilidade.



quinta-feira, 10 de setembro de 2026

🎧 zBNA — A Conversação do Batch: Harry Caul e o Mistério do Critical Path

 

Bellacosa Mainframe apresenta o zBNA analise de processos batch

☕ Um Café no Bellacosa Mainframe

🎧 zBNA — A Conversação do Batch: Harry Caul e o Mistério do Critical Path

Sob a batuta de Harry Caul, de The Conversation: no mainframe, assim como numa gravação de vigilância, o problema raramente está simplesmente no sinal mais alto. Está naquilo que acontece entre os sinais — nas pausas, dependências, esperas e detalhes que ninguém percebeu.



Imagine uma sala silenciosa.

Na parede existem gráficos de CPU, relatórios de utilização, tempos de execução, estatísticas de I/O e algumas planilhas de capacity planning.

O batch deveria ter terminado às 03:00.

São 03:17.

Alguém olha para o gráfico e diz:

— Precisamos de um mainframe maior.

No fundo da sala, Harry Caul não responde.

Ele coloca os fones de ouvido.

Volta a fita.

Escuta novamente.

Porque Harry aprendeu uma coisa durante toda uma vida ouvindo conversas que outras pessoas não deveriam ouvir:

uma informação isolada pode dizer algo completamente diferente quando colocada no contexto correto.

E é exatamente esse o problema que encontramos quando tentamos fazer sizing de um ambiente IBM Z olhando somente para capacidade de processador.

Bem-vindo à investigação.



🎧 1. Harry Caul não começaria olhando o processador

Para quem nunca assistiu a The Conversation, Harry Caul é um especialista em vigilância e gravação de áudio.

Seu trabalho não consiste simplesmente em gravar sons.

Ele precisa separar ruído de informação.

Uma conversa aparentemente banal pode esconder algo importante.

Uma frase pode assumir outro significado quando escutada novamente.

No nosso datacenter acontece algo parecido.

Temos:

CPU utilization
MSU
MIPS
Elapsed Time
CPU Time
I/O
Wait
ENQ
Db2
VSAM
JES2
WLM
Scheduler

Tudo está falando ao mesmo tempo.

O erro seria escolher o gráfico mais chamativo e concluir:

CPU alta
   ↓
Falta capacidade
   ↓
Comprar processador

Pode ser verdade.

Mas ainda não sabemos.

Harry Caul provavelmente perguntaria:

“O que aconteceu antes disso?”


 

Essa pergunta nos leva ao IBM Z Batch Network Analyzer — zBNA.



🕸️ 2. O batch é uma conversa entre JOBs

Para um programador COBOL iniciante, uma sequência batch pode parecer algo relativamente simples.

Temos JOBs:

JOB001
JOB002
JOB003
JOB004
JOB005

Parece uma lista.

Mas operacionalmente eles podem estar relacionados:

             +--> JOB B --+
             |            |
JOB A -------+            +--> JOB D --> JOB E --> FIM
             |            |
             +--> JOB C --+

Agora a história mudou.

JOB B e JOB C dependem de A.

JOB D depende de alguma condição relacionada aos anteriores.

JOB E depende de D.

Portanto, não estamos mais observando apenas programas.

Estamos observando uma rede de dependências.

É quase uma conversação:

JOB A: terminei.

JOB B: agora posso começar.
JOB C: eu também.

JOB C: terminei.

JOB D: ainda não.

JOB B: terminei.

JOB D: agora sim.

JOB D: processando...
JOB D: processando...
JOB D: processando...

JOB E: esperando...

Harry Caul imediatamente prestaria atenção naquele silêncio.

Por que JOB E está esperando?


⏱️ 3. O silêncio também faz parte da gravação

Esse é um conceito fundamental para quem começa a estudar performance.

Um programa pode estar demorando sem estar usando CPU.

Considere:

Elapsed Time = 42 minutos
CPU Time     = 11 minutos

Onde estão os outros 31 minutos?

Essa é uma pergunta maravilhosa.

Porque começamos a procurar:

I/O WAIT
LOCK
ENQ
DATASET CONTENTION
DB2 LOCKING
QUEUE
SCHEDULING
RESOURCE WAIT
NETWORK
APPLICATION SERIALIZATION

Imagine nossa investigação encontrando:

Elapsed Time     42 min
├── CPU           11 min
├── I/O            17 min
├── Lock/ENQ        8 min
└── Outros waits    6 min

Agora tente resolver isso simplesmente colocando mais processador.

Talvez os 11 minutos de CPU melhorem.

Mas e os outros?

Essa é a primeira grande lição:

Elapsed Time não é simplesmente CPU Time usando outro relógio.


🐉 4. Encontramos JOB D

Voltemos à cadeia:

JOB A = 12 min

       +-- JOB B = 18 min --+
       |                    |
       +-- JOB C =  7 min --+
                            |
                         JOB D = 42 min
                            |
                         JOB E = 9 min

B e C podem executar simultaneamente.

Portanto não podemos simplesmente fazer:

12 + 18 + 7 + 42 + 9

Precisamos considerar a dependência.

Nesse exemplo simplificado:

12 + MAX(18,7) + 42 + 9

Temos:

12 + 18 + 42 + 9 = 81 minutos

E observe JOB D:

42 / 81 ≈ 52%

Ele ocupa mais da metade do caminho.

Harry Caul colocaria os fones novamente.

Por que exatamente são 42 minutos?

Essa pergunta vale potencialmente muito dinheiro.


🛣️ 5. Critical Path — quem realmente possui o relógio?

Chegamos ao conceito central:

Critical Path.

Imagine uma rede maior:

                 JOB B --------+
                /               \
JOB A ----------                 +---- JOB F ----+
                \               /                |
                 JOB C --> JOB D                 +--> JOB H
                                                /
                 JOB E -------------------------+

Podemos possuir diferentes caminhos:

A → B → F → H

A → C → D → F → H

E → H

Um deles determinará quando todo o processo poderá terminar.

Esse é nosso caminho crítico.

E aqui surge uma descoberta extremamente importante:

O JOB que mais consome CPU não precisa ser o JOB mais importante para reduzir a janela batch.

Suponha que JOB X consuma enorme quantidade de CPU.

Todo mundo olha para ele.

JOB X
CPU TIME = █████████████████████

Parece culpado.

Mas JOB X possui bastante folga e está fora do critical path.

Você consegue uma otimização fantástica:

JOB X
-30% elapsed

Resultado sobre o fechamento:

0 minutos

Nada.

O batch termina exatamente no mesmo horário.

Enquanto isso, um JOB pequeno pertencente ao critical path perde cinco minutos esperando determinado recurso.

Eliminar aquela espera poderia antecipar o fechamento em aproximadamente cinco minutos.

Harry Caul diria:

vocês estavam ouvindo a pessoa errada.


💻 6. Programador COBOL: não condene o programa imediatamente

Encontramos JOB D.

A primeira reação pode ser:

— COBOL velho!

Calma.

Talvez o programa esteja perfeitamente correto.

Imagine:

PERFORM PROCESSA-REGISTRO
   UNTIL EOF.

O programa está executando adequadamente.

Mas cada ciclo depende de acesso a um recurso.

Pode existir:

COBOL
  ↓
VSAM
  ↓
Dataset
  ↓
ENQ
  ↓
WAIT

Ou:

COBOL
  ↓
SQL
  ↓
Db2
  ↓
LOCK
  ↓
WAIT

Ou ainda:

JOB
 ↓
Scheduler
 ↓
Dependency
 ↓
WAIT

Nenhuma quantidade de indignação contra o COBOL resolverá automaticamente isso.

E talvez nenhuma quantidade adicional de CPU resolva.

Precisamos encontrar a causa.


⚙️ 7. Capacity não é a mesma coisa que velocidade

Aqui encontramos outra armadilha.

Imagine dois sistemas hipotéticos:

SYSTEM A
10 engines × velocidade X

SYSTEM B
6 engines × velocidade Y

Mesmo que determinada medida agregada de capacidade pareça semelhante, o comportamento do workload pode ser diferente.

Por quê?

Imagine trabalho altamente paralelo:

JOB1 ──┐
JOB2 ──┤
JOB3 ──┼──> resultado
JOB4 ──┤
JOB5 ──┘

Vários engines podem ser aproveitados.

Agora imagine:

JOB1
  ↓
JOB2
  ↓
JOB3
  ↓
JOB4

Colocar dezenas de engines disponíveis ao lado dessa sequência não faz os JOBs executarem simultaneamente por mágica.

Temos então que distinguir:

aggregate capacity

de

per-engine performance

e ambos de:

usable parallelism.


🧵 8. Usable parallelism — dez microfones não criam dez conversas

Harry Caul poderia instalar dez microfones.

Mas se existe apenas uma pessoa falando, continuamos tendo uma conversa.

No mainframe podemos possuir:

10 engines disponíveis

enquanto o workload oferece:

1 unidade relevante de trabalho executável

Visualmente:

CPU0 ████████████
CPU1 ░░░░░░░░░░░░
CPU2 ░░░░░░░░░░░░
CPU3 ░░░░░░░░░░░░
CPU4 ░░░░░░░░░░░░

Adicionar CPU5, CPU6 e CPU7 não necessariamente ajudará.

Talvez precisemos investigar:

  • dependências;

  • scheduler;

  • initiators;

  • particionamento;

  • desenho dos JOBs;

  • datasets;

  • banco;

  • I/O;

  • serialização da aplicação.

Esse é o significado prático de usable parallelism.

Não importa somente quanta capacidade existe.

Importa quanto daquele paralelismo o workload consegue realmente consumir.


🏭 9. JES2, WLM e scheduler entram na sala

Agora nossa investigação fica mais interessante.

Eu dividiria o problema em quatro níveis:

BUSINESS PROCESS
       ↓
BATCH NETWORK
       ↓
z/OS RESOURCE BEHAVIOR
       ↓
PROCESSOR

No terceiro andar dessa investigação encontramos:

JES2
WLM
Initiators
Scheduler
I/O
Db2
VSAM
ENQ
Storage
Memory
Network

Imagine comprarmos um IBM Z muito mais poderoso.

Temos:

PROCESSOR
████████████████████████

JOB
██████

WAIT
████████████████████████████████

O processador está disponível.

O JOB não está trabalhando.

Harry Caul aumenta o volume.

Nada.

Porque o problema não está onde todos estavam olhando.


🎧 10. CPU a 95%: culpada!

Não tão rápido.

Encontramos:

CPU = 95%

Parece assustador.

Mas existe trabalho útil sendo processado?

O SLA está sendo atendido?

Existe fila significativa esperando CPU?

A utilização é sustentada ou apenas um pico?

O comportamento está dentro do esperado?

Então 95% isoladamente não constitui diagnóstico.

Agora encontramos:

CPU = 40%

Maravilha!

Temos sobra.

Talvez.

Ou talvez metade do workload esteja esperando recursos.

Portanto:

CPU HIGH ≠ automaticamente ruim

CPU LOW ≠ automaticamente bom

Um gráfico é uma pista.

Não é uma sentença.


🕵️ 11. War Room Mainframe sob a batuta de Harry Caul

Agora apagamos as luzes.

Colocamos JOB D no centro da tela.

Pergunta número um:

Por que exatamente são 42 minutos?

Não:

Quanto CPU ele usa?

Ainda não.

Primeiro:

42 MINUTOS
    |
    +-- CPU?
    |
    +-- I/O?
    |
    +-- ENQ?
    |
    +-- Db2 lock?
    |
    +-- VSAM?
    |
    +-- Queue?
    |
    +-- Scheduler?
    |
    +-- Dependency?
    |
    +-- Application serialization?

Então começamos a correlacionar evidências.

Esse é o ponto em que capacity planning deixa de ser comparação de catálogo e começa a se aproximar de investigação.


🔄 12. Harry Caul volta a fita

Encontramos o gargalo.

PATH A:

81 minutos

PATH B:

75 minutos

Otimizamos PATH A:

81 → 70

Excelente!

Acabou?

Não.

Agora temos:

PATH A = 70
PATH B = 75

PATH B tornou-se o novo critical path.

O gargalo mudou de endereço.

Esse comportamento ensina uma das coisas mais importantes sobre performance:

MEASURE
   ↓
ANALYZE
   ↓
FIND CRITICAL PATH
   ↓
OPTIMIZE
   ↓
MEASURE AGAIN
   ↓
RECALCULATE
   ↺

Harry Caul volta a gravação porque uma segunda audição pode revelar algo que a primeira interpretação escondeu.

Nós fazemos a mesma coisa.

Depois de modificar o workload, medimos novamente.


💰 13. Performance também conversa com dinheiro

Existe outro microfone naquela sala.

Custo.

Sizing não deveria ser simplesmente:

Qual máquina é mais rápida?

Precisamos equilibrar:

PERFORMANCE
     +
CAPACITY
     +
SLA
     +
SOFTWARE COST
     +
OPERATIONAL RISK
     +
GROWTH

Porque uma solução tecnicamente elegante pode não ser economicamente interessante.

Da mesma maneira, economizar dinheiro sacrificando um SLA crítico pode custar muito mais ao negócio.

Sizing é um problema de engenharia.

Mas também é um problema de negócio.


🎯 14. Antes do zBNA existe uma pergunta zero

Eu acrescentaria uma etapa antes de qualquer análise:

Qual é o SLA?

Imagine que o fechamento termina às 04:30.

Caso A:

SLA = 06:00
Fim = 04:30

Temos determinada situação.

Caso B:

SLA = 03:00
Fim = 04:30

Agora temos um incidente.

Os mesmos JOBs.

A mesma CPU.

O mesmo hardware.

O mesmo elapsed.

Contextos de negócio completamente diferentes.

Performance sem objetivo é apenas uma coleção muito bonita de gráficos.


🧠 15. As seis perguntas de Harry Caul

Se eu estivesse ensinando isso para um programador COBOL iniciante, colocaria seis perguntas ao lado do terminal:

1. Quando o negócio precisa terminar?

SLA.

2. O que precisa acontecer para ele terminar?

Batch Network.

3. Qual sequência determina esse horário?

Critical Path.

4. Por que os componentes críticos estão demorando?

CPU, I/O, locks, ENQ, Db2, VSAM, scheduling, dependências.

5. O workload consegue utilizar capacidade adicional?

Usable Parallelism.

6. Qual alteração entrega maior benefício considerando custo e risco?

Sizing.

Somente então colocamos os candidatos a processador sobre a mesa.


☕ 16. A tradução para quem está começando no COBOL

Você escreveu:

PERFORM PROCESSO-A
PERFORM PROCESSO-B
PERFORM PROCESSO-C
PERFORM PROCESSO-D

Alguém aparece oferecendo um computador duas vezes mais rápido.

Parece razoável imaginar:

2 × PERFORMANCE
       =
1/2 ELAPSED TIME

Mas descobrimos:

PROCESSO-A → CPU

PROCESSO-B → espera arquivo

PROCESSO-C → espera outro JOB

PROCESSO-D → espera lock Db2

Ops.

Nosso computador duas vezes mais rápido não pode acelerar magicamente aquilo que não está usando processador.

Quando ampliamos isso para centenas ou milhares de JOBs, datasets, bancos, schedulers, dependências e recursos compartilhados, começamos a compreender por que precisamos enxergar o workload como sistema.

É aí que o zBNA se torna particularmente interessante.


🥚 Easter Egg — 03:17

O processamento deveria terminar às 03:00.

Harry está sentado no fundo da War Room.

03:00

Nada.

03:05

Nada.

03:11

Os gerentes começam a olhar para o dashboard.

03:16

Alguém diz:

— Precisamos de mais CPU.

Harry coloca os fones.

03:17

Ele volta alguns minutos da gravação operacional.

Na tela:

JOB D
STATUS: WAIT

CPU?

AVAILABLE

Ele continua seguindo a cadeia.

Predecessor.

Dataset.

ENQ.

Wait.

Silêncio.

Harry tira lentamente os fones.

Não faltava processador.

Faltava ouvir a conversa inteira.


🏁 Conclusão — o mainframe também deixa pistas

O ensinamento mais importante do zBNA não é simplesmente aprender a utilizar outra ferramenta.

É aprender a fazer uma pergunta melhor.

Um problema de performance não significa automaticamente:

NEED MORE CAPACITY

A janela batch é resultado de uma combinação muito mais interessante:

BATCH WINDOW
     =
CPU
+
DEPENDENCIES
+
SERIALIZATION
+
PARALLELISM
+
I/O
+
CONTENTION
+
SCHEDULING
+
RESOURCE AVAILABILITY
+
APPLICATION BEHAVIOR

O processador está dentro dessa equação.

Às vezes ele será justamente o gargalo e aumentar capacidade será a decisão correta.

Mas precisamos demonstrar isso.

Harry Caul não condenaria alguém porque uma palavra pareceu suspeita na primeira reprodução.

Ele limparia o ruído.

Voltaria a fita.

Compararia os sinais.

Procuraria o contexto.

No capacity planning deveríamos ter a mesma disciplina.

Antes de perguntar:

“Qual IBM Z devemos comprar?”

pergunte:

“Quem está segurando o batch?”

Depois encontre o critical path.

Descubra quanto do elapsed realmente depende de CPU.

Investigue I/O, locks, datasets, scheduler, JES2, WLM, Db2, VSAM, ENQ e dependências.

Descubra quanto paralelismo é realmente utilizável.

Meça.

Simule.

Altere.

Meça novamente.

E somente depois faça sizing.

Porque existe uma diferença enorme entre possuir uma gravação e compreender a conversa.

Da mesma maneira, existe uma diferença enorme entre possuir métricas e compreender o workload.

🎧 Não faça sizing do mainframe antes de fazer sizing do problema.

O processador pode fornecer a potência.

Mas é o critical path que possui o relógio.

E, às 03:17, quando todos estiverem olhando para a CPU, talvez o verdadeiro gargalo esteja silenciosamente esperando em algum lugar da conversação.

quarta-feira, 26 de agosto de 2026

🚀 A Hidrelétrica Digital — Quando o Agente J Entrou na Sala de Controle do z/OS e Descobriu que Cem Alertas Não Eram Cem Problemas

 

Bellacosa Mainframe e a hidreletrica digital monitorando um mainframe

☕ Um Café no Bellacosa Mainframe

🚀 A Hidrelétrica Digital — Quando o Agente J Entrou na Sala de Controle do z/OS e Descobriu que Cem Alertas Não Eram Cem Problemas

Ou: o mainframe não precisava de mais pares de olhos diante de dashboards; precisava de sensores, contexto, bons procedimentos e alguém que não apertasse o botão vermelho só porque Igor disse que a luz estava piscando

O Agente J, recém-saído de mais uma manhã tentando explicar ao público que alienígenas não usavam cartão de ponto, entrou no centro de operações e parou diante de uma parede de telas. Havia gráficos verdes, amarelos, vermelhos, mapas de aplicações, filas, porcentagens de CPU, mensagens de console, tickets e, em um canto suspeito, um operador olhando para o JES como quem esperava que ele revelasse o futuro nas entranhas de um SYSOUT.

— Então é aqui que vocês protegem o banco? — perguntou J.

— Em tese — respondeu o Agente K. — Em prática, às vezes protegemos o banco de 97 alertas que são a mesma coisa usando fantasias diferentes.

O colega apontou para a tela. A CPU estava alta. Uma fila MQ crescia. O Db2 apresentava espera. Uma transação CICS ficava lenta. Um job batch ultrapassara o horário previsto. A API móvel exibia aumento de timeout.

— São seis incidentes? — J perguntou.

K colocou os óculos escuros, porque alguma instituição provavelmente ainda não havia inventado um protocolo para isso.

— Talvez seja um só. Esse é o problema.

É aí que começa a conversa sobre Mainframe Operations inteligente. Não se trata de substituir o operador L1, o analista L2, o DBA, o especialista CICS ou aquela pessoa que conhece uma regra de negócio tão antiga que parece ter sido entregue junto com o primeiro cartão perfurado. Trata-se de parar de usar profissionais experientes como sensores biológicos de dashboard.

O mainframe continua sendo uma das salas de máquinas mais confiáveis do mundo. Mas confiável não significa simples. Ele conversa com aplicações web, mobile, APIs, nuvens, filas, parceiros, cartões, pagamentos, batches, sistemas de fraude e uma coleção de integrações que, em alguns bancos, já possui mais dependências do que a árvore genealógica dos Targaryen. Observar tudo isso apenas olhando telas é como operar uma hidrelétrica com uma lanterna e um caderninho.


A hidrelétrica que, por acaso, processa pagamentos

A melhor analogia para entender AIOps no mainframe é uma hidrelétrica moderna.

Uma usina possui centenas ou milhares de sinais: nível da água, vazão, pressão, vibração, temperatura, rotação da turbina, posição de comportas, tensão, frequência e estado de equipamentos. Um sensor isolado raramente conta a história inteira. Uma vibração levemente maior pode ser normal. Vibração crescente junto com temperatura elevada, perda de eficiência e alteração de pressão é outra conversa: alguém precisa investigar antes que a conversa vire notícia.

O ambiente z/OS tem seus próprios sensores:

  • CPU, memória, dispatching e metas de serviço do WLM;

  • I/O, canais, volumes e espaço de DASD;

  • jobs, initiators, spool e mensagens do JES2;

  • tempos de resposta e regiões do CICS;

  • locks, waits, pools e SQL no Db2;

  • filas, canais e consumidores no MQ;

  • transações IMS e conectividade TCP/IP;

  • logs, traces, mensagens do console e registros SMF;

  • latência de APIs, erros de aplicativos e experiência do cliente.

O cliente, no entanto, não vê nenhum desses itens. Ele vê uma pergunta de cinco segundos: “o PIX foi?”, “o pagamento entrou?”, “consigo consultar meu saldo?”, “a folha fechou?”.

Por isso, operação madura não monitora apenas componentes. Ela monitora serviços de negócio e usa os componentes para explicar o que aconteceu com eles.

CPU alta numa LPAR pode ser apenas o processamento esperado do fechamento. CPU alta, fila MQ crescendo, transação CICS acima do SLO e timeout no app bancário é uma tempestade se formando. A diferença não está no gráfico; está no contexto.


Antes da IA: alerta, evento, incidente, problema e mudança

Em operações, algumas palavras são tratadas como sinônimos até o dia em que deixam de ser. Vale colocá-las em ordem antes de dar uma pistola neuralizadora ao dashboard.

Um evento é qualquer ocorrência observável: uma mensagem no console, um job terminando, uma conexão caindo, uma alteração de estado. Um alerta é um evento que cruza uma regra de atenção: a fila passou de determinado tamanho, o tempo de resposta ultrapassou um limite, um recurso ficou indisponível.

Um incidente é quando um serviço está interrompido ou degradado. “Clientes não conseguem pagar” é incidente. Já um problema é a causa persistente ou subjacente que pode produzir vários incidentes: um plano SQL ruim, uma parametrização incorreta, um vazamento de recurso, um processo batch concorrendo de modo inadequado.

E há a mudança: o deploy, ajuste de parâmetro, manutenção ou alteração de configuração que pode ser a solução, a causa ou uma coincidência muito suspeita.

O erro clássico do monitoramento tradicional é transformar cada alerta em um incidente. Assim, uma única regressão após um deploy gera tickets separados para API, CICS, Db2, MQ, rede e storage. Cada equipe recebe seu fragmento do elefante e conclui que a culpa está em outra sala.

O objetivo da correlação é fazer o caminho oposto: agrupar os sintomas e apresentar um incidente operacional coerente.

Incidente: Pagamentos digitais degradados.
Impacto: clientes com timeout acima de três segundos.
Serviços envolvidos: API Payments → CICS PAYM → Db2 DBPAY → MQ.
Início: logo após a mudança CHG004321.
Hipótese: aumento de chamadas e regressão de plano SQL.
Próximo passo: coletar evidências e executar runbook aprovado.

Note a palavra importante: hipótese. Uma plataforma inteligente deve apresentar causa provável e nível de confiança, não posar de oráculo. Correlação temporal é valiosa; não é prova definitiva de causalidade.



O que as ferramentas trazem para a sala de controle

Ferramentas como IBM OMEGAMON, BMC AMI Ops e Broadcom SYSVIEW dão visibilidade profunda de z/OS e seus subsistemas. Elas ajudam a enxergar o que realmente acontece na LPAR, no CICS, no Db2, no MQ, no IMS, no JES e nos recursos que sustentam a carga. São os instrumentos de engenharia da usina.

IBM Z System Automation, NetView e soluções como OPS/MVS entram mais diretamente na parte de automação orientada a eventos, disponibilidade e ações controladas. Elas podem detectar estados, aplicar políticas e disparar procedimentos conhecidos.

No outro extremo da jornada, plataformas de observabilidade como Instana, Dynatrace e AppDynamics ajudam a costurar a visão de ponta a ponta: o clique no aplicativo, a API, o middleware, a transação no mainframe e o retorno ao cliente. Splunk e Elastic podem centralizar logs, eventos e análises, desde que os dados tenham qualidade, horário confiável e acesso devidamente protegido. ServiceNow organiza o processo: ticket, mudança, aprovação, SLA, escalonamento, CMDB e workflow.

O detalhe que slides de marketing omitem é este: nenhuma dessas ferramentas, isoladamente, é AIOps. A inteligência aparece na integração.

Um monitor detecta a anomalia. A topologia informa as dependências. A CMDB identifica o serviço e seu dono. O histórico aponta o comportamento esperado. O motor de correlação reduz o ruído. O ServiceNow abre um incidente já enriquecido. A automação executa uma ação de baixo risco. E a observabilidade confirma se o serviço voltou a funcionar.

Sem esse encadeamento, temos várias telas bonitas. Com ele, temos uma sala de controle.


Threshold estático: o velho porteiro ainda tem emprego

“Alerta quando CPU ultrapassar 90%.” É uma regra simples, útil e incompleta.

Às duas da manhã, no processamento mensal, 90% pode ser esperado. Às duas da tarde, numa LPAR que normalmente opera a 45%, 65% pode ser a primeira pista de algo muito estranho. É aqui que entram baseline, sazonalidade e detecção de anomalia.

Uma boa análise pergunta:

  • este comportamento é normal para este horário e este dia?

  • houve alteração abrupta, mesmo abaixo do limite absoluto?

  • quais métricas se moveram juntas?

  • qual serviço de negócio foi afetado?

  • houve mudança, deploy ou manutenção recente?

  • o impacto é crescente ou estável?

Mas não se deve jogar fora os limites rígidos. Espaço de DASD quase esgotado, fila aproximando-se de limite físico, certificado prestes a expirar e recurso indisponível não precisam aguardar uma tese de machine learning. O ambiente maduro combina limites determinísticos para riscos claros e anomalias estatísticas para padrões sutis.

O Agente J resumiria assim: “Se o reservatório está transbordando, não vamos montar um comitê para saber se a água parece incomumente molhada.”



Do alerta ao incidente: um caso de banco digital

Imagine que, às 10h05, clientes começam a relatar lentidão ao efetuar pagamentos.

No modo antigo, L1 abre o dashboard da aplicação e vê timeout. Depois consulta CICS e identifica transações com maior tempo de resposta. Abre Db2 e encontra waits. Vai ao SDSF verificar jobs. Olha MQ. Procura mensagens. Cria ticket. Escala para L2, DBA, middleware, infraestrutura e, por segurança, para a equipe que fez o último deploy. Todos começam a investigar ângulos diferentes.

No modelo inteligente, as informações chegam correlacionadas. A plataforma observa que:

  • a jornada “pagamento digital” ultrapassou seu SLO;

  • a API Payments aumentou o volume de requisições;

  • a transação CICS PAYM ficou lenta;

  • o Db2 mostrou aumento de waits e uma consulta específica mudou de comportamento;

  • a fila MQ começou a acumular mensagens;

  • tudo teve início minutos após uma mudança registrada.

O L1 não recebe seis sirenes. Recebe um incidente com impacto, dependências, evidências, possíveis responsáveis e runbook.

Isso não elimina a investigação técnica. Elimina a caça ao tesouro inicial — aquela meia hora em que cada pessoa tenta descobrir se o incêndio é real, onde começou e quem tem a chave do armário de mangueira.

Para um programador COBOL iniciante, existe uma lição excelente aí: seu PROGRAM-ID quase nunca vive sozinho. Uma rotina aparentemente inocente pode chamar Db2, publicar em MQ, ser acionada por CICS, expor dados por API e participar de um fluxo que movimenta dinheiro. Aprender a observar o caminho da transação é tão importante quanto acertar o PERFORM.



Self-healing sem transformar Igor em DBA de produção

Automação de recuperação é maravilhosa até alguém programar uma rotina para derrubar uma região CICS crítica por causa de um alerta mal calibrado. Por isso, “self-healing” precisa ser dividido por risco.

Há ações ótimas para automação total:

  • coletar logs, mensagens, dumps e métricas quando surge uma anomalia;

  • abrir e enriquecer incidentes;

  • executar health checks;

  • reiniciar um processo isolado e conhecido;

  • elevar temporariamente o nível de monitoramento;

  • pausar uma cadeia batch antes que um erro se propague;

  • fazer a notificação e o escalonamento corretos.

Outras ações devem ser assistidas ou requerer aprovação:

  • cancelar batch crítico;

  • alterar WLM;

  • modificar parâmetro Db2;

  • derrubar ou reciclar região compartilhada;

  • fazer failover;

  • alterar RACF, certificados, conectividade ou regras de segurança;

  • realizar rollback de aplicação.

A regra de ouro é simples: quanto maior o raio de explosão, maior a necessidade de aprovação humana, trilha de auditoria e rollback.

Uma hidrelétrica não permite que um algoritmo abra todas as comportas porque um sensor piscou. Ela trabalha por níveis: automático para ajustes seguros e reversíveis; assistido para recomendações que o operador aprova; manual para decisões críticas. A operação de mainframe deveria seguir exatamente essa filosofia.

Igor, naturalmente, propôs colocar CANCEL JOB(*) dentro de um botão verde chamado “cura automática”. O Agente K confiscou o teclado. Segurança também é uma forma de carinho.



L1 e L2: menos mensageiros, mais operadores de exceção

A evolução não diminui o valor de L1 e L2; ela muda o tipo de valor entregue.

L1 deixa de ser a pessoa que copia mensagens de console para um ticket e pode se tornar operador de exceções: valida impacto, executa runbooks aprovados, confirma se a correção funcionou, faz comunicação operacional e escalona com evidências.

L2 ganha espaço para trabalho que diminui as próximas madrugadas ruins: análise de causa raiz, ajuste de alertas, automações, gestão de capacidade, revisão de arquitetura, melhoria de runbooks e eliminação de falhas recorrentes.

Isso é próximo da cultura de SRE: não basta apagar incêndio com eficiência; é preciso descobrir por que o prédio continua tendo incêndios na mesma tomada.



A parte chata que salva o projeto: dados, nomes e procedimentos

Antes de contratar uma IA com nome de nave espacial, arrume a base.

Se a aplicação é chamada de PAGTO no mainframe, “Pix” pelo negócio, “Payments Hub” na CMDB e APP-347 no dashboard, a ferramenta não ganhou contexto; ganhou quatro identidades secretas para o mesmo serviço. Nem o MIB tem orçamento para isso.

Os obstáculos reais costumam ser:

  • alertas duplicados ou sem dono;

  • topologia e CMDB desatualizadas;

  • logs sem correlação, timestamp confiável ou padronização;

  • mudanças sem registro operacional;

  • runbooks velhos, incompletos ou guardados na cabeça de uma única pessoa;

  • ausência de SLOs e indicadores de impacto de negócio;

  • automações sem teste, validação ou rollback;

  • permissões excessivas em contas técnicas.

Lembre-se: IA alimentada por telemetria ruim apenas produz conclusões ruins com uma confiança irritantemente bem redigida.



Um roteiro possível para começar

Não tente modernizar todos os alertas do universo numa única change. Comece pequeno, mensurável e dolorosamente real.

Primeiro: reduza ruído. Revise alertas. Cada alerta deve ter dono, severidade, ação esperada e justificativa. Se ninguém sabe o que fazer quando ele dispara, provavelmente não é alerta; é decoração sonora.

Segundo: escolha jornadas críticas. Pagamento, PIX, cartão, fechamento, folha, faturamento, autorização. Comece por aquilo cuja indisponibilidade o negócio percebe em minutos.

Terceiro: mapeie dependências. Desenhe API, middleware, CICS/IMS, Db2, MQ, batch, rede, storage e terceiros. A pergunta é: “se isto falhar, quem sente?”

Quarto: escreva runbooks utilizáveis. Não um PDF de 200 páginas enterrado no SharePoint. Um procedimento que diga sintomas, verificações, comandos autorizados, evidências, critérios de parada, escalonamento e rollback.

Quinto: automatize a coleta antes da correção. Fazer a máquina montar um ticket excelente e reunir evidências já reduz muito MTTR. Automação de remediação vem depois, em ações reversíveis e testadas.

Sexto: correlacione casos recorrentes. Se três incidentes por mês começam com a mesma combinação de sinais, essa é uma ótima primeira regra. A automação deve nascer de dor repetida, não de entusiasmo em reunião.

Sétimo: valide o resultado. Uma ação só é recuperação se o serviço voltou ao SLO. Reiniciar uma tarefa e fechar o ticket porque o alerta sumiu é como desligar o alarme de incêndio e declarar que a fumaça foi embora.



O que medir para saber se a inteligência existe

Não conte telas, licenças ou gráficos com inteligência artificial desenhada no canto. Meça resultado:

  • quantidade de alertas por incidente real;

  • redução de ruído;

  • MTTA, o tempo até reconhecer o incidente;

  • MTTR, o tempo até restaurar o serviço;

  • percentual de incidentes detectados antes do cliente;

  • taxa de sucesso e falha das automações;

  • reincidência dos principais problemas;

  • percentual de tickets enriquecidos automaticamente;

  • cobertura de serviços críticos com SLO e dependências mapeadas.

O indicador mais honesto é simples: o operador passa menos tempo caçando pistas e mais tempo prevenindo a próxima falha?



Epílogo — Não é Skynet; é uma usina bem operada

Mainframe Operations inteligente não é dar autonomia ilimitada a um modelo e esperar que ele descubra o significado de IEC161I enquanto a produção queima. É criar uma operação que coleta sinais, entende dependências, relaciona tecnologia com negócio, aplica procedimentos seguros e mantém pessoas experientes no circuito.

O futuro não é “menos humanos”. É menos trabalho mecânico, menos escalonamento cego, menos alertas inúteis e mais inteligência aplicada ao que realmente importa.

Quando o Agente J saiu da sala, perguntou se poderia usar o neuralyzer para apagar da memória dos operadores todos os alertas duplicados.

K balançou a cabeça.

— Não. Primeiro precisamos corrigir a regra que os gera.

E aquele, para quem já enfrentou uma madrugada de console cheio e café frio, foi o momento mais sensato de toda a operação.

Easter egg para quem viveu o mainframe: se um dashboard declarar tudo verde enquanto o usuário reclama que nada funciona, desconfie. Talvez não seja uma invasão alienígena. Talvez alguém esteja monitorando o recurso certo… para o serviço errado.

domingo, 16 de agosto de 2026

O Guia do Mochileiro das Galáxias para a Crise de Skills no IBM Z

 

Bellacosa Mainframe e a crise dos skills no mundo ibm z

☕ Um Café no Bellacosa Mainframe

O Guia do Mochileiro das Galáxias para a Crise de Skills no IBM Z

🚀 Como um programador COBOL iniciante pode sobreviver a badges, cursos de 15 semanas, veteranos de 40 anos, abends inexplicáveis e à perturbadora descoberta de que MAXCC=0 não significa que você entendeu alguma coisa

NÃO ENTRE EM PÂNICO.
Especialmente se alguém disser que você virou especialista em mainframe depois de quinze semanas.

Existe, em algum lugar do universo corporativo, provavelmente em uma sala com carpete cinza, café requentado e uma televisão exibindo dashboards coloridos, uma pessoa extremamente satisfeita porque um gráfico ficou verde.

O gráfico provavelmente se chama:

IBM Z SKILLS PIPELINE — STATUS: HEALTHY

Ao lado dele há números impressionantes:

2.437 estudantes treinados
1.982 badges emitidos
784 laboratórios concluídos
97% satisfaction score
42 parceiros
15 semanas

Todos aplaudem.

Alguém tira uma fotografia.

Um executivo diz:

— Excelente! Resolvemos o problema de skills.

Nesse exato momento, a aproximadamente 37 metros dali, um especialista de Db2 com 31 anos de experiência está preenchendo sua documentação de aposentadoria.

Ninguém percebe.

Ele sabe por que determinada subsystem parameter foi alterada em 2004.

Ninguém mais sabe.

Ele lembra por que um batch aparentemente absurdo precisa executar antes das 04:17.

Ninguém documentou.

Ele sabe que existe um programa COBOL compilado em uma determinada opção porque, sem ela, um arquivo produzido por um sistema comprado em 1998 gera um problema extremamente específico que só aparece em fevereiro, em anos bissextos, quando o processamento acontece depois de uma determinada janela.

O programa chama-se:

XPTO047B

Naturalmente.

E assim começa a nossa aventura.

Porque a crise de habilidades do mainframe não é simplesmente uma crise de gente.

É uma crise de continuidade de conhecimento.

E se você é um programador COBOL iniciante entrando agora nesse universo, tenho duas notícias.

A primeira é ótima:

Nunca houve tanto material para aprender mainframe.

A segunda é ligeiramente perturbadora:

Aprender material não significa aprender mainframe.

Pegue sua toalha.

Vamos conversar sobre isso.



🧭 Capítulo 1 — Você não precisa saber IBM Z para começar IBM Z

Comecemos eliminando uma bobagem imediatamente.

Existem pessoas que ficam indignadas quando aparece um curso anunciando:

No previous IBM Z experience required.

Isso, por si só, não é um problema.

Na realidade, é excelente.

Se para aprender mainframe fosse necessário já conhecer mainframe, teríamos criado um paradoxo digno de um departamento burocrático intergaláctico:

Para conseguir experiência:
    você precisa trabalhar com mainframe.

Para trabalhar com mainframe:
    você precisa ter experiência com mainframe.

Resultado:

RC=12
REASON=HUMAN_RESOURCE_NOT_FOUND

Todo ecossistema precisa de portas de entrada.

Precisamos de universidades.

Precisamos de cursos.

Precisamos de bootcamps.

Precisamos de laboratórios.

Precisamos de vídeos.

Precisamos de badges.

Precisamos de ambientes educacionais.

Precisamos até daquele sujeito no YouTube que grava um tutorial às três da manhã explicando JCL enquanto um gato atravessa o teclado.

Tudo isso é valioso.

O problema surge quando confundimos:

porta de entrada

com

linha de chegada.

Um curso de 15 semanas pode apresentar você ao IBM Z.

Ele pode ensinar conceitos fundamentais.

Pode fazer você executar JCL.

Pode mostrar COBOL.

Pode apresentar Db2.

Pode colocar você diante de CICS.

Pode ensinar conceitos de RACF.

Pode fazer você entender datasets, JES, TSO, ISPF e talvez z/OSMF.

Fantástico.

Mas quinze semanas não transformam automaticamente alguém em especialista.

Da mesma forma que quinze semanas de aulas de medicina não transformam alguém em neurocirurgião.

Você pode aprender onde fica o cérebro.

Isso já ajuda bastante.

Mas eu não entregaria imediatamente uma furadeira.



🪪 Capítulo 2 — O Badge não é seu inimigo

Existe uma tendência divertida em tecnologia de atacar badges como se pequenos arquivos PNG fossem responsáveis pela decadência da civilização ocidental.

Eles não são.

Um badge é simplesmente um marcador.

Ele pode dizer:

Esta pessoa concluiu determinada formação.

Perfeito.

O problema aparece quando alguém interpreta:

Esta pessoa concluiu determinada formação.

como:

Esta pessoa domina profundamente a tecnologia.

A diferença é gigantesca.

Para um programador COBOL iniciante, eu gosto de imaginar cinco níveis.

Nível 1 — Exposure

Você já ouviu falar das coisas.

Sabe que:

JCL não é COBOL.
Db2 não é VSAM.
CICS não é um banco de dados.
RACF não é antivírus.
JES2 não é Jesus 2.0.

O último esclarecimento evita algumas reuniões constrangedoras.


Nível 2 — Literacy

Agora você consegue explicar aproximadamente como as coisas se relacionam.

Você entende que um programa COBOL batch pode:

  • receber arquivos;

  • acessar Db2;

  • executar dentro de um JOB;

  • produzir datasets;

  • ser controlado por JCL;

  • retornar códigos;

  • gerar dumps;

  • participar de uma cadeia de processamento.

Você começa a montar o mapa mental.


Nível 3 — Competence

Agora consegue fazer trabalho real.

Você recebe um programa COBOL.

Identifica um problema.

Compila.

Executa.

Interpreta resultados.

Corrige erros.

Entende alguns abends.

Analisa JCL.

Usa ferramentas.

Sabe que mexer em produção sem compreender impacto pode resultar em pessoas pronunciando seu nome em reuniões onde você não foi convidado.


Nível 4 — Proficiency

Você começa a trabalhar independentemente.

Recebe problemas menos estruturados.

Não existe tutorial dizendo exatamente o que fazer.

Você encontra caminhos.

Começa a correlacionar sintomas.


Nível 5 — Mastery

Aqui a brincadeira muda.

Você consegue lidar com problemas que não estavam no treinamento.

Essa é uma definição extremamente importante.

Um especialista não é simplesmente quem sabe responder perguntas conhecidas.

É quem consegue raciocinar quando a pergunta é nova.


🧠 Capítulo 3 — O verdadeiro patrimônio do mainframe não está no DASD

Está dentro da cabeça das pessoas.

Chamamos isso de:

conhecimento tácito.

Conhecimento explícito é relativamente fácil de registrar:

Comando X faz Y.
Parâmetro Z controla W.
Arquivo possui LRECL 100.

Conhecimento tácito é diferente.

É quando o especialista olha para determinada situação e diz:

— Isso está estranho.

Você pergunta:

— Por quê?

Ele responde:

— Não sei ainda.

Isso parece pouco científico.

Mas geralmente significa:

Meu cérebro comparou essa situação com aproximadamente 27 anos de incidentes, padrões, falhas, mudanças, madrugadas, dumps e decisões e encontrou alguma discrepância ainda não verbalizada.

Esse tipo de percepção não aparece instantaneamente.

É acumulada.

Considere dois programadores.

Programador A terminou um curso sobre CICS.

Programador B trabalha com CICS há vinte anos.

Ambos sabem que existe:

EXEC CICS LINK

Mas o segundo talvez tenha vivenciado:

  • problemas de storage;

  • loops;

  • short-on-storage;

  • runaway tasks;

  • deadlocks;

  • transaction dumps;

  • problemas de terminal;

  • mudanças de region;

  • falhas em integração;

  • incidentes envolvendo Db2;

  • problemas de performance;

  • erros provocados por parâmetros aparentemente inocentes.

O conhecimento não é apenas:

“Como funciona CICS?”

É também:

“Como CICS costuma falhar de maneiras que parecem ser outra coisa?”

Essa segunda categoria vale ouro.



🏺 Capítulo 4 — Arqueologia orientada a produção

Em sistemas antigos existe uma disciplina raramente ensinada nas universidades.

Ela se chama:

Arqueologia de Software

Você encontra:

       IF WS-FLAG = 'Y'
           MOVE 'N' TO WS-FLAG
           PERFORM 9000-TRATAMENTO-ESPECIAL.

Você pergunta:

— Por que isso existe?

Ninguém sabe.

O Git não possui histórico porque o programa nasceu antes do Git.

Talvez antes do Linux.

Talvez antes de alguns membros da equipe.

O comentário diz:

* ALTERACAO 12/08/1996 - JORGE

Jorge desapareceu da empresa em 2003.

Ninguém sabe onde Jorge está.

Talvez Jorge esteja pescando.

Talvez Jorge esteja em Portugal.

Talvez Jorge tenha transcendido e virado uma entidade puramente energética.

Mas aquele IF continua executando três milhões de vezes por dia.

O desenvolvedor moderno então pensa:

Código morto.

Remove.

Compila.

Teste passa.

Produção recebe.

Às 03:11 ocorre algo que não acontecia desde 1997.

Parabéns.

Você acabou de descobrir por que Jorge escreveu aquilo.

Esse é um dos motivos pelos quais veteranos são tão valiosos.

Eles frequentemente carregam o contexto histórico do código.


💳 Capítulo 5 — Technical Debt ganhou um primo: Knowledge Debt

Você provavelmente já ouviu falar de Technical Debt.

É quando fazemos escolhas que criam custo futuro.

Existe outra dívida silenciosa:

Knowledge Debt

Ela acontece quando uma organização depende de conhecimento que não está sendo transferido.

Exemplo.

Maria trabalha com Db2 há 28 anos.

Ela conhece profundamente:

performance
utilities
locking
bind
packages
statistics
reorg
recovery
SQL

Todos sabem que Maria sabe.

Então ninguém se preocupa.

Maria resolve problemas.

Maria responde mensagens.

Maria entra nas bridges.

Maria salva a madrugada.

Excelente.

Até o dia em que Maria anuncia:

Vou me aposentar.

Repentinamente surge um PowerPoint:

KNOWLEDGE TRANSFER PLAN

Slide 1:

Duration: 3 weeks

Naturalmente.

Porque obviamente 28 anos podem ser compactados em três semanas através da misteriosa tecnologia conhecida como Microsoft Teams.

Isso é Knowledge Debt vencendo.


🧑‍🏫 Capítulo 6 — Apprenticeship: a tecnologia revolucionária inventada há milhares de anos

Existe uma abordagem surpreendentemente eficiente para formar pessoas.

Coloque alguém menos experiente próximo de alguém experiente.

Deixe trabalhar juntos.

Parece radical.

Antigamente chamávamos isso de:

aprendizagem.

No mundo moderno poderíamos chamar:

Human Knowledge Replication Framework 2.0

e cobrar consultoria.

O processo saudável costuma parecer assim:

OBSERVAR
   ↓
EXECUTAR COM AJUDA
   ↓
EXECUTAR SOZINHO
   ↓
RESOLVER PROBLEMAS
   ↓
TOMAR DECISÕES
   ↓
ENSINAR OUTROS

Observe a última etapa.

Ensinar é importantíssimo.

Quando você consegue ensinar alguém, precisa organizar mentalmente aquilo que sabe.

É por isso que recomendo que programadores iniciantes criem pequenos registros.

Pode ser:

  • blog;

  • notas;

  • Markdown;

  • Git;

  • wiki;

  • caderno;

  • Obsidian;

  • arquivos pessoais.

Depois de resolver um problema, escreva:

O que aconteceu?

O que pensei inicialmente?

O que estava errado?

Como diagnostiquei?

Qual era a causa?

O que faria diferente?

Depois de alguns anos isso vira seu próprio Knowledge Vault.


🧪 Capítulo 7 — O laboratório perfeito não deve funcionar

Isso mesmo.

Se você está aprendendo mainframe, laboratórios onde tudo funciona são úteis apenas até certo ponto.

O verdadeiro aprendizado começa quando alguma coisa quebra.

Um ótimo laboratório deveria dizer:

Aqui está o JOB.

Ele não funciona.

Descubra por quê.

Talvez exista:

DISP incorreto

Talvez:

LRECL incompatível

Talvez:

dataset inexistente

Talvez:

SQLCODE -805

Talvez:

S0C7

Talvez:

AEI9

Talvez seja apenas uma vírgula.

Essa última opção costuma causar mais sofrimento.

O objetivo é criar musculatura diagnóstica.


🩺 Capítulo 8 — House M.D. entra no CPD

Imagine o Dr. House analisando um incidente COBOL.

Operações diz:

— O batch falhou.

House:

— Isso é um sintoma.

Desenvolvimento:

— O programa deu S0C7.

House:

— Outro sintoma.

Gerente:

— Ontem funcionava.

House:

— Impressionante. Ontem também não é hoje.

Então começa o diagnóstico.

A pergunta errada é:

Como elimino o S0C7?

A pergunta correta é:

O que fez o programa interpretar esses bytes como número?

Pode ser:

PIC incorreta

Pode ser arquivo errado.

Pode ser layout diferente.

Pode ser REDEFINES.

Pode ser campo não inicializado.

Pode ser alteração upstream.

Pode ser dados corrompidos.

Pode ser compilação diferente.

O especialista pensa em cadeia causal.

Essa é a diferença entre aprender mensagens e aprender sistemas.


🌌 Capítulo 9 — Systems Thinking: a habilidade secreta

Mainframe ensina uma coisa muito importante:

Nada acontece sozinho.

Programa COBOL pode depender de:

JCL
 ↓
PROC
 ↓
dataset
 ↓
catalog
 ↓
SMS
 ↓
Db2
 ↓
CICS
 ↓
MQ
 ↓
RACF
 ↓
network
 ↓
WLM
 ↓
storage

Um erro aparece no COBOL.

A causa pode estar cinco camadas atrás.

Essa capacidade de pensar em relações é o que chamamos de systems thinking.

Comece a praticar isso imediatamente.

Sempre pergunte:

O que chama isso?

O que isso chama?

Quais dados entram?

Quem produz esses dados?

Quem consome a saída?

Quais configurações externas influenciam?

O que mudou recentemente?

Essas perguntas valem mais do que decorar cem mensagens de erro.


🪜 Capítulo 10 — O caminho real para quem está começando

Se eu estivesse começando COBOL hoje, montaria esta progressão.

Etapa 1 — COBOL puro

Aprenda muito bem:

DIVISION
SECTION
PARAGRAPH
PIC
MOVE
COMPUTE
IF
EVALUATE
PERFORM
OCCURS
REDEFINES
COMP
COMP-3

Entenda dados.

COBOL é profundamente orientado a dados.

Não trate PIC como decoração.


Etapa 2 — Arquivos

Aprenda:

SEQUENTIAL
INDEXED
VSAM
KSDS
ESDS

Entenda:

RECFM
LRECL
BLKSIZE

Arquivo errado é fonte inesgotável de aventuras.


Etapa 3 — JCL

Não diga:

“Sou desenvolvedor, JCL não é comigo.”

Isso é aproximadamente equivalente a ser piloto dizendo:

“Combustível é coisa da equipe de solo.”

Aprenda:

JOB
EXEC
DD
DISP
SPACE
DSN
SYSOUT
COND
IF
PROC
GDG

Etapa 4 — Db2

Entenda:

SELECT
INSERT
UPDATE
DELETE
COMMIT
ROLLBACK
CURSOR
HOST VARIABLES
NULL INDICATOR
SQLCODE

Depois vá mais fundo.


Etapa 5 — CICS

Aprenda pelo menos os conceitos.

COMMAREA
CHANNEL
CONTAINER
LINK
XCTL
RETURN
READ
WRITE
REWRITE
START

E sobretudo entenda transação.


Etapa 6 — Debugging

Comece a amar mensagens de erro.

Não porque seja saudável.

Mas porque é inevitável.

Leia:

compile listing
runtime messages
joblog
sysout
dump

O dump é o romance policial do mainframe.

O assassino está lá.

Você só precisa descobrir quem é.


🧯 Capítulo 11 — MAXCC=0 não significa que o mundo está salvo

Esse merece moldura.

Você executou:

MAXCC=0

Excelente.

Isso significa aproximadamente:

O utilitário não detectou determinados tipos de problema segundo seus critérios.

Não significa:

Sua solução está correta.

Exemplo.

Você pode executar um SORT perfeitamente.

MAXCC=0

Mas ordenar pelo campo errado.

O computador fez exatamente aquilo que você pediu.

A tragédia é que você pediu uma coisa absurda.

Computadores possuem esse hábito desagradável.


🪐 Easter Egg 42

Em O Guia do Mochileiro das Galáxias, a resposta para a grande pergunta sobre a vida, o universo e tudo mais é:

42.

No mainframe também existe uma grande pergunta.

Quantos anos são necessários para dominar completamente IBM Z?

Resposta:

42.

A diferença é que, no ano 42, provavelmente alguém instalará uma atualização e você terá que estudar novamente.


📊 Capítulo 12 — O Grande Deus Dashboard

Organizações adoram métricas.

Não há nada errado nisso.

O problema é medir aquilo que é fácil em vez daquilo que importa.

É fácil medir:

NUMBER_OF_BADGES
NUMBER_OF_STUDENTS
COURSES_COMPLETED
LABS_FINISHED

Muito mais difícil medir:

CAN_HANDLE_PRODUCTION_INCIDENT
CAN_EXPLAIN_ARCHITECTURE
CAN_RECOVER_SERVICE
CAN_MENTOR_JUNIOR
CAN_REPLACE_RETIRING_SME

Imagine dois programas.

Programa A:

1.000 certificados

Programa B:

20 pessoas
18 meses
shadowing
incidentes
laboratórios
mentoria
responsabilidade progressiva

O primeiro produz slide bonito.

O segundo talvez salve seu banco às três da manhã.


👴 Capítulo 13 — Não transforme veteranos em sacerdotes secretos

Agora uma advertência importante.

Também não devemos romantizar demais o passado.

Existia — e ainda existe — o profissional conhecido como:

“Só o Carlos sabe.”

Pergunta:

— Como funciona esse processo?

Resposta:

— Pergunta pro Carlos.

— Onde está documentado?

— Carlos sabe.

— O que acontece se Carlos sair?

Silêncio.

Carlos não é arquitetura.

Carlos é um risco operacional humano.

O conhecimento precisa circular.

Um bom especialista não apenas resolve.

Ele deixa rastros.

Documenta.

Ensina.

Explica contexto.

Forma sucessores.


🗺️ Capítulo 14 — Como aprender com um veterano sem sequestrá-lo

Quando encontrar alguém experiente, não faça apenas perguntas genéricas.

Pergunte histórias.

Em vez de:

Como funciona Db2?

Pergunte:

Qual foi o pior incidente Db2 que você já viu?

Depois:

Como vocês perceberam?

Qual foi a hipótese inicial?

O que enganou vocês?

Qual era a verdadeira causa?

O que mudou depois?

Isso extrai conhecimento tácito.

Profissionais veteranos frequentemente possuem centenas dessas histórias.

Cada história contém:

contexto
hipótese
erro
diagnóstico
causa
solução
prevenção

Isso vale ouro.


⚠️ Capítulo 15 — Não tenha pressa de parecer sênior

Esse talvez seja o conselho mais importante para um iniciante.

Não tenha vergonha de dizer:

Não sei.

Em sistemas complexos, fingir conhecimento é muito mais perigoso do que admitir desconhecimento.

O bom iniciante pergunta.

O iniciante perigoso inventa.

Você encontrará pessoas exibindo uma coleção impressionante de badges.

Ótimo.

Você também encontrará pessoas com trinta anos de experiência e nenhum badge.

Não trate nenhuma das duas coisas isoladamente como prova definitiva.

Observe capacidade.

Observe raciocínio.

Observe comportamento diante de problemas.


🛠️ Capítulo 16 — Seu plano pessoal de apprenticeship

Mesmo que sua empresa não tenha um programa formal, crie um informal.

Faça isso:

1. Escolha um domínio

Por exemplo:

COBOL batch

2. Encontre alguém mais experiente

Não precisa ser o maior guru do planeta.

Só precisa estar alguns quilômetros à sua frente.


3. Observe problemas reais

Sempre respeitando segurança e acesso.


4. Reproduza em laboratório

Transforme incidentes em exercícios.


5. Documente

Crie notas.


6. Explique para outra pessoa

Se você não consegue explicar, talvez ainda não tenha entendido.


7. Volte seis meses depois

Você ficará horrorizado com suas primeiras anotações.

Isso é bom.

Significa evolução.


🧬 Capítulo 17 — Expertise não é uma coleção de comandos

Esse é o ponto central de toda esta conversa.

Expertise não é:

quantidade de sintaxe memorizada

É uma mistura de:

conhecimento
+
experiência
+
contexto
+
julgamento
+
memória de falhas
+
capacidade de investigação
+
capacidade de ensinar

É por isso que ela demora.

E talvez seja bom que demore.

Porque sistemas que movimentam bancos, governos, seguradoras, companhias aéreas, indústrias e redes gigantescas não deveriam depender de uma cultura onde qualquer pessoa é declarada especialista depois de algumas semanas.


🚨 Capítulo 18 — Production Disaster Nobody Predicted

Todo treinamento deveria possuir um módulo final chamado:

“Algo aconteceu e ninguém sabe o quê.”

Descrição:

03:07

Produção degradada.

Nenhuma mudança aparente.

Aplicação parcialmente funcionando.

Usuários reclamando.

Batch atrasado.

CICS estranho.

Db2 aparentemente saudável.

Uma alteração ocorreu 14 horas atrás.

Ninguém lembra qual.

Objetivo:

sobreviva.

Sem múltipla escolha.

Sem botão “Hint”.

Sem resposta imediatamente disponível.

Esse tipo de exercício aproxima treinamento de realidade.


🧙 Capítulo 19 — O verdadeiro mestre Jedi do mainframe

Você reconhece um grande profissional porque ele não precisa fingir onisciência.

Ele diz:

Não sei ainda.

Depois começa a investigar.

Ele sabe onde procurar.

Sabe formular hipótese.

Sabe descartar hipótese.

Sabe evitar mudanças destrutivas.

Sabe pedir ajuda.

Sabe interpretar evidência.

Sabe documentar descoberta.

E depois ensina alguém.

Essa última parte transforma especialista em legado.


🛰️ Capítulo 20 — Então o que fazemos com os programas de 15 semanas?

Usamos.

Melhoramos.

Expandimos.

Mas chamamos as coisas pelo nome correto.

Um programa curto pode ser:

Foundation Program

Excelente.

Depois crie:

FOUNDATION
    ↓
LAB
    ↓
APPRENTICESHIP
    ↓
PRODUCTION SHADOWING
    ↓
RESPONSIBILITY
    ↓
SPECIALIZATION
    ↓
MENTORSHIP

Agora temos um pipeline.

Não um evento.

A crise de skills não será resolvida através de um único curso.

Será resolvida construindo gerações sobre gerações de profissionais.

Exatamente como o próprio mainframe foi construído.


☕ Epílogo — NÃO ENTRE EM PÂNICO

Se você é iniciante e chegou até aqui preocupado porque aparentemente precisa de trinta anos para aprender IBM Z, relaxe.

Você não precisa aprender tudo.

Ninguém sabe tudo.

IBM Z é grande demais.

Escolha uma trilha.

Aprenda profundamente.

Construa conexões com outras áreas.

Pergunte.

Quebre coisas em laboratório.

Leia mensagens.

Leia listings.

Leia dumps.

Leia documentação.

Converse com veteranos.

Ensine iniciantes.

E principalmente:

não confunda velocidade de formação com profundidade de conhecimento.

Badge é ótimo.

Curso é ótimo.

Certificação é ótima.

Laboratório é ótimo.

Mas todos são partes de algo maior.

A verdadeira formação acontece quando conhecimento encontra experiência.

Quando teoria encontra produção.

Quando documentação encontra memória.

Quando o iniciante pergunta:

Por que fazemos isso assim?

E, em vez de receber:

Porque sempre foi assim.

recebe uma história.

Talvez uma história envolvendo um abend.

Talvez um IPL.

Talvez um banco.

Talvez alguém chamado Jorge.

Talvez 1996.

Talvez um PROC.

Talvez uma madrugada particularmente infeliz.

Essas histórias são o DNA invisível do mainframe.

Preservá-las é tão importante quanto preservar código.

Porque máquinas podem executar programas durante cinquenta anos.

Mas somente pessoas conseguem explicar por que aquele programa ainda deveria existir.

E se algum dashboard corporativo disser que resolvemos tudo depois de quinze semanas, faça aquilo que todo bom programador COBOL aprende cedo ou tarde.

Leia o detalhe.

Procure a mensagem.

Questione a condição.

E desconfie profundamente de qualquer universo onde:

SKILLS-CRISIS = 'SOLVED'

foi definido simplesmente porque:

BADGE-COUNT > 1000

Afinal, como diria um guia extremamente confiável de viagens intergalácticas:

NÃO ENTRE EM PÂNICO.

Mas mantenha o dump por perto.

https://eljefemidnightlunch.blogspot.com/2026/08/o-caso-tsb-bank-como-uma-migracao-de.html

https://eljefemidnightlunch.blogspot.com/2026/08/quanto-custa-um-programador-salario.htm



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