| Bellacosa Mainframe e a evolução do cobol mainframe para os proximos anos |
☕ Um Café no Bellacosa Mainframe
🏛️ ARQUIMEDES E A ALAVANCA QUE MOVEU O MAINFRAME
COBOL, CICS, Db2, VSAM, APIs, MQ, Kafka, Git, CI/CD, cloud, observabilidade, segurança, IA — e o dia em que Arquimedes descobriu que não precisava levantar o mainframe: bastava encontrar o ponto de apoio correto.
🎬 PRÓLOGO — DÊ-ME UMA ALAVANCA E EU MOVEREI O MAINFRAME
Imagine a cena.
Você acaba de entrar em uma grande empresa como programador COBOL.
Na sua frente existe um terminal.
Na tela:
------------------------ ISPF PRIMARY OPTION MENU -----------------------
0 Settings
1 View
2 Edit
3 Utilities
4 Foreground
5 Batch
6 Command
Você aprendeu COBOL.
Aprendeu um pouco de JCL.
Descobriu que PIC X(20) não é uma fotografia de vinte pixels.
Já ouviu falar em CICS, Db2 e VSAM.
Então chega alguém da arquitetura e anuncia:
— Precisamos modernizar o mainframe.
Seu coração dispara.
Você pensa:
“Pronto. Passei seis meses estudando COBOL e agora vão jogar tudo fora.”
Nesse instante, uma figura de barba entra na sala carregando pergaminhos, compassos e uma estranha alavanca.
É Arquimedes de Siracusa.
Ele observa o IBM Z, olha para você e pergunta:
— Jovem programador, quem disse que modernizar significa destruir?
Você aponta para uma apresentação corporativa onde aparecem:
CLOUD
KUBERNETES
MICROSERVICES
APIs
KAFKA
DEVOPS
AI
Arquimedes sorri.
— Dê-me um ponto de apoio suficientemente bom e moverei o mundo.
Ele olha novamente para o mainframe.
— Para este aqui talvez precisemos também de MQ.
E começa nossa aventura.
🏛️ CAPÍTULO 1 — O MAINFRAME NÃO É UMA ILHA
O primeiro conceito que precisamos compreender é simples:
Mainframe Integration & Modernization não significa simplesmente substituir COBOL.
Uma aplicação empresarial tradicional pode possuir:
COBOL
│
├── CICS
├── IMS
├── Db2
├── VSAM
├── MQ
└── Batch/JCL
Durante décadas, grande parte do processamento corporativo podia acontecer nesse ecossistema.
Mas a empresa de 2026 também possui:
Mobile
Web
APIs
Cloud
SaaS
Containers
OpenShift
Kafka
Analytics
Data Lake
AI
CRM
Fraud Detection
Observability
A pergunta interessante, portanto, não é:
“Como tiramos o COBOL daqui?”
A pergunta é:
“Como fazemos todos esses mundos trabalharem juntos?”
Arquimedes provavelmente reconheceria imediatamente o problema.
Você não precisa carregar uma pedra gigantesca nas costas se puder construir uma máquina capaz de movimentá-la.
Modernização funciona de maneira semelhante.
⚖️ CAPÍTULO 2 — O PONTO DE APOIO
Imagine uma aplicação COBOL executando perfeitamente há vinte anos.
Ela calcula alguma regra extremamente importante.
Talvez limite de crédito.
Talvez impostos.
Talvez liquidação financeira.
Talvez autorização de pagamento.
Por que reescrever imediatamente essa lógica apenas porque um aplicativo mobile precisa utilizá-la?
Considere:
3270
│
▼
CICS
│
▼
COBOL
│
▼
Db2
Essa aplicação pode funcionar muito bem.
O problema é que agora alguém deseja acessar aquela função através de:
Smartphone
Uma possibilidade seria:
Smartphone
│
▼
REST API
│
▼
z/OS Connect
│
▼
CICS
│
▼
COBOL
│
▼
Db2
Observe a genialidade.
O programa COBOL pode continuar executando a regra empresarial.
O que mudou foi a maneira de chegar até ele.
Arquimedes apontaria para o desenho:
— Eis sua alavanca.
🔌 CAPÍTULO 3 — API ENABLEMENT
Vamos imaginar um programa que trabalha com algo parecido com:
01 CUSTOMER-REQUEST.
05 CUSTOMER-ID PIC 9(10).
01 CUSTOMER-RESPONSE.
05 CUSTOMER-NAME PIC X(40).
05 CUSTOMER-LIMIT PIC 9(9)V99.
Para um programador COBOL, isso é perfeitamente compreensível.
Mas um desenvolvedor web provavelmente espera algo como:
{
"customerId": 123456
}
e deseja receber:
{
"customerName": "JOAO SILVA",
"customerLimit": 15000.00
}
Existe uma tradução entre mundos.
JSON
↓
estrutura de dados
↓
COBOL
↓
regra de negócio
↓
estrutura de resposta
↓
JSON
Isso permite que uma aplicação criada décadas atrás participe de arquiteturas contemporâneas.
Mas cuidado.
Arquimedes levanta um dedo.
— Uma alavanca mal posicionada também derruba paredes.
Transformar cada programa COBOL em uma API não significa automaticamente criar uma boa arquitetura.
🚪 CAPÍTULO 4 — NEM TODO PROGRAMA PRECISA VIRAR API
Imagine 700 programas COBOL.
Alguém tem a brilhante ideia:
“Vamos criar 700 APIs!”
Temos agora:
API001
API002
API003
...
API700
Parabéns.
Transformamos um problema organizado em 700 problemas distribuídos.
APIs precisam de arquitetura.
Precisamos pensar em:
contratos;
versionamento;
granularidade;
autenticação;
autorização;
timeout;
rate limiting;
tratamento de erros;
idempotência;
disponibilidade;
documentação;
observabilidade;
governança.
Uma API deveria representar uma capacidade útil ao consumidor, e não simplesmente revelar cada detalhe interno do legado.
Essa diferença parece pequena.
Arquiteturalmente é gigantesca.
📬 CAPÍTULO 5 — ARQUIMEDES DESCOBRE O MQ
Arquimedes encontra uma fila.
Não uma fila de cidadãos esperando pão em Siracusa.
Uma queue.
Ele pergunta:
— Para que serve?
Explicamos:
PRODUTOR
│
PUT
▼
┌─────────────┐
│ QUEUE │
└─────────────┘
│
GET
▼
CONSUMIDOR
O produtor coloca uma mensagem.
O consumidor pode processá-la.
Isso possibilita desacoplamento.
Compare com uma comunicação síncrona:
A ─────► B
A ◄───── B
A chama B e fica esperando.
Agora:
A ─────► QUEUE ─────► B
A e B não precisam necessariamente executar no mesmo instante ou compartilhar exatamente o mesmo ciclo de disponibilidade.
Para ambientes empresariais, isso pode ser extremamente valioso.
⏳ CAPÍTULO 6 — SÍNCRONO OU ASSÍNCRONO?
Essa decisão precisa ser compreendida pelo iniciante.
Imagine:
“Quero consultar meu saldo.”
Você provavelmente deseja resposta imediatamente.
GET /saldo
│
▼
processamento
│
▼
R$ 1.234,56
É um excelente candidato a comunicação síncrona.
Agora imagine:
“Compra aprovada.”
Vários sistemas podem querer saber disso:
COMPRA APROVADA
│
├── Fraude
├── Analytics
├── CRM
├── Pontos
├── Notificação
└── Data Lake
Obrigar o programa responsável pela compra a chamar todos esses sistemas diretamente pode criar um emaranhado terrível.
Melhor considerar uma mensagem ou evento.
🌊 CAPÍTULO 7 — EVENT-DRIVEN ARCHITECTURE
Aqui Arquimedes fica particularmente interessado.
Suponha:
CICS
│
▼
COBOL
│
▼
PAYMENT APPROVED
Em vez de o programa conhecer todos os interessados:
COBOL
├── chama FRAUDE
├── chama CRM
├── chama ANALYTICS
├── chama LOYALTY
└── chama NOTIFICATION
podemos publicar um evento:
PAYMENT_APPROVED
│
┌──────────┼──────────┐
│ │ │
▼ ▼ ▼
Fraud Loyalty Analytics
│
▼
Notification
O produtor diz:
“Isto aconteceu.”
Os consumidores decidem o que fazer.
Esse conceito é fundamental para compreender arquiteturas orientadas a eventos e tecnologias de streaming.
É também onde Kafka costuma aparecer nas conversas modernas.
☁️ CAPÍTULO 8 — CLOUD NÃO É UM BURACO NEGRO QUE ENGOLIRÁ O MAINFRAME
Outro mito precisa desaparecer.
MODERNO = CLOUD
ANTIGO = MAINFRAME
Não.
Arquitetura empresarial não deveria funcionar como campeonato de futebol entre plataformas.
Podemos ter:
ENTERPRISE
│
┌───────────┼───────────┐
│ │ │
Cloud IBM Z SaaS
│ │ │
Containers CICS CRM
│ │
APIs MQ
│ │
Kafka Db2
└───────────┼───────────┘
│
DATA
Isso é arquitetura híbrida.
Cada workload pode permanecer onde faz mais sentido considerando:
performance, segurança, custo, disponibilidade, latência, governança, proximidade dos dados e requisitos empresariais.
Arquimedes resume:
Não mova a pedra apenas porque você possui uma alavanca.
🧩 CAPÍTULO 9 — MICROSERVICES NÃO SÃO PÓ MÁGICO
Outra tentação moderna:
“Vamos transformar tudo em microservices.”
Calma.
Imagine um sistema COBOL gigantesco:
CUSTOMER SYSTEM
Ele contém:
Customer
Address
Credit
Payment
History
Fraud
Notification
Talvez faça sentido extrair algumas capacidades gradualmente.
Por exemplo:
MAINFRAME
┌────────────────┐
│ Customer │
│ Credit │
│ Payment │
└───────┬────────┘
│
APIs
│
┌─────┴──────┐
│ │
Notification Analytics
Service Service
Não precisamos transformar todo COBOL em Java durante um fim de semana.
Aliás, se alguém propuser isso numa sexta-feira às 17h, Arquimedes recomenda correr.
🪴 CAPÍTULO 10 — STRANGLER PATTERN
Uma abordagem extremamente interessante consiste em substituir capacidades gradualmente.
Começamos:
LEGADO
████████████████████
Depois:
LEGADO
████████████████
NOVO
████
Depois:
LEGADO
██████████
NOVO
██████████
E talvez finalmente:
LEGADO
██
NOVO
██████████████████
Ou talvez não.
Talvez aquela pequena parte antiga continue sendo excelente.
Essa é uma lição importante:
Modernização não precisa terminar com zero COBOL.
🧬 CAPÍTULO 11 — AS MUITAS FORMAS DE MODERNIZAR
Arquimedes abre seu pergaminho.
Existem várias estratégias.
RETAIN
Mantemos a aplicação.
REHOST
Mudamos onde ela executa com poucas mudanças funcionais.
REPLATFORM
Alteramos a plataforma ou componentes sem reconstruir tudo.
REFACTOR
Reestruturamos partes da aplicação.
REARCHITECT
Mudamos profundamente sua arquitetura.
REWRITE
Reescrevemos.
REPLACE
Substituímos por outro sistema ou produto.
RETIRE
Descobrimos que ninguém precisava mais daquilo.
Esse último caso produz uma das grandes ironias da arqueologia de software.
Às vezes uma empresa passa meses estudando como modernizar um programa que poderia simplesmente ser aposentado.
🔎 CAPÍTULO 12 — ARQUEOLOGIA DE SOFTWARE
Antes de mexer precisamos saber o que existe.
Imagine:
PROG001
│
├── CALL PROG002
│ │
│ └── Db2 TABLE01
│
├── CALL PROG003
│ │
│ └── VSAM01
│
└── MQ QUEUE01
Agora imagine isso multiplicado por milhares.
Temos:
COBOL
JCL
Copybooks
PROCs
Db2
VSAM
CICS
IMS
MQ
Assembler
REXX
Precisamos responder:
Quem chama este programa?
Qual programa altera esta tabela?
Quem utiliza este copybook?
Qual job executa isto?
Qual transação CICS inicia essa cadeia?
Se eu mudar este campo, quem quebra?
Esse trabalho é chamado frequentemente de Application Discovery e Dependency Analysis.
💥 CAPÍTULO 13 — BLAST RADIUS
O termo é maravilhoso.
Qual será o raio da explosão se alterarmos alguma coisa?
Imagine modificar:
COPY CUSTOMER
Talvez seja usado por:
CUSTOMER COPYBOOK
│
┌────────┼────────┐
│ │ │
PGMA PGMB PGMC
│ │
CICS BATCH
Alterar um campo aparentemente inocente pode afetar dezenas ou centenas de componentes.
O programador iniciante aprende rapidamente uma regra:
Em sistemas empresariais, compreender dependências antes de alterar código é tão importante quanto saber programar.
💻 CAPÍTULO 14 — COBOL TAMBÉM PODE TER UMA OFICINA MODERNA
Modernização também acontece no processo de desenvolvimento.
O modelo tradicional poderia ser:
ISPF
↓
EDIT
↓
COMPILE
↓
LINK
↓
TEST
↓
PROMOTE
Mas podemos incorporar:
IDE
│
▼
Git
│
▼
Pull Request
│
▼
CI Pipeline
│
├── Build
├── Static Analysis
├── Unit Test
├── Security
├── Integration Test
└── Deployment
Observe novamente:
COBOL continua COBOL.
Modernizamos a oficina.
🌳 CAPÍTULO 15 — GIT ENCONTRA O MAINFRAME
Para o novo profissional, Git é particularmente importante.
Conceitos como:
repository
commit
branch
merge
pull request
code review
pipeline
aproximam desenvolvimento mainframe das práticas existentes no restante da engenharia de software.
O grande ganho não é poder dizer:
“Temos Git!”
É conseguir construir rastreabilidade.
Requirement
↓
Change
↓
Commit
↓
Build
↓
Test
↓
Approval
↓
Deploy
Isso é muito mais interessante.
📊 CAPÍTULO 16 — O DETETIVE DA LATÊNCIA
Agora nossa aplicação ficou moderna:
Mobile
↓
API Gateway
↓
Cloud
↓
API
↓
MQ
↓
CICS
↓
COBOL
↓
Db2
Então o usuário reclama:
“Está lento.”
Fantástico.
Onde?
Precisamos descobrir.
Talvez:
Mobile 100 ms
Network 250 ms
Gateway 30 ms
Cloud Service 100 ms
Integration 50 ms
CICS 60 ms
COBOL 10 ms
Db2 6300 ms
Sem observabilidade, todos começam a apontar para os outros.
Cloud culpa mainframe.
Mainframe culpa rede.
Rede culpa aplicação.
Aplicação culpa banco.
Banco culpa Mercúrio retrógrado.
É por isso que arquiteturas distribuídas precisam de:
METRICS
LOGS
TRACES
EVENTS
CORRELATION IDs
SLIs
SLOs
ALERTS
DASHBOARDS
Modernização sem observabilidade cria sistemas que conversam muito e explicam pouco.
🔐 CAPÍTULO 17 — QUEM É VOCÊ?
Antes:
USER
↓
3270
↓
RACF
↓
CICS
Agora:
Mobile
↓
OAuth / OIDC
↓
API Gateway
↓
Service
↓
API
↓
Mainframe
↓
RACF
A pergunta fica muito mais interessante:
Quem realmente está executando a transação?
É o usuário?
É uma service account?
É o API Gateway?
É uma aplicação?
O sistema precisa lidar com identidade, autorização, credenciais, tokens, auditoria e propagação de contexto.
Isso é essencial.
Não adianta modernizar a porta e esquecer a fechadura.
🤖 CAPÍTULO 18 — ARQUIMEDES CONHECE A INTELIGÊNCIA ARTIFICIAL
Finalmente mostramos IA generativa para Arquimedes.
Ele observa um programa COBOL com 4.000 linhas.
A IA consegue auxiliar na geração de:
Resumo
│
├── entradas
├── saídas
├── tabelas
├── arquivos
├── chamadas
├── regras
└── possíveis dependências
Excelente.
Também pode ajudar com:
documentação;
explicação de COBOL;
compreensão de JCL;
criação de testes;
geração de exemplos;
explicação de SQL;
identificação preliminar de dependências;
apoio à modernização.
Mas Arquimedes percebe rapidamente a limitação.
IA pode dizer:
“Esta condição aparentemente é redundante.”
E você encontra:
* VBR 1998
* NAO REMOVER.
* PROCESSAMENTO ESPECIAL NO ULTIMO DIA UTIL.
A IA não estava na reunião de 1998.
Nem você.
Esse comentário talvez seja a única lápide arqueológica de uma regra empresarial esquecida.
Portanto:
IA é ferramenta de investigação, não autoridade histórica absoluta sobre o legado.
💣 CAPÍTULO 19 — O MONSTRO DISTRIBUÍDO
Agora chegamos ao maior easter egg arquitetural.
Alguém modernizou tudo:
☁ CLOUD
Microservice A
Microservice B
Microservice C
Microservice D
Microservice E
│
▼
Kubernetes
│
▼
APIs
│
▼
COBOL-X
Todos os microservices dependem do mesmo programa.
Se COBOL-X parar:
💥💥💥
Tudo para.
Criamos um:
Distributed Monolith.
Só que agora ele possui:
containers
network latency
service discovery
APIs
JSON
Kubernetes
cloud
e continua dependendo da mesma função central.
Arquimedes olha para nós.
— Vocês inventaram cinco alavancas para levantar a mesma pedra.
Exatamente.
🧭 CAPÍTULO 20 — PASSO A PASSO PARA MODERNIZAR COM INTELIGÊNCIA
Se você é iniciante, memorize esta sequência.
PASSO 1 — Descubra
Mapeie:
Aplicações
Programas
Dados
JCL
Transações
Interfaces
Dependências
PASSO 2 — Entenda o negócio
Descubra por que aquilo existe.
Código sem contexto empresarial é apenas arqueologia incompleta.
PASSO 3 — Classifique
Para cada componente pergunte:
Retain?
Rehost?
Replatform?
Refactor?
Rewrite?
Replace?
Retire?
PASSO 4 — Identifique interfaces
Procure oportunidades para:
API
MQ
Events
Files
Streaming
PASSO 5 — Desacople cuidadosamente
Não transforme dependências locais em centenas de dependências de rede sem necessidade.
PASSO 6 — Automatize
Introduza:
Git
CI/CD
Tests
Quality Gates
Security
PASSO 7 — Observe
Instrumente:
Logs
Metrics
Traces
Correlation IDs
PASSO 8 — Proteja
Pense em:
Identity
Authentication
Authorization
Encryption
Audit
Secrets
PASSO 9 — Modernize gradualmente
Evite Big Bang quando uma migração incremental puder reduzir risco.
PASSO 10 — Meça
Pergunte se realmente melhoramos:
Time-to-market?
Disponibilidade?
MTTR?
Performance?
Custo?
Segurança?
Experiência do desenvolvedor?
Risco operacional?
Se nenhuma métrica melhorou, talvez tenhamos apenas comprado tecnologia nova.
🥚 EASTER EGG — 03:17
Às 03:17 da madrugada, o telefone toca.
Produção está com problema.
Um arquiteto pergunta:
— Quem mexeu no mainframe?
Ninguém.
O COBOL está executando normalmente.
CICS está saudável.
Db2 está saudável.
Depois de quarenta minutos descobrem:
API Gateway
│
▼
timeout = 2 segundos
Uma nova configuração havia sido implantada naquela noite.
O mainframe levava:
2,08 segundos
para determinada consulta de fechamento.
Durante quinze anos isso nunca foi problema.
A modernização introduziu um timeout de dois segundos.
Moral do easter egg:
Quando modernizamos uma arquitetura, herdamos os problemas antigos e também ganhamos novas categorias de problemas.
Por isso observabilidade e conhecimento ponta a ponta são fundamentais.
🧠 CURIOSIDADE — O VALOR NÃO ESTÁ APENAS NO CÓDIGO
Um sistema COBOL antigo pode representar décadas de decisões empresariais.
Imagine:
IF CUSTOMER-TYPE = '07'
AND COUNTRY = 'BR'
AND TRANSACTION-CODE = '83'
AND AMOUNT > ZERO
Para um desenvolvedor recém-chegado isso parece apenas uma condição.
Mas talvez ela represente:
Lei
Regulação
Contrato
Fraude ocorrida em 2003
Regra tributária
Exceção operacional
Decisão judicial
Comportamento de cliente
É por isso que substituir código não significa automaticamente substituir conhecimento.
🏛️ EPÍLOGO — A ALAVANCA DE ARQUIMEDES
Arquimedes finalmente volta para Siracusa.
Antes de partir, escreve no quadro:
MAINFRAME
│
┌─────────┼─────────┐
│ │ │
API MQ EVENTS
│ │ │
└─────────┼─────────┘
│
HYBRID CLOUD
│
┌───────────┼───────────┐
│ │ │
Containers Analytics AI
│
DevOps
Ele olha para o jovem programador COBOL.
— Agora compreendeu?
O jovem responde:
— Acho que sim. Modernização não significa substituir COBOL.
Arquimedes sorri.
— Continue.
— Significa descobrir onde está o valor, entender as dependências e construir maneiras modernas, seguras e observáveis de utilizar esse patrimônio.
Arquimedes pega sua alavanca.
— Muito melhor.
E antes de desaparecer pela porta, deixa sua última equação:
MODERNIZAÇÃO
=
VALOR EXISTENTE
+
INTEGRAÇÃO
+
AUTOMAÇÃO
+
OBSERVABILIDADE
+
SEGURANÇA
+
EVOLUÇÃO GRADUAL
Talvez essa seja a maior lição de Mainframe Integration & Modernization.
Não precisamos demolir a catedral para instalar eletricidade.
Não precisamos destruir a biblioteca porque inventamos a Internet.
E não precisamos reescrever quarenta anos de regras empresariais simplesmente porque alguém descobriu Kubernetes na semana passada.
O profissional mainframe moderno precisa conhecer COBOL, CICS, IMS, Db2, VSAM e JCL.
Mas seu horizonte não termina ali.
Ele precisa olhar também para:
REST
JSON
OpenAPI
MQ
Events
Kafka
Git
CI/CD
Containers
Cloud
Observability
Security
AI
Porque o verdadeiro profissional de modernização não pergunta:
“Como eu tiro essa aplicação do mainframe?”
Ele pergunta:
“Qual é o melhor lugar para cada capacidade e como faço todas elas trabalharem juntas?”
Arquimedes dizia que precisava apenas de um ponto de apoio para mover o mundo.
No Mainframe Integration & Modernization, o segredo é semelhante.
O IBM Z pode continuar sendo a pedra gigantesca, sólida e confiável no centro da empresa.
APIs podem ser as alavancas.
MQ e eventos podem ser as engrenagens.
Git e CI/CD podem modernizar a oficina.
Observabilidade pode fornecer os instrumentos de medição.
Segurança pode controlar quem toca na máquina.
IA pode ajudar a interpretar os antigos pergaminhos COBOL.
E o programador que começou olhando assustado para uma tela verde finalmente percebe algo importante:
ele não está estudando uma tecnologia do passado.
Está aprendendo a construir pontes entre décadas diferentes da computação.
E talvez seja exatamente aí que esteja o verdadeiro significado de modernizar o mainframe.
☕ Bellacosa Mainframe — porque às vezes, para chegar ao futuro, não precisamos destruir o passado. Precisamos apenas encontrar a alavanca certa.
Sem comentários:
Enviar um comentário