☕ 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 cloud. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta cloud. Mostrar todas as mensagens

sábado, 12 de setembro de 2026

👄 COBOL Horror Picture Show — Frank-N-Furter e a Estranha Arte de Modernizar sem Matar a Criatura

 

Bellacosa Mainframe e a modernização do cobol

☕ Um Café no Bellacosa Mainframe

👄 COBOL Horror Picture Show — Frank-N-Furter e a Estranha Arte de Modernizar sem Matar a Criatura

“Don’t dream it. Be it.” — e, se estiver em produção há quarenta anos, talvez seja melhor descobrir primeiro todas as dependências antes de tentar transformá-lo.

Há alguma coisa deliciosamente apropriada em colocar Frank-N-Furter, de The Rocky Horror Picture Show, diante de uma arquitetura de modernização COBOL.

Pense na cena.

No centro do laboratório existe uma aplicação COBOL.

Ela é antiga.

Muito antiga.

Há décadas recebe transações, abre arquivos, atualiza bancos de dados, processa lotes durante a madrugada e alimenta sistemas que provavelmente nem existiam quando sua primeira versão foi compilada.

Em volta dela aparecem engenheiros carregando Git, Jenkins, Terraform, Ansible, AWS EC2, RDS, Secrets Manager e CloudWatch.

Luzes piscam.

Pipelines começam a executar.

Playbooks descem do Git.

EC2s surgem.

O banco ganha vida.

E alguém grita:

“IT'S ALIVE!”

Calma.

Frank-N-Furter ficaria encantado.

Eu ficaria procurando o JCL.

Porque existe uma diferença monumental entre fazer um programa COBOL executar em outro lugar e modernizar o sistema empresarial do qual aquele programa faz parte.

E é justamente essa diferença que vamos explorar.

Bem-vindo ao laboratório.



🎭 1. Antes de tudo: conheça o Dr. Frank-N-Furter

The Rocky Horror Picture Show nasceu como adaptação cinematográfica do musical The Rocky Horror Show, criado por Richard O'Brien, e chegou aos cinemas em 1975.

No centro daquela insanidade musical está o Dr. Frank-N-Furter, interpretado por Tim Curry.

Cientista.

Showman.

Manipulador.

Extravagante.

E, sobretudo, criador.

Frank não quer simplesmente estudar aquilo que existe.

Ele quer construir sua própria criatura.

Rocky nasce dentro do laboratório como materialização dessa ambição.

E é exatamente por isso que Frank é nosso tutor perfeito para esta conversa.

Modernização de sistemas também pode sofrer da síndrome de Frank-N-Furter:

ficamos tão fascinados com nossa capacidade de construir alguma coisa nova que esquecemos de perguntar se entendemos completamente aquilo que estamos substituindo.



⚡ 2. Há uma criatura COBOL sobre a mesa

Nossa arquitetura começa com algo aparentemente simples:

COBOL
   +
AWS EC2
   +
AWS RDS
   +
Ansible
   +
Terraform
   +
CI/CD

A proposta é elegante.

Temos ambientes:

DEV
 ↓
SIT
 ↓
UAT
 ↓
PRE-PROD
 ↓
PROD

Terraform provisiona infraestrutura.

Ansible configura máquinas e instala o ambiente necessário.

O pipeline controla o processo.

RDS fornece banco de dados gerenciado.

Git preserva código e configuração.

CloudWatch observa o ambiente.

Excelente.

Mas Frank-N-Furter aproxima-se da mesa, levanta o lençol e pergunta:

“Isso é realmente tudo que existe dentro da criatura?”

Não.

Quase nunca.



🧟 3. COBOL não é o monstro

Esta talvez seja a primeira grande inversão que precisamos fazer.

Quando alguém anuncia:

“Temos uma aplicação COBOL de quarenta anos.”

muita gente imediatamente imagina que encontrou o problema.

Não encontrou.

Encontrou uma linguagem.

O problema real pode estar em tudo aquilo que cresceu ao redor dela:

                COBOL
                  │
       ┌──────────┼──────────┐
       │          │          │
      CICS       IMS        Db2
       │          │          │
      VSAM       MQ        Stored
       │                   Procedures
       │
      JCL
       │
   Scheduler
       │
 GDG / datasets

Depois aparecem:

SORT
IDCAMS
REXX
PROCs
copybooks
utilities
FTP/SFTP
APIs
arquivos externos
interfaces
sistemas parceiros

Então alguém encontra um programa:

CALL 'XPTO123'

Ótimo.

Onde está XPTO123?

Ninguém sabe.

Até que aquele senhor sentado no fundo da sala fala:

“Ah... isso chama uma rotina que o Pereira escreveu em 1997.”

Onde está Pereira?

Aposentado.

Documentação?

Não existe.

Código?

Está numa load library.

Bem-vindo ao castelo.


🔬 4. “I can make you a man” — recompilar não significa modernizar

Imagine que conseguimos pegar determinado programa COBOL e compilá-lo para execução em Linux numa instância EC2.

Fantástico.

COBOL/zOS
    │
    ▼
COBOL/Linux
    │
    ▼
AWS EC2

A aplicação executa.

Então:

“IT'S ALIVE!”

Sim.

Mas cuidado.

Fizemos replatforming.

Talvez isso seja exatamente aquilo que o projeto necessita. Não há absolutamente nada de errado com replatforming.

O erro está em chamar qualquer mudança de plataforma de transformação completa.

A lógica pode continuar praticamente igual.

O código pode continuar COBOL.

O que mudou foi o ambiente no qual ele vive.

É como Rocky.

Frank criou um homem.

Mas criar um corpo funcionando não resolveu automaticamente todos os problemas do castelo.


🏗️ 5. Terraform constrói o laboratório

Vamos separar responsabilidades.

Terraform pode assumir a infraestrutura:

Terraform
    │
    ├── VPC
    ├── Subnets
    ├── Security Groups
    ├── EC2
    ├── IAM
    ├── RDS
    └── outros recursos

Pense nele como quem prepara o laboratório.

Mesa instalada.

Eletricidade ligada.

Tanque montado.

Cabos conectados.

Máquinas posicionadas.

Mas Terraform não deveria necessariamente decidir cada detalhe de configuração da criatura.

Para isso entra outro personagem.


🧰 6. Ansible entra usando salto alto

Ansible entra no laboratório dizendo:

“Deixem a configuração comigo.”

E começa.

EC2
 ↓
pacotes do sistema operacional
 ↓
COBOL compiler/runtime
 ↓
environment variables
 ↓
aplicação
 ↓
configuração
 ↓
database connectivity
 ↓
services
 ↓
health checks

É aqui que a arquitetura original fica realmente interessante.

Não precisamos ter um processo artesanal para DEV, outro para SIT, outro para UAT e um ritual secreto conhecido apenas por dois operadores para PRE-PROD.

Temos automação reutilizável.

Algo conceitualmente assim:

             ANSIBLE ROLE
                  │
       ┌──────────┼──────────┐
       │          │          │
      DEV        SIT        UAT
                              │
                              ▼
                          PRE-PROD

A receita permanece.

Os ingredientes variáveis são separados.


🧓 7. O programador COBOL olha para group_vars e começa a rir

Aqui temos uma das minhas partes favoritas.

A turma DevOps explica:

“Nós separamos a lógica da automação dos parâmetros específicos do ambiente.”

O programador COBOL responde:

“Parâmetros?”

Sim.

DEV pode ter:

DB = APP_DEV
PORT = 1521
ENDPOINT = dev-database

SIT:

DB = APP_SIT
PORT = 1521
ENDPOINT = sit-database

UAT:

DB = APP_UAT
PORT = 1521
ENDPOINT = uat-database

O playbook continua fundamentalmente o mesmo.

Para alguém vindo do mainframe, isso não deveria parecer ficção científica.

Nós passamos décadas trabalhando com conceitos semelhantes através de:

JCL
PROCs
symbolic parameters
PARMLIB
SYSIN
DD statements

Mudam as ferramentas.

A ideia de externalizar configuração é muito mais antiga que os slides modernos que a apresentam.

Frank-N-Furter provavelmente acrescentaria glitter.


👄 8. “Don’t dream it. Be it.” — Infrastructure as Code

Aqui encontramos uma mudança genuinamente poderosa.

Durante décadas tivemos infraestrutura e configuração documentadas mais ou menos assim:

“Instalar pacote X, editar arquivo Y, trocar parâmetro Z, reiniciar serviço e telefonar para Carlos se não funcionar.”

Carlos sai da empresa.

Fim da documentação.

Infrastructure as Code transforma parte desse conhecimento operacional em algo executável.

CONHECIMENTO
     ↓
    CODE
     ↓
Version Control
     ↓
Automation
     ↓
Environment

Isso é importante.

Código pode ser:

revisado, versionado, comparado, testado, auditado e reproduzido.

O conhecimento deixa de existir exclusivamente na memória do operador.


🧪 9. DEV → SIT → UAT → PRE-PROD

Agora Frank conduz nossa criatura pelos diferentes aposentos do castelo.

DEV

Aqui desenvolvemos e realizamos os primeiros testes.

SOURCE
  ↓
BUILD
  ↓
TEST
  ↓
DEPLOY

SIT

System Integration Testing.

Aqui descobrimos uma verdade universal da informática:

Tudo funciona perfeitamente até precisar conversar com outra coisa.

Banco.

APIs.

Filas.

Serviços.

Arquivos.

Autenticação.

Sistemas externos.

UAT

User Acceptance Testing.

Agora a pergunta deixa de ser apenas:

“Funciona?”

e torna-se:

“Isso faz aquilo que o negócio realmente precisa?”

Diferença enorme.

PRE-PROD

Aqui chegamos ao ensaio geral.

E PRE-PROD deveria ser assustadoramente parecido com produção.


🏰 10. PRE-PROD precisa ser o castelo quase completo

Um PRE-PROD simplificado demais produz falsa segurança.

Precisamos considerar:

OS version
runtime version
COBOL compiler/runtime
database version
patches
CPU architecture
memory
network
TLS
IAM
filesystem
locale
encoding
timezone
batch
integrations
security policies

Quanto mais diferente de PROD, mais perguntas surgem.

Imagine:

UAT
COBOL Runtime 8.0

PROD
COBOL Runtime 7.4

Funcionou no UAT.

Que maravilhoso.

Mas você não testou produção.

Testou outra coisa.


📦 11. Está faltando um personagem importante: o artefato

Aqui eu faria uma alteração importante na arquitetura.

Não gosto da ideia de recompilar arbitrariamente a aplicação em cada ambiente.

Prefiro:

          SOURCE
             │
             ▼
           BUILD
             │
             ▼
            TEST
             │
             ▼
      ARTIFACT REPOSITORY
             │
     ┌───────┼─────────┐
     ▼       ▼         ▼
    DEV     SIT       UAT
                       │
                       ▼
                   PRE-PROD
                       │
                       ▼
                     PROD

Isso nos leva a um princípio extremamente poderoso:

Build once, deploy many.

Produzimos uma criatura.

Depois submetemos aquela mesma criatura aos testes.

Não fazemos Rocky 1 para DEV, Rocky 2 para SIT, Rocky 3 para UAT e Rocky 4 para produção esperando que todos sejam geneticamente idênticos.


🕵️ 12. A pergunta do auditor

Imagine uma mudança chegando a produção.

O auditor pergunta:

“Esse binário é exatamente aquele homologado?”

Se cada ambiente recompila:

SOURCE
 ↓
DEV BUILD

SOURCE
 ↓
SIT BUILD

SOURCE
 ↓
UAT BUILD

SOURCE
 ↓
PROD BUILD

temos quatro processos de construção.

Mesmo que tudo pareça igual, aumentamos nossa superfície de dúvida.

Com artefato imutável:

SOURCE
 ↓
BUILD
 ↓
ARTIFACT 7.3.17
 ↓
DEV
 ↓
SIT
 ↓
UAT
 ↓
PRE-PROD
 ↓
PROD

agora existe uma cadeia muito mais clara.


🔐 13. Sweet Transvestite não significa senha escrita no YAML

Chegamos aos secrets.

Nunca faça:

database_password: "senha_supersecreta123"

e depois:

git commit

Parabéns.

Você acaba de transformar seu Git em museu arqueológico de credenciais.

A arquitetura corretamente menciona mecanismos como Ansible Vault e AWS Secrets Manager.

O princípio é:

CODE ≠ SECRET

Idealmente:

CI/CD
   │
   ▼
IAM / temporary authorization
   │
   ▼
Secrets Manager
   │
   ▼
Runtime

O segredo aparece apenas onde e quando precisa aparecer.


🧛 14. Privilégio mínimo: nem Frank deveria ter acesso a tudo

Outro princípio:

Developer ≠ Production Admin
Application ≠ Database Admin
Pipeline ≠ Unlimited AWS Administrator

Cada componente recebe apenas aquilo de que necessita.

Isso é least privilege.

Se determinado processo precisa consultar um segredo, não existe razão automática para permitir que consulte todos.

Se uma aplicação precisa acessar determinado banco, não significa que deva possuir poder administrativo sobre ele.

É o equivalente moderno de algo que o pessoal RACF conhece muito bem:

Quem é você e por que exatamente precisa acessar isso?


🗄️ 15. RDS parece simples até começarmos a falar de Db2

A imagem permite Oracle/PostgreSQL como exemplos.

Tudo bem.

Mas um cenário vindo de mainframe pode envolver:

COBOL
  +
Db2 for z/OS

E alguém inevitavelmente pensa:

Db2 → Db2

Então deve ser simples.

Ah, meu jovem Brad...

Não necessariamente.

Db2 for z/OS
      ≠
Db2 LUW
      ≠
RDS for Db2

Existe parentesco tecnológico.

Não existe identidade operacional perfeita.

Precisamos investigar SQL utilizado, stored procedures, utilities, comportamento transacional, autorização, integração e características específicas da plataforma.

O banco pode carregar tanta arqueologia quanto o COBOL.


🗃️ 16. E o VSAM?

Agora Frank encontra um arquivo VSAM no porão.

Silêncio.

Se a aplicação original utiliza:

KSDS
ESDS
RRDS

precisamos responder:

Para onde esses dados vão?

RDS?

Arquivos?

Outro datastore?

Mantemos comportamento equivalente?

E principalmente:

a aplicação depende semanticamente da organização original?

Não basta exportar registros e dizer:

“Migrei.”

Dados possuem comportamento.

Chaves.

Ordenação.

Concorrência.

Locking.

Integridade.

Performance.

Tudo isso importa.


📜 17. E o JCL?

Aqui está uma das grandes vítimas dos diagramas bonitos de modernização.

Pegamos o COBOL.

Migramos.

E esquecemos que às 02:00 existe isto:

JOB A
 ↓
JOB B
 ↓
JOB C ─── JOB D
   │
   ▼
 JOB E
   │
   ▼
 JOB F

Existem dependências.

Calendários.

Arquivos.

Condições.

Return codes.

Restart.

Checkpoints.

SLA.

Janelas de processamento.

O JCL talvez desapareça.

A necessidade que ele implementava não desaparece.

Alguma outra coisa precisará orquestrar aquilo.


⏰ 18. O batch não quer saber que agora você é cloud

Imagine um processamento que precisa terminar até 06:00.

No mainframe:

23:00 START
...
05:31 END

Migramos para AWS.

Agora:

23:00 START
...
06:47 END

Tecnicamente funciona.

Funcionalmente funciona.

Os resultados estão corretos.

E mesmo assim:

A MIGRAÇÃO FALHOU.

Porque o negócio precisava dos dados às 06:00.

Essa é uma lição gigantesca.

Compatibilidade funcional não é suficiente.

Precisamos de compatibilidade operacional.


📊 19. CloudWatch não deveria ficar decorando o canto do desenho

Observabilidade precisa atravessar toda a solução.

Não basta:

EC2 = UP
RDS = UP

Enquanto:

Pedidos processados = ZERO

Infraestrutura saudável não significa aplicação saudável.

Precisamos enxergar:

CPU
memory
disk
network
database latency
connections
locks
errors
transaction rate
response time
batch duration
business transactions

E aqui o veterano do mainframe reconhece novamente uma velha ideia.

O importante não é saber apenas:

“A máquina está ligada?”

O importante é:

“O workload está entregando aquilo que deveria?”


💥 20. PRE-PROD também precisa morrer

Frank provavelmente aprovaria esta parte.

Testamos:

DATABASE ONLINE

Excelente.

Agora desligue o banco.

Testamos:

NETWORK OK

Excelente.

Agora introduza timeout.

Testamos:

DISK SPACE OK

Encha o disco.

Testamos:

PASSWORD VALID

Revogue a credencial.

Queremos descobrir:

database unavailable
network failure
bad credentials
timeout
disk full
process killed
duplicate transaction
corrupted input
rollback failure
partial deployment

Porque produção descobrirá essas condições por você.

E produção não agenda laboratório.


🔥 21. O health check mais importante talvez seja o ABEND

Um health check dizendo:

HTTP 200

é agradável.

Mas para uma aplicação empresarial eu quero saber:

Aplicação iniciou?
Banco conecta?
Fila responde?
Transação funciona?
Arquivo abre?
Batch executa?
Rollback funciona?
Restart funciona?
Dados permanecem consistentes?

Um sistema não é saudável porque existe um processo no ps.

Ele é saudável quando consegue realizar sua função.


🔄 22. Rollback precisa entrar no espetáculo

Deployment sem rollback testado é fé.

O pipeline deveria conhecer algo como:

VERSION 8.4
    │
    ▼
DEPLOY
    │
    ├── SUCCESS → continue
    │
    └── FAILURE
            │
            ▼
        VERSION 8.3
            │
            ▼
        VALIDATION

Mas existe uma complicação.

Rollback de executável é relativamente fácil.

Rollback de banco pode não ser.

Se versão 8.4 alterou schema e começou a gravar dados novos, voltar simplesmente o executável para 8.3 talvez não resolva.

Portanto deployment strategy precisa conversar com database migration strategy.


🧬 23. A criatura tem memória

Esse é outro erro frequente.

Tratamos aplicação como código.

Mas aplicações empresariais são:

CODE
 +
DATA
 +
STATE
 +
INTEGRATIONS
 +
HISTORY

Migrar código é apenas uma parte.

Migrar décadas de dados mantendo integridade pode ser o verdadeiro projeto.

Frank consegue construir outro corpo.

Transferir quarenta anos de memória para ele é outra história.


🕸️ 24. Discovery deveria aparecer antes de Terraform

Se eu redesenhasse completamente a figura, colocaria no início:

             DISCOVERY
                 │
      ┌──────────┼───────────┐
      │          │           │
    COBOL       JCL         DATA
      │          │           │
     CICS    Scheduler     VSAM
      │                      │
     IMS                    Db2
      │
      MQ
      │
 External Systems

Depois:

Dependency Mapping
       ↓
Workload Classification
       ↓
Modernization Strategy
       ↓
Architecture
       ↓
Terraform / Ansible / CI/CD

Essa ordem é fundamental.

Não escolha a ferramenta antes de compreender o problema.


🧭 25. Nem tudo precisa sair do mainframe

Aqui está outra heresia contra certas apresentações de modernização.

Podemos terminar com:

                   ENTERPRISE
                       │
           ┌───────────┴───────────┐
           │                       │
         IBM Z                    AWS
           │                       │
      COBOL/CICS                 Services
           │                       │
          Db2       ← API/MQ →     RDS
           │                       │
        Batch                    Analytics

Isso também é modernização.

Talvez seja uma modernização melhor.

Mainframe não precisa desaparecer para AWS existir.

AWS não precisa substituir IBM Z para gerar valor.

O objetivo deveria ser colocar cada workload onde faz sentido técnico, econômico e operacional.


🏎️ 26. Performance: “funciona” é uma palavra perigosíssima

Suponha que uma transação CICS respondesse em:

40 ms

A nova aplicação responde em:

480 ms

Funciona?

Sim.

É equivalente?

Talvez não.

Agora multiplique pela quantidade de transações.

Adicione network latency.

Database round trips.

APIs.

TLS.

Logs.

Tracing.

De repente aquela diferença aparentemente pequena torna-se enorme.

Modernização precisa de baseline antes da migração.

Sem baseline você termina dizendo:

“Parece mais lento.”

Isso não é engenharia.


💰 27. E existe FinOps

Outro easter egg escondido sob a mesa do laboratório.

No mainframe alguém pode reclamar:

“MIPS são caros!”

Migramos para cloud.

Então descobrimos:

EC2
RDS
storage
IOPS
snapshots
data transfer
NAT
logs
monitoring
backup
licenses
support

e percebemos que cloud não significa:

barato.

Significa principalmente:

modelo econômico diferente.

Se não medirmos consumo, uma arquitetura elasticamente maravilhosa pode gerar uma conta elasticamente maravilhosa também.


👄 28. “Don’t dream it. Be it.”

Chegamos finalmente à grande lição de Frank-N-Furter.

Não devemos ter medo de transformar sistemas.

COBOL pode viver em novas plataformas.

Pode participar de pipelines modernos.

Pode trabalhar com Git.

Pode ser automatizado com Ansible.

Pode ter infraestrutura criada com Terraform.

Pode conversar com cloud.

Pode expor APIs.

Pode entrar num processo CI/CD.

Não existe qualquer contradição nisso.

O problema começa quando confundimos modernização com maquiagem tecnológica.

Trocar:

z/OS

por:

Linux

não moderniza automaticamente arquitetura.

Trocar:

Db2

por:

PostgreSQL

não moderniza automaticamente dados.

Trocar:

JCL

por:

YAML

não moderniza automaticamente processos.

E trocar:

datacenter

por:

AWS

não moderniza automaticamente engenharia.


🧠 29. A verdadeira modernização

Para mim, modernização aparece quando conquistamos:

REPRODUCIBILITY
      +
AUTOMATION
      +
OBSERVABILITY
      +
TRACEABILITY
      +
SECURITY
      +
TESTABILITY
      +
RESILIENCE
      +
MAINTAINABILITY

Se conseguimos isso mantendo COBOL?

Excelente.

Se parte precisa ser reescrita?

Pode fazer sentido.

Se outra parte permanece no IBM Z?

Perfeitamente possível.

Se determinado workload vai para AWS?

Ótimo.

Tecnologia é consequência da decisão arquitetural.

Não deveria ser sua causa.


🥚 Easter egg — 03:17 no castelo

Naturalmente precisamos deixar uma pequena surpresa.

São 03:17 da madrugada.

O telefone toca.

Produção parou.

O dashboard está verde.

EC2:

RUNNING

RDS:

AVAILABLE

CPU:

12%

Memory:

41%

CloudWatch:

NO INFRASTRUCTURE ALARM

Mas o batch não termina.

Um engenheiro olha para outro.

Ninguém entende.

Então aparece um veterano COBOL carregando uma caneca de café.

Ele olha cinco minutos para os logs e pergunta:

“Onde está o arquivo que o JOB anterior deveria ter criado?”

Silêncio.

O arquivo não existe.

O JOB anterior terminou com RC=04.

O novo scheduler considerou RC=04 sucesso.

O sistema antigo possuía uma regra que tratava aquele retorno especificamente.

Ela nunca apareceu no diagrama de migração.

Frank-N-Furter olha para sua criatura.

A criatura olha para Frank.

E o veterano toma outro gole de café.

O COBOL havia sido migrado perfeitamente.

O conhecimento operacional, não.


☕ 30. A lição final do Bellacosa Mainframe

Há algo profundamente fascinante nesses sistemas antigos.

Quando encontramos um programa COBOL escrito em 1989, atualizado em 1997, alterado em 2008, integrado com uma API em 2019 e ainda executando em 2026, não estamos olhando simplesmente para código legado.

Estamos olhando para história empresarial executável.

Cada IF.

Cada copybook.

Cada DD.

Cada tabela.

Cada fila.

Cada estranho RC=04.

Pode existir porque alguma coisa aconteceu.

Alguém tomou uma decisão.

Algum problema ocorreu.

Alguma regra comercial nasceu.

Algum cliente reclamou.

Algum auditor exigiu.

Alguma madrugada de produção ensinou uma lição.

Por isso, quando alguém entrar no laboratório segurando Terraform numa mão e Ansible na outra, não devemos impedi-lo.

Muito pelo contrário.

Acendam as máquinas.

Preparem AWS.

Construam pipelines.

Versionem tudo.

Automatizem.

Observem.

Testem.

Modernizem.

Só não cometam o erro de Frank-N-Furter:

não fiquem tão apaixonados pela nova criatura a ponto de esquecer de compreender o mundo no qual ela terá de sobreviver.

Porque, no final, a pergunta mais importante de uma modernização COBOL não é:

“Conseguimos fazê-lo rodar na AWS?”

É:

“Conseguimos preservar quarenta anos de comportamento, regras, dependências e conhecimento — eliminando aquilo que ficou obsoleto e melhorando aquilo que realmente precisava mudar?”

Se a resposta for sim, então podem aumentar o volume.

As luzes do laboratório podem acender.

Terraform pode subir a infraestrutura.

Ansible pode executar o playbook.

Jenkins pode promover o artefato.

CloudWatch pode começar a observar.

E Frank-N-Furter finalmente poderá anunciar:

⚡ “IT'S ALIVE!”

Enquanto o velho programador COBOL, sentado discretamente no fundo do laboratório, acrescentará:

“Muito bonito. Agora vamos ver se fecha o batch antes das seis.” ☕👄⚡



 

terça-feira, 11 de agosto de 2026

Kubernetes para COBOLzeiros: o Guia do Mochileiro das Galáxias para quem saiu do JES2, encontrou um Pod e perguntou onde diabos colocaram o JCL

 

Bellacosa Mainframe apresenta kubernetes para coboleiros

☕ Um Café no Bellacosa Mainframe

Kubernetes para COBOLzeiros: o Guia do Mochileiro das Galáxias para quem saiu do JES2, encontrou um Pod e perguntou onde diabos colocaram o JCL

🚀 Pods, Deployments, Services, YAML, containers, RBAC, storage, GitOps e a estranha descoberta de que o mundo cloud-native passou décadas reinventando problemas que o velho operador do mainframe já conhecia — só que agora tudo tem nomes novos, logos simpáticos e pode desaparecer antes do café esfriar

Há uma frase impressa em letras grandes e amistosas na capa do Guia do Mochileiro das Galáxias:

NÃO ENTRE EM PÂNICO.

Se Douglas Adams tivesse vivido tempo suficiente para trabalhar com Kubernetes, provavelmente acrescentaria uma segunda:

E NÃO APAGUE O NAMESPACE prod.

Porque Kubernetes tem uma característica curiosa.

Quando você olha pela primeira vez, encontra palavras como:

Pod, Deployment, ReplicaSet, Service, Ingress, ConfigMap, Secret, StatefulSet, DaemonSet, Helm, Operator, CRD.

O COBOLzeiro veterano olha aquilo e pensa:

— Meu Deus. Inventaram outra computação.

Não inventaram.

Mudaram a arquitetura, mudaram a escala, mudaram a implementação, inventaram abstrações extremamente poderosas e deram nomes diferentes a problemas que, em muitos casos, nós já enfrentávamos quando o terminal ainda era verde.

Precisamos executar programas.

Precisamos saber onde executá-los.

Precisamos distribuir recursos.

Precisamos armazenar configurações.

Precisamos controlar acesso.

Precisamos monitorar aplicações.

Precisamos guardar dados.

Precisamos recuperar processos que morreram.

Precisamos instalar novas versões sem transformar terça-feira à noite numa reunião extraordinária com 27 pessoas.

E, acima de tudo:

precisamos impedir que alguma coisa quebrou às 02:47 da manhã sem ninguém saber por quê.

Então pegue sua toalha, seu café e talvez aquele manual de JCL que você insiste em manter na gaveta.

Hoje vamos viajar para Kubernetes.


1. Antes de Kubernetes havia... computadores

Vamos começar pelo começo.

Um programador COBOL iniciante conhece aproximadamente este universo:

Programa COBOL
      |
      v
Compilação
      |
      v
LOAD MODULE
      |
      v
JCL
      |
      v
JES
      |
      v
Execução

Naturalmente estou simplificando.

Mas existe uma ideia importante:

o programa precisa de um ambiente para executar.

Ele precisa de CPU, memória, arquivos, bibliotecas, configuração, permissões e recursos.

Isso nunca desapareceu.

No universo moderno surgiu outro problema.

Imagine uma aplicação desenvolvida em determinado ambiente:

Aplicação
+
bibliotecas
+
runtime
+
dependências
+
configuração

Na máquina do desenvolvedor funciona perfeitamente.

Vai para outro servidor:

ABEND GALÁCTICO

— Mas na minha máquina funciona!

Essa frase provavelmente causou mais sofrimento humano que Vogons lendo poesia.

Uma das respostas modernas para esse problema foram os containers.


2. Container: coloque a aplicação numa caixinha

De maneira bastante simplificada, um container empacota a aplicação e aquilo de que ela precisa para executar de forma consistente.

Pense:

+----------------------+
|      CONTAINER       |
|                      |
| aplicação            |
| runtime              |
| bibliotecas          |
| dependências         |
|                      |
+----------------------+

Isso melhora enormemente a portabilidade.

Mas imediatamente surge outro problema.

Você possui:

1 container

Tudo maravilhoso.

Depois:

10 containers

Administrável.

Depois:

100 containers

Interessante.

Depois:

3.000 containers

Alguém pergunta:

— Quem administra isso?

Silêncio na sala.

É nesse momento que Kubernetes entra pela porta.


3. Kubernetes não é simplesmente um “Docker grandão”

Essa comparação ajuda durante cinco minutos e depois começa a atrapalhar.

Kubernetes é uma plataforma para orquestração de workloads containerizadas.

A palavra mágica é:

ORQUESTRAÇÃO

Imagine uma orquestra com 200 músicos.

O maestro não toca simultaneamente todos os instrumentos.

Ele coordena o conjunto.

Kubernetes tenta responder perguntas como:

  • onde uma aplicação será executada?

  • quantas cópias dela devem existir?

  • o que fazer quando uma morre?

  • como encontrar essas cópias?

  • como distribuir tráfego?

  • como atualizar uma versão?

  • como fornecer configuração?

  • como controlar recursos?

  • como armazenar dados persistentes?

  • quem pode alterar o quê?

Isso já começa a parecer menos alienígena para alguém vindo de ambientes corporativos.


4. A ideia que muda tudo: estado desejado

Aqui está provavelmente o conceito mais importante de Kubernetes.

Você declara aquilo que deseja.

Por exemplo:

replicas: 3

Traduzindo para português de máquina do café:

“Senhor Kubernetes, eu gostaria que existissem três instâncias dessa aplicação.”

Ele observa:

DESEJADO = 3
ATUAL    = 3

Tudo certo.

Então uma delas morre:

DESEJADO = 3
ATUAL    = 2

Kubernetes percebe:

— Isso não está certo.

E tenta retornar para:

3

Esse processo é chamado, em essência, de reconciliação.

Podemos imaginar:

Estado desejado
      |
      v
Estado atual
      |
      v
São iguais?
  /       \
SIM       NÃO
 |         |
OK      corrigir
           |
           +------+
                  |
                  v
              observar
              novamente

Kubernetes é, em grande parte, uma enorme máquina dizendo:

“O universo não está como deveria estar. Vou tentar consertá-lo.”

É uma ambição que normalmente encontramos apenas em sistemas distribuídos, religiões e departamentos de arquitetura corporativa.


5. Control Plane: conheça o cérebro da criatura

Um cluster Kubernetes pode ser imaginado assim:

                 KUBERNETES CLUSTER
                        |
           +------------+------------+
           |                         |
     CONTROL PLANE              WORKER NODES
           |                         |
     API Server                    Pods
     Scheduler                     kubelet
     Controllers                   runtime
     etcd                          network

O Control Plane administra o estado do cluster.

E um dos personagens principais é:

kube-apiserver

Quando você executa:

kubectl get pods

não está indo de porta em porta perguntar aos containers:

— Boa tarde, senhor Pod, o senhor está vivo?

Você fala com a API do Kubernetes.

Conceitualmente:

VOCÊ
 |
kubectl
 |
 v
API SERVER
 |
 +-- autenticação
 +-- autorização
 +-- validação
 +-- recursos do cluster

Esse detalhe revela uma característica fundamental:

Kubernetes é profundamente API-driven.


6. etcd: o sujeito que sabe das coisas

O etcd é um armazenamento distribuído chave-valor usado pelo Kubernetes para guardar dados essenciais sobre o estado do cluster.

Imagine que alguém diga:

— Temos backup dos servidores.

Ótimo.

— E do etcd?

Silêncio.

Uma mosca passa.

O operador começa lentamente a beber o café.

Informações críticas do estado do cluster dependem dele. Portanto backup e recuperação do etcd são assuntos sérios.

Primeira regra da produção:

Backup que nunca teve restauração testada é uma crença religiosa.


7. Scheduler: o JES encontrou um primo distante

Você solicita uma workload.

Existem vários Nodes:

NODE-A
NODE-B
NODE-C
NODE-D

Onde ela será executada?

O Scheduler participa dessa decisão.

Ele considera recursos e restrições como:

CPU
memória
afinidade
anti-afinidade
taints
tolerations
restrições de placement

O COBOLzeiro começa a sorrir.

— Espere... alguém recebe uma carga de trabalho, olha recursos e decide onde executar?

Sim.

— Então é JES?

NÃO.

Guarde a toalha.

As tecnologias, arquiteturas e responsabilidades são diferentes.

Mas existe um parentesco conceitual extremamente útil para aprender.

O truque para um profissional experiente aprender tecnologia nova não é fingir que tudo é completamente novo.

É perguntar:

“Qual problema antigo essa abstração está tentando resolver de uma maneira nova?”


8. Worker Node: onde a marmota realmente trabalha

O Control Plane coordena.

Os Worker Nodes executam as workloads.

Dentro deles encontramos componentes como o kubelet, runtime de containers e elementos relacionados a networking.

Podemos imaginar:

WORKER NODE
 |
 +-- kubelet
 |
 +-- runtime
 |
 +-- POD
 |    |
 |    +-- container
 |
 +-- POD
      |
      +-- container

E aqui encontramos talvez a palavra mais famosa do Kubernetes.


9. POD — não é ervilha espacial

O Kubernetes não trabalha simplesmente administrando containers isoladamente.

Uma unidade fundamental de execução é o:

Pod

Normalmente encontramos:

Pod
 |
 +-- Container

Mas um Pod pode possuir mais de um container quando existe uma razão arquitetural para isso:

Pod
 |
 +-- aplicação
 |
 +-- container auxiliar

Containers no mesmo Pod compartilham aspectos importantes de seu ambiente.

Portanto:

POD != CONTAINER

Grave isso.

Pode parecer uma distinção acadêmica no primeiro dia.

No vigésimo ela salva sua compreensão do ambiente.


10. E o Pod morreu

Aqui acontece uma transformação filosófica interessante para quem passou décadas tratando servidores como indivíduos.

No mundo tradicional:

“Esse é o servidor XPTO01. Cuide dele.”

No Kubernetes, muita infraestrutura é tratada como efêmera.

O Pod morreu?

Pode surgir outro.

Hoje:

Pod A
10.20.1.17

Amanhã:

Pod A = morto

Pod B
10.20.4.38

Por isso construir dependências baseadas diretamente na identidade transitória de um Pod seria uma péssima ideia.

Precisamos de abstrações.


11. ReplicaSet: quero três vivos

Imagine:

Desejado = 3 Pods

Temos:

Pod
Pod
Pod

Um desaparece:

Pod
X
Pod

O ReplicaSet ajuda a manter:

3

criando outro.

Aqui reencontramos nosso velho amigo:

estado desejado.


12. Deployment: agora precisamos atualizar tudo

Na prática, para aplicações comuns, normalmente trabalhamos com um Deployment, que administra ReplicaSets e facilita rollouts.

Imagine:

Deployment
    |
ReplicaSet V1
    |
 +-- Pod
 +-- Pod
 +-- Pod

Sai versão nova.

Em vez de:

PARE TUDO!

podemos fazer uma substituição progressiva:

V1  V1  V1

V2  V1  V1

V2  V2  V1

V2  V2  V2

Isso é tremendamente importante em ambientes modernos onde deploys podem ocorrer com frequência.

E quando algo dá errado?

Rollback passa a fazer parte da conversa.


13. Service: “mas qual IP eu chamo?”

Lembra que Pods podem desaparecer?

Temos:

Frontend
    |
    ???
    |
Backend Pods

Como o frontend encontra o backend se os Pods mudam?

Usamos uma abstração chamada:

Service

CLIENTE
   |
   v
SERVICE
   |
   +---- Pod
   |
   +---- Pod
   |
   +---- Pod

O Service fornece um ponto lógico estável para acessar um conjunto de Pods selecionados.

Aqui existe uma das ideias mais bonitas do cloud-native:

colocar identidade lógica estável diante de componentes fisicamente transitórios.


14. ConfigMap: não coloque o universo dentro do programa

Aplicações precisam de configurações:

LOG_LEVEL=INFO
LANGUAGE=PT_BR
API_HOST=...

Você poderia colocar tudo dentro da imagem.

Mas então qualquer mudança exigiria outra construção da imagem.

ConfigMaps permitem separar parte da configuração da aplicação.

É uma evolução daquele princípio antigo:

programa é uma coisa; parâmetros do ambiente são outra.

COBOLzeiro conhece essa conversa há décadas, mesmo usando mecanismos completamente diferentes.


15. Secret: o nome promete mais do que parece

Temos informações sensíveis:

senha
token
chave
certificado

Kubernetes possui o objeto Secret.

Mas cuidado com uma armadilha clássica:

Um objeto chamado Secret não significa automaticamente “segredo absolutamente protegido contra tudo”.

Segurança adequada envolve também:

  • RBAC;

  • criptografia em repouso;

  • proteção do etcd;

  • controle de Service Accounts;

  • secret managers;

  • rotação;

  • auditoria;

  • mínimo privilégio.

Colocar a senha em Secret e declarar vitória é como escrever:

//PASSWORD DD *
SUPERSECRETA123
/*

e colocar uma etiqueta dizendo CONFIDENCIAL.

A etiqueta não é o controle de segurança.


16. Storage: containers morrem; saldo bancário não deveria

Containers são naturalmente descartáveis.

Dados empresariais frequentemente não são.

Imagine:

Banco de dados
     |
 container
     |
   morreu

Kubernetes responde:

— Sem problemas, fazemos outro!

O DBA responde:

— E MEUS DADOS?

E nesse instante nasce uma reunião.

Para persistência encontramos conceitos como:

PersistentVolume
PersistentVolumeClaim
StorageClass

Simplificando:

POD
 |
PVC
 |
PV
 |
STORAGE REAL

O Pod pode ser transitório.

O armazenamento precisa seguir regras diferentes.


17. StatefulSet: quando identidade importa

Deployments funcionam muito bem quando as instâncias podem ser relativamente intercambiáveis.

Mas nem toda workload funciona assim.

Algumas precisam de identidade previsível:

db-0
db-1
db-2

e armazenamento associado.

Aparece então o:

StatefulSet

Ele é especialmente relevante para workloads stateful e sistemas distribuídos que precisam de identidade e ordenação mais previsíveis.

Isso não significa:

“StatefulSet transforma magicamente qualquer banco em banco cloud-native.”

Se fosse tão fácil, DBA seria uma profissão de seis minutos.


18. DaemonSet: um para cada Node

Imagine um agente de monitoramento que precisa existir em todos os Nodes:

NODE A → agente
NODE B → agente
NODE C → agente
NODE D → agente

O DaemonSet serve muito bem para esse padrão.

Aplicações típicas incluem agentes de:

  • observabilidade;

  • logging;

  • segurança;

  • networking.

Quando surge outro Node, a intenção pode ser automaticamente refletida nele.

Estado desejado novamente.

Kubernetes é quase obsessivo.


19. Jobs e CronJobs: o COBOLzeiro reconhece um parente

Nem tudo precisa ficar executando eternamente.

Temos tarefas:

INÍCIO
 |
PROCESSAMENTO
 |
FIM

Kubernetes possui Jobs.

E para tarefas periódicas:

CronJobs

O COBOLzeiro imediatamente pergunta:

— Então isso é batch?

Em espírito, estamos no mesmo bairro.

Mas não na mesma casa.

Um Job Kubernetes não substitui automaticamente décadas de ecossistema batch corporativo, scheduling, dependências, restart/recovery, controles operacionais e processamento transacional.

Ainda assim, a analogia ajuda enormemente:

Job → trabalho finito

CronJob → trabalho agendado

20. Requests e Limits: WLM manda lembranças

Aqui chegamos a uma área deliciosa para quem conhece mainframe.

Uma workload pode declarar algo semelhante a:

resources:
  requests:
    cpu: "500m"
    memory: "512Mi"
  limits:
    cpu: "1"
    memory: "1Gi"

Simplificando, requests ajudam a expressar recursos necessários para scheduling; limits impõem tetos de utilização conforme o recurso.

A pergunta filosófica é antiga:

Temos recursos finitos e consumidores potencialmente infinitos. Quem recebe quanto?

O mainframe possui décadas de engenharia sofisticadíssima em workload management.

Kubernetes aborda isso dentro de seu próprio modelo.

Não diga:

Kubernetes WLM = IBM WLM

Não são equivalentes.

Diga:

Ambos enfrentam aspectos do velho problema de administrar recursos compartilhados e workloads concorrentes.

Essa comparação ensina.

A equivalência enganaria.


21. Agora chegamos ao inferno: produção

Até aqui tudo funciona.

Tutorial:

pod/myapp created

Aluno:

— Kubernetes é fácil!

Produção:

CrashLoopBackOff

Aluno:

— Chamem um adulto.

E aqui começa o verdadeiro treinamento.

Você precisa conhecer:

  • logs;

  • events;

  • probes;

  • métricas;

  • CPU;

  • memória;

  • DNS;

  • networking;

  • storage;

  • permissões;

  • dependências;

  • configuração.

Porque:

CrashLoopBackOff

não significa:

“Execute o comando secreto número 17.”

Significa que existe um comportamento de reinício repetido a investigar.

A causa pode ser:

configuração errada
dependência indisponível
credencial
permissão
OOM
bug
porta
DNS
storage
probe

É quase o nosso querido:

S0C7

O código oferece uma pista.

Mas experiência transforma a pista em investigação.


22. Observabilidade: o cluster precisa falar

Imagine:

Usuário
  |
Ingress
  |
Service
  |
Pod
  |
Aplicação
  |
API
  |
Banco

Usuário diz:

“Está lento.”

Maravilha.

Onde?

Precisamos de diferentes sinais:

METRICS
LOGS
TRACES
EVENTS

Não basta saber que um Pod está Running.

Um processo pode estar vivo e a aplicação completamente inútil.

É por isso que existem conceitos como:

liveness probe e readiness probe.

De forma simplificada:

Liveness:
"Você ainda está vivo?"

Readiness:
"Você está pronto para receber tráfego?"

São perguntas diferentes.

Um sujeito pode estar vivo às seis da manhã e absolutamente não estar pronto para receber tráfego.

Eu sou prova disso antes do café.


23. RBAC: RACF olha pela janela

RBAC significa Role-Based Access Control.

A pergunta é familiar:

QUEM
 |
pode fazer
 |
O QUÊ
 |
sobre QUAL RECURSO?

Exemplo:

PROGRAMADOR
 |
 +--> visualizar Pods       SIM
 +--> consultar logs        SIM
 +--> destruir cluster      NÃO, ESPERAMOS

Quem conhece RACF encontra aqui outra ponte conceitual.

RBAC não é RACF.

Mas autorização baseada em identidades, recursos, permissões e mínimo privilégio definitivamente não nasceu ontem.


24. NetworkPolicy: “você não precisa conversar com ele”

Imagine:

FRONTEND
    |
BACKEND
    |
DATABASE

O frontend precisa realmente acessar diretamente o banco?

Talvez não.

Então podemos desejar:

Frontend ---> Backend     OK
Frontend -X-> Database    NÃO

Backend ----> Database    OK

Network Policies permitem controlar fluxos de rede entre workloads quando suportadas adequadamente pelo ambiente de networking.

Aqui começamos a caminhar em direção a arquiteturas mais próximas do princípio de:

negue aquilo que não é necessário.


25. Helm: porque 47 YAMLs também cansam

No início temos:

deployment.yaml

Depois:

deployment.yaml
service.yaml
configmap.yaml
ingress.yaml
secret.yaml
pvc.yaml
...

Em determinado momento alguém pergunta:

— Não poderíamos empacotar isso?

Entra Helm.

Helm trabalha com Charts, templates e valores configuráveis.

Conceitualmente:

Chart
 |
 +-- templates
 |
 +-- values
 |
 +-- metadata

E aqui ocorre um ritual iniciático cloud-native:

  1. você aprende YAML;

  2. aprende templates;

  3. aprende templates que produzem YAML;

  4. recebe uma mensagem de erro;

  5. olha para o teto;

  6. reconsidera decisões profissionais;

  7. resolve;

  8. coloca no LinkedIn.


26. CRD: “eu também posso inventar objetos?”

Sim.

Uma das capacidades mais interessantes do Kubernetes são as Custom Resource Definitions.

Originalmente você trabalha com recursos como:

Pod
Service
Deployment

Com CRDs podemos estender a API com recursos específicos.

Conceitualmente:

Database
Certificate
KafkaCluster
Backup
MeuObjetoCorporativo

Isso revela que Kubernetes é mais que um mero lançador de containers.

Ele oferece uma espécie de framework declarativo extensível para sistemas de controle.

Essa mudança mental é importante.


27. Operator: o runbook ganhou pernas

Imagine o velho especialista.

Ele sabe:

SE A acontecer
   verifique B

SE B estiver assim
   execute C

SE C falhar
   tente D

Décadas de conhecimento operacional.

Um Operator tenta codificar conhecimento operacional específico usando o modelo de controllers e reconciliação do Kubernetes.

Simplificando:

Conhecimento operacional
          |
          v
       código
          |
          v
      Operator
          |
          v
observa → decide → reconcilia

É como se parte do runbook ganhasse vida.

Não elimina o especialista.

Muda o lugar onde parte do conhecimento dele vive.


28. CI/CD: ninguém deveria levar o deploy num disquete

O próximo passo natural é automação.

Temos:

Código
 |
Git
 |
Build
 |
Teste
 |
Imagem
 |
Registry
 |
Deploy
 |
Kubernetes

Entramos no território de CI/CD.

E depois aparece GitOps.

Em vez de alguém alterar manualmente produção:

OPERADOR
 |
kubectl
 |
PRODUÇÃO

podemos trabalhar com um modelo no qual o Git representa o estado desejado relevante:

Developer
   |
   v
  Git
   |
Pull Request
   |
Review
   |
   v
GitOps Controller
   |
   v
Cluster

Isso melhora possibilidades de:

  • rastreabilidade;

  • auditoria;

  • revisão;

  • versionamento;

  • recuperação;

  • consistência.

Mas lembre-se:

automatizar processo ruim produz desastre em velocidade industrial.


29. O que aquele roadmap deveria mostrar antes do Kubernetes

Aqui está minha principal crítica à figura.

Eu colocaria uma Fase Zero:

FASE ZERO

Linux
  |
processos
  |
filesystem
  |
CPU/memória
  |
networking
  |
TCP/IP
  |
DNS
  |
HTTP
  |
TLS
  |
containers
  |
images
  |
runtime
  |
KUBERNETES

Por quê?

Porque Kubernetes não aboliu o sistema operacional.

Nem aboliu rede.

Nem DNS.

Especialmente DNS.

Existe um antigo espírito maligno vagando pelos datacenters dizendo:

“It's always DNS.”

Quando você acha que não é DNS, eventualmente descobre que era DNS usando bigode falso.


30. Networking merece uma fase própria

Eu ampliaria o roadmap para incluir profundamente:

IP
CIDR
TCP
UDP
DNS
NAT
routing
TLS
Load Balancing
ClusterIP
NodePort
LoadBalancer
Ingress
CNI
NetworkPolicy

Porque um dos incidentes mais frustrantes é:

Pod: Running
Application: Healthy
Service: Exists

Usuário: NÃO FUNCIONA.

Então começa a expedição arqueológica.


31. Segurança de supply chain também precisa entrar

Em 2026 não basta perguntar:

“A imagem funciona?”

Precisamos perguntar:

Quem construiu essa imagem?
De onde veio?
Qual imagem base foi usada?
Possui vulnerabilidades?
Tem SBOM?
Foi assinada?
Quem pode publicar?
Foi adulterada?

Ou seja, o roadmap moderno precisa incluir:

  • scanning;

  • provenance;

  • SBOM;

  • assinatura;

  • admission policies;

  • least privilege;

  • gestão de secrets;

  • identidade de workloads;

  • atualização segura.

O container é conveniente justamente porque carrega muita coisa consigo.

E tudo aquilo que carregamos conosco também pode carregar problemas.


32. E o mainframe no meio dessa galáxia?

Aqui existe uma oportunidade fantástica para o COBOLzeiro.

Não pense:

Kubernetes
VERSUS
Mainframe

Pense:

                 INTERNET
                    |
              KUBERNETES
                    |
              APIs / serviços
                    |
          +---------+---------+
          |                   |
       CLOUD              MAINFRAME
                           |
                   +-------+-------+
                   |       |       |
                  CICS    IMS     Db2
                   |
                 COBOL

Kubernetes não precisa destruir o mainframe para justificar sua existência.

Um banco pode perfeitamente ter sistemas transacionais críticos em IBM Z enquanto utiliza Kubernetes para APIs, integração, canais digitais, serviços distribuídos, observabilidade e outras workloads.

O mundo corporativo real é híbrido.

A Millennium Falcon também não foi construída inteira pela mesma consultoria.

Provavelmente por isso funcionava.


33. O laboratório que eu faria para um COBOLzeiro

Aqui está o caminho prático.

Não faça 25 tutoriais desconectados.

Construa uma aplicação e faça-a evoluir.

Chamaremos:

BELLACOSA INTERGALACTIC BANK

Versão 1:

Frontend

Versão 2:

Frontend
   |
Backend

Versão 3:

Frontend
   |
Service
   |
Backend

Versão 4:

Ingress
   |
Frontend
   |
Service
   |
Backend
   |
Database

Depois acrescente:

ConfigMap
Secrets
PVC
Requests
Limits
Probes
RBAC
NetworkPolicy
Monitoring
Logging

Depois:

CI/CD

Depois:

GitOps

E somente então:

Helm
Operators
CRDs

Não tente aprender a galáxia inteira antes de visitar a Lua.


34. Agora destrua tudo

Esta é a etapa que falta em muitos cursos.

Faça o Pod morrer.

kubectl delete pod ...

Observe o que acontece.

Coloque memória insuficiente.

Quebre uma configuração.

Use uma imagem inexistente.

Quebre uma readiness probe.

Remova uma permissão.

Altere uma NetworkPolicy.

Crie problema de storage.

Observe:

Pending
ImagePullBackOff
CrashLoopBackOff
OOMKilled
Forbidden
Readiness probe failed

Para cada incidente pergunte:

O QUE aconteceu?

POR QUE aconteceu?

QUAL componente percebeu?

QUAL estado era desejado?

QUAL estado existia?

QUEM tentou reconciliar?

ONDE encontro evidência?

COMO evitar novamente?

Esse exercício ensina dez vezes mais do que decorar cinquenta comandos.


35. O COBOLzeiro possui uma vantagem escondida

O programador COBOL iniciante talvez olhe Kubernetes e pense que está começando do zero.

Não está.

Se ele está aprendendo o ecossistema mainframe simultaneamente, já está entrando em contato com perguntas universais:

Como programas são executados?

Como recursos são alocados?

Como identidade funciona?

Como permissões são verificadas?

Como dados persistem?

Como jobs são agendados?

Como falhas são diagnosticadas?

Como mudanças chegam à produção?

Como recuperamos alguma coisa que quebrou?

Essas perguntas atravessaram gerações de computadores.

As respostas mudaram.

As perguntas continuam surpreendentemente parecidas.


36. A tabela de tradução intergaláctica

Não como equivalência técnica, mas como pontes mentais:

Universo MainframeUniverso KubernetesIdeia em comum
JES/schedulingScheduler/Jobsexecução organizada de workloads
JCL/parâmetrosmanifests/configuraçãodeclarar como executar
PROCtemplates/Helmreutilização
RACFRBACautorização
WLMrequests/limits/schedulinggestão de recursos
Started Tasksserviços/workloads contínuasprocessos duradouros
Scheduler batchCronJobexecução periódica
datasets/storagePV/PVCpersistência
Sysplex/HAcluster/replicasdisponibilidade
SMF/RMF/logsmetrics/logs/tracesobservabilidade
RunbookOperatorconhecimento operacional

Novamente:

não são equivalentes.

Essa tabela é mapa turístico, não especificação de arquitetura.

Se você tentar usar um mapa turístico para fazer cirurgia, o resultado será digno dos Vogons.


37. Do iniciante ao arquiteto

Existe uma progressão interessante.

Nível 1

O aluno pergunta:

“Como crio um Pod?”

Nível 2

Pergunta:

“Como faço três réplicas?”

Nível 3

Pergunta:

“Por que esse Pod morreu?”

Nível 4

Pergunta:

“Por que ele continua morrendo?”

Nível 5

Pergunta:

“Por que nossa arquitetura permitiu que a morte desse Pod afetasse usuários?”

Nível 6

Pergunta:

“Como eliminamos essa classe inteira de falhas?”

Essa é a transformação.

COMANDO
   ↓
OBJETO
   ↓
PLATAFORMA
   ↓
OPERAÇÃO
   ↓
ARQUITETURA
   ↓
ENGENHARIA DE RESILIÊNCIA

38. Easter Egg: Kubernetes e o número 42

No Guia do Mochileiro das Galáxias, a resposta para a Grande Questão da Vida, do Universo e Tudo Mais é:

42

Depois descobriram que ninguém sabia exatamente qual era a pergunta.

Kubernetes possui uma versão corporativa disso.

O arquiteto pergunta:

— Quantas réplicas precisamos?

Consultor:

— Três.

— Por quê?

— Alta disponibilidade.

— Baseado em qual cálculo?

— ...

— Tráfego?

— ...

— SLO?

— ...

— capacidade?

— ...

— histórico de falhas?

— ...

— teste de carga?

— ...

Três virou o 42 da arquitetura cloud-native.

😆

A lição é excelente:

uma resposta tecnicamente plausível sem a pergunta correta continua sendo apenas uma resposta procurando uma justificativa.


39. Outra curiosidade: Kubernetes significa timoneiro

O nome vem do grego e remete à ideia de timoneiro/piloto.

Daí também o famoso leme no logotipo.

E isso é poeticamente perfeito.

Kubernetes não é o navio.

Não é a carga.

Não é o oceano.

Ele ajuda a conduzir a embarcação.

Só existe um detalhe que nenhum tutorial coloca em letras suficientemente grandes:

você ainda precisa saber navegar.

Kubernetes não elimina a necessidade de conhecer Linux, redes, storage, segurança, aplicações e sistemas distribuídos.

Na realidade, em ambientes complexos ele pode exigir que você compreenda um pouco de todos eles simultaneamente.


40. O segredo final do roadmap

A imagem original termina aproximadamente com a ideia:

consistência + prática = especialista Kubernetes.

Eu acrescentaria algumas variáveis:

TEORIA
   +
PRÁTICA
   +
ERRO
   +
OBSERVAÇÃO
   +
TROUBLESHOOTING
   +
DOCUMENTAÇÃO
   +
CURIOSIDADE
   +
INCIDENTES
   +
CAFÉ
   =
EXPERIÊNCIA

Principalmente os erros.

Porque executar:

kubectl get pods

é fácil.

Interpretar:

NAME             READY   STATUS
app-7d98         0/1     CrashLoopBackOff

é outra história.

E descobrir que o Pod não era a causa, que a aplicação estava falhando porque não conseguia alcançar uma dependência, que a dependência estava inacessível por causa de uma alteração de rede introduzida no deploy anterior...

Aí temos engenharia.


☕ Epílogo — O COBOLzeiro pega sua toalha

Nosso programador começou a viagem olhando para um roadmap colorido e pensando:

“Pod? Helm? Ingress? CRD? Operator? Eu só queria aprender Kubernetes.”

Agora ele sabe que Kubernetes não é uma coleção de palavras estranhas.

É uma resposta moderna para um conjunto de problemas profundamente antigos:

executar, distribuir, controlar, proteger, observar, recuperar e evoluir software.

O mainframe resolveu muitos desses problemas dentro de seu próprio universo durante décadas.

Unix resolveu outros.

Cloud resolveu outros.

Containers mudaram novamente a unidade de distribuição.

Kubernetes apareceu para coordenar esse novo zoológico.

E talvez essa seja a maior lição para um programador COBOL entrando no mundo cloud-native:

não jogue fora aquilo que você aprendeu.

Traduza.

Quando encontrar RBAC, lembre-se das perguntas que RACF ensinou a fazer.

Quando encontrar requests e limits, pense nas questões que WLM levanta.

Quando encontrar Jobs, recorde o mundo batch.

Quando encontrar observabilidade, pense em RMF, SMF, logs e diagnóstico.

Quando encontrar Operators, pense no velho runbook do especialista que sabia exatamente o que fazer quando determinada luz vermelha acendia.

Não porque essas tecnologias sejam iguais.

Mas porque a história da computação é cheia de novas respostas para perguntas antigas.

E algum dia, provavelmente às 03:17 da manhã, você encontrará isto:

CrashLoopBackOff

O jovem aprendiz perguntará:

— Mestre, qual comando resolve isso?

Você tomará um gole de café, olhará calmamente para o terminal e responderá:

Nenhum. Primeiro precisamos descobrir o que aconteceu.

Nesse instante terá ocorrido algo muito mais importante que aprender Kubernetes.

Você terá aprendido a pensar como alguém de produção.

E, como diria o Guia do Mochileiro das Galáxias, enquanto o cluster inteiro estiver pegando fogo:

+---------------------------------------+
|                                       |
|          NÃO ENTRE EM PÂNICO          |
|                                       |
|      kubectl get events               |
|                                       |
|          E LEVE UMA TOALHA            |
|                                       |
+---------------------------------------+

☕🚀

Bem-vindo ao Kubernetes, COBOLzeiro.

A galáxia continua distribuída, eventualmente consistente, estranhamente documentada e, por algum motivo que ninguém conseguiu explicar satisfatoriamente, ainda depende de DNS.

quarta-feira, 15 de julho de 2026

A Corrida pelo Último Megawatt: Nubank, Itaú, Santander, AWS, IA e o Dia em que o Mainframe Descobriu que seu Novo Concorrente Não Era a Cloud — Era a Usina Elétrica

 

Bellacosa Mainframe e a corrida pelo ultimo megawatt

☕ Um Café no Bellacosa Mainframe

A Corrida pelo Último Megawatt: Nubank, Itaú, Santander, AWS, IA e o Dia em que o Mainframe Descobriu que seu Novo Concorrente Não Era a Cloud — Era a Usina Elétrica

⚡ AWS, Gravity, Datomic, Kubernetes, IBM Z, LinuxONE, IA, data centers, energia, contingência e o estranho futuro em que milhões de transações bancárias disputam megawatts com GPUs — enquanto o coronel Potter pergunta quem foi o gênio que colocou o plano de DR inteiro na mesma região


São 06h13.

Algum lugar do interior de São Paulo.

Dentro de uma barraca improvisada que inexplicavelmente contém três monitores, um terminal 3270, um cluster Kubernetes e uma cafeteira que certamente reprovaria numa auditoria elétrica, o radar começa a apitar.

BIP.

BIP.

BIP.

Radar O'Reilly entra correndo.

— Coronel! Temos problemas!

Sherman Potter nem levanta os olhos.

— Coreia?

— Pior.

— Produção?

— Muito pior.

— Fale, Radar.

Ele coloca um relatório sobre a mesa.

NUBANK
AWS
ITAÚ
SANTANDER
IA
DATA CENTERS
GPU
MAINFRAME

DEMANDA: ↑↑↑↑↑

ENERGIA DISPONÍVEL: ¯\_(ツ)_/¯

Hawkeye Pierce aparece com uma caneca.

— Quem foi atingido?

Radar responde:

— Ninguém ainda.

— Então por que estamos acordados?

— Porque todos querem construir data centers ao mesmo tempo.

Hawkeye observa o documento.

— Qual o diagnóstico?

Do outro lado da barraca, um velho sysprog que ninguém lembra de ter contratado olha para o RMF e responde:

Falta de megawatt.

Silêncio.

Potter franze a testa.

— Achei que estávamos falando de computadores.

O sysprog toma o café.

— Coronel, chegamos ao ponto em que falar de computadores significa falar de usinas elétricas.

Bem-vindo ao M*A*S*H tecnológico.

Hoje nosso paciente é o sistema bancário brasileiro.

E talvez precisemos operar.


🩺 1. O diagnóstico mudou

Durante décadas, quando discutíamos capacidade bancária, falávamos de:

CPU
MIPS
MSU
MEMÓRIA
I/O
STORAGE
TPS

Depois veio a cloud.

O discurso mudou para:

vCPU
containers
pods
nodes
autoscaling
serverless
regions
availability zones

Parecia que havíamos eliminado a limitação física.

Precisava de mais capacidade?

scale-out

Mais?

scale-out

Mais?

scale-out

Só havia um pequeno problema.

Cada scale-out eventualmente precisa virar:

CPU REAL
RAM REAL
SSD REAL
SWITCH REAL
RACK REAL
ENERGIA REAL
REFRIGERAÇÃO REAL

E eis a grande ironia da cloud:

o computador desapareceu da visão do programador, mas nunca desapareceu do planeta.

A nuvem é uma extraordinária abstração de recursos físicos.

Não uma violação das leis da termodinâmica.


🩺 2. O primeiro paciente: Nubank

O Nubank talvez seja o melhor exemplo brasileiro dessa transformação.

Ele não começou com um grande legado IBM Z para depois migrar.

Nasceu digital.

Sua história tecnológica pública inclui:

AWS
Clojure
Datomic
Kafka
Kubernetes
microservices
machine learning

E chegou a uma escala impressionante.

Em abril de 2025, a engenharia do Nu revelou operar mais de 4.000 microsserviços, processando aproximadamente 72 bilhões de eventos Kafka diariamente e lidando rotineiramente com milhões de requisições por segundo. (Building Nubank)

Em julho de 2026, outra publicação trouxe um número quase surreal:

mais de 21.000 databases em produção, distribuídos entre Brasil, México e Colômbia.

A camada de database é administrada diretamente por apenas cinco engenheiros, graças a automação, self-service e ownership distribuído. (Building Nubank)

O COBOLzeiro lê:

21.000 DATABASES

e pergunta:

— Vocês estão bem?

Sim.

É uma consequência da granularidade de uma arquitetura de microsserviços.


🩺 3. O dia em que a cloud mostrou que também possui teto

A história técnica do Nubank é particularmente interessante porque seu crescimento obrigou a empresa a enfrentar limites de capacidade e quotas.

Nos primeiros tempos, infraestrutura concentrada em poucas contas AWS foi apelidada internamente de:

Pangeia.

Um supercontinente.

            PANGEIA

    ┌────────────────────┐
    │     AWS ACCOUNT    │
    │                    │
    │   serviços         │
    │   Datomic          │
    │   Kafka            │
    │   Kubernetes       │
    │   serviços         │
    │   serviços         │
    └────────────────────┘

Funcionou.

Até crescer demais.

A concentração aumentava blast radius, complicava isolamento entre ambientes e pressionava limites.

Então surgiu a:

Continental Drift.

A Deriva Continental.

         PANGEIA
            |
            ↓

 ┌────────┐ ┌────────┐ ┌────────┐
 │ACCOUNT │ │ACCOUNT │ │ACCOUNT │
 │   A    │ │   B    │ │   C    │
 └────────┘ └────────┘ └────────┘

Domínios separados.

Recursos separados.

Falhas mais isoladas.

Quotas menos concentradas. (Building Nubank)

É arquitetura distribuída aprendendo uma das regras mais antigas da engenharia:

não coloque todos os ovos na mesma cesta.

O mainframe chama Potter.

— Coronel?

— Sim?

— Parallel Sysplex mandou lembranças.


🩺 4. Mas atenção: Nubank NÃO esgotou a AWS brasileira

Aqui precisamos colocar uma etiqueta vermelha no prontuário.

NUBANK ESGOTOU TODA A AWS BRASIL

FALSO.

Não há evidência disso.

O que relatos técnicos do Nubank mostram é que determinados modelos de crescimento chegaram a encontrar limites de recursos/capacidade.

Isso é diferente.

Imagine:

AWS BRASIL

████████████████████████████████████████

Nubank não fez:

████████████████████████████████████████
NUBANK

A situação é mais parecida com:

PRECISO:

tipo específico de recurso
+
determinada região/AZ
+
determinada configuração
+
grande quantidade
+
agora

E naquele contexto a resposta pode ser:

CAPACITY NOT AVAILABLE

A própria documentação da AWS reconhece que Availability Zones podem tornar-se capacity constrained, a ponto de o provedor restringir criação de determinados recursos zonais. (Documentação AWS)

Cloud possui estoque.

Só que você não vê o almoxarifado.


🩺 5. Entra Itaú — e agora a coisa fica realmente grande

O segundo paciente é o Itaú Unibanco.

E aqui precisamos atualizar uma informação importante.

A intenção pública divulgada pelo banco é realmente radical.

Durante o AWS re:Invent 2024, em dezembro de 2024, Ricardo Guerra, CIO do Itaú, anunciou o plano de migrar 100% dos sistemas para cloud, incluindo sistemas que atualmente executam no mainframe.

Na ocasião, 65% das aplicações já estavam em cloud.

A meta divulgada foi:

2017
  |
início da jornada
  |
  v
2024
  |
65% aplicações cloud
  |
  v
2028
  |
migração prevista
  |
  v
2030
  |
estabilização prevista

Portanto, a história do 2030 possui uma nuance importante.

A migração foi anunciada para 2028, seguida de aproximadamente dois anos previstos para estabilização. (BR About Amazon)

E estamos falando do coração do banco.

Os 35% restantes descritos em 2024 eram fundamentalmente rotinas contábeis — justamente a lógica mais profundamente associada ao core. (BR About Amazon)

Isso muda completamente nossa discussão.


🩺 6. Porque Itaú não é uma fintech de garagem

Migrar um sistema web é uma coisa.

Migrar:

CORE
CONTABILIDADE
LEDGER
TRANSAÇÕES
BATCH
INTEGRAÇÕES
DÉCADAS DE REGRAS

é outra.

É quase como anunciar:

“Vamos trocar o motor do avião.”

Pergunta:

— Quando?

Resposta:

— Durante o voo.

Hawkeye:

— Excelente. Quem trouxe paraquedas?

O Itaú afirma que, desde o início dessa transformação, incidentes de alto impacto na experiência dos clientes diminuíram 99%, enquanto o custo por transação caiu 55%. (BR About Amazon)

O projeto utiliza inclusive IA generativa para ajudar na modernização de aplicações mainframe através do Amazon Q Developer. (BR About Amazon)

Ou seja:

MAINFRAME
   |
   v
ANÁLISE / MODERNIZAÇÃO
   |
   +── IA GENERATIVA
   |
   v
AWS

Isso é uma mudança arquitetural monumental.


🩺 7. Agora entra Santander carregando Gravity

O Santander escolheu outro caminho fascinante.

O nome é:

Gravity.

Em 19 de junho de 2025, o Santander anunciou ter concluído a migração de toda a infraestrutura tecnológica core da operação espanhola para Gravity, sua plataforma cloud-based de core banking. (Santander)

E a escala espanhola já é enorme:

> 4,3 bilhões
transações/ano

picos:
~33.000 transações/segundo

O Santander anunciou ainda que Brasil e México estavam entre os próximos rollouts; com esses avanços, esperava atingir aproximadamente 80% da infraestrutura tecnológica core global migrada para cloud. (Santander)

Quando concluída, Gravity deverá lidar com mais de:

1 trilhão de operações técnicas por ano.

(Santander)

Radar olha para Potter.

— Coronel, acho que vamos precisar de outra extensão elétrica.


🩺 8. A parte brilhante do Gravity: execução paralela

Aqui o COBOLzeiro deveria prestar muita atenção.

O Santander não simplesmente diz:

MAINFRAME OFF

CLOUD ON

BOA SORTE.

Gravity permite processamento simultâneo.

Conceitualmente:

               TRANSAÇÃO
                   |
          ┌────────┴────────┐
          |                 |
          v                 v
     MAINFRAME            CLOUD
          |                 |
          └───────┬─────────┘
                  |
               COMPARE
                  |
           RESULTADO IGUAL?
                  |
                 SIM
                  |
              CUTOVER

O Santander descreve justamente capacidade de processar simultaneamente em mainframe e cloud, permitindo testes em tempo real antes da transição definitiva. (Santander)

Para quem viveu migração bancária:

isso é música.

Você não confia na apresentação do PowerPoint.

Você reconcilia.


🩺 9. E então chegam as fintechs

Agora acrescente:

Nubank
Mercado Pago
PicPay
Inter
C6
Neon
fintech A
fintech B
fintech C

Mais:

e-commerce
streaming
governo
SaaS
telecom
indústria

Todos querendo cloud.

O problema começa a parecer:

                     DATACENTER

 BANCO ────────────────┐
 FINTECH ──────────────┤
 VAREJO ───────────────┤
 GOVERNO ──────────────┼──► COMPUTE
 TELECOM ──────────────┤
 STREAMING ────────────┤
 SaaS ─────────────────┘

Até aí tudo bem.

Então alguém abre a porta.

Entra um sujeito carregando 20.000 GPUs.

— Bom dia.

— Quem é você?

Inteligência Artificial.

Hawkeye fecha os olhos.

— Estamos ferrados.


🩺 10. IA mudou a unidade de medida

Aplicações empresariais tradicionais consomem energia.

Mas infraestrutura moderna de IA aumentou dramaticamente a densidade computacional.

Agora falamos de:

GPU
GPU
GPU
GPU
GPU
GPU

+
HBM
+
NETWORK FABRIC
+
STORAGE
+
COOLING

O gargalo começa a migrar de:

TEMOS CPU?

para:

TEMOS ENERGIA?

e depois:

TEMOS SUBESTAÇÃO?

e finalmente:

A REDE DE TRANSMISSÃO CONSEGUE ENTREGAR?

A Empresa de Pesquisa Energética brasileira já trata data centers explicitamente como grandes cargas cujo crescimento afeta diretamente o planejamento de expansão da transmissão. (EPE)

Isso é importantíssimo.

Data center deixou de ser apenas assunto de CIO.

Virou assunto de planejamento energético nacional.


⚡ 11. O Brasil descobriu o problema

E aqui os números ficam extraordinários.

Depois do REDATA, instituído em setembro de 2025, ocorreu forte crescimento dos pedidos relacionados a novos data centers.

Segundo a EPE, em apenas pouco mais de 60 dias apareceram 6,4 GW adicionais em projetos solicitando estudos para conexão à Rede Básica.

O pipeline passou de:

SET/2025
19,8 GW

   ↓

NOV/2025
26,2 GW

(EPE)

26,2 GIGAWATTS.

Agora não estamos mais discutindo servidor.

Estamos discutindo infraestrutura elétrica em escala industrial.

E a própria EPE ressalva corretamente que isso é pipeline de projetos, não capacidade que certamente será construída: implantação depende de transmissão, telecomunicações, viabilidade financeira, garantias e outros fatores. (EPE)


⚡ 12. Onde estão querendo colocar tudo isso?

Principalmente onde você provavelmente imaginou:

São Paulo.

Segundo a EPE, existe forte concentração de projetos no estado, especialmente nas regiões metropolitanas de:

SÃO PAULO

     e

CAMPINAS

(EPE)

Não é coincidência.

A região concentra:

  • mercado financeiro;

  • empresas;

  • telecomunicações;

  • fibras;

  • IXs;

  • mão de obra;

  • infraestrutura;

  • consumidores;

  • provedores;

  • ecossistema tecnológico.

São Paulo é para processamento brasileiro algo próximo do que Wall Street é para finanças americanas:

gravidade.

Quanto mais infraestrutura existe, mais infraestrutura quer ficar perto dela.


⚡ 13. Mas isso cria concentração geográfica

Imagine:

BRASIL

                  Brasília
                     ●

       São Paulo
     ████████████

        Campinas
      █████████

 Rio ●

 Sul ●

 Nordeste ●

É apenas uma representação conceitual, não um mapa quantitativo.

Mas o problema é real.

Concentração produz eficiência.

Também produz risco.

Energia.

Fibra.

Subestações.

Eventos climáticos.

Falhas regionais.

Interrupções de backbone.

Se boa parte da infraestrutura crítica brasileira convergir para o mesmo eixo geográfico, surge uma pergunta desconfortável:

Quantas arquiteturas “distribuídas” estão fisicamente concentradas nos mesmos lugares?

Essa é uma pergunta extraordinariamente importante.


⚡ 14. AWS Brasil também possui geografia

A AWS possui a região brasileira sa-east-1.

Ela contém atualmente três Availability Zones:

sae1-az1
sae1-az2
sae1-az3

(Documentação AWS)

Cada AZ consiste em um ou mais data centers fisicamente separados, com energia, rede e conectividade redundantes; as zonas são conectadas por redes metropolitanas de baixa latência e alta largura de banda. (Documentação AWS)

Essa arquitetura permite:

          REGION

     ┌──────┼──────┐
     │      │      │
    AZ1    AZ2    AZ3

Se AZ1 falhar:

AZ1 💥

AZ2 ✓
AZ3 ✓

desde que sua aplicação tenha sido realmente projetada para isso.

Esse último pedaço da frase deveria estar escrito em letras garrafais.


🩺 15. “Estamos na AWS” NÃO é plano de contingência

Esta talvez seja a lição mais importante do artigo.

Alguém pergunta:

— Temos DR?

Resposta:

— Sim. Estamos na cloud.

ERRADO.

Cloud é infraestrutura.

DR é arquitetura.

Você pode construir:

APPLICATION
     |
    AZ1

e possuir um belo single point of failure.

Melhor:

       APPLICATION
          |
      ┌───┴───┐
      │       │
     AZ1     AZ2

Melhor ainda para certos sistemas críticos:

             APPLICATION
                  |
       ┌──────────┴──────────┐
       │                     │
    REGION A              REGION B
       │                     │
    AZ1/AZ2               AZ1/AZ2

E em casos extremos:

AWS
 |
 +── REGION A
 +── REGION B

PRIVATE CLOUD

IBM Z

A pergunta não é:

“Qual cloud você usa?”

É:

“Qual falha você consegue sobreviver?”


🩺 16. Multi-cloud resolve?

Talvez.

Mas existe um preço.

Você pode fazer:

              BANK
                |
       ┌────────┼────────┐
       │        │        │
      AWS      GCP     AZURE

Bonito.

Agora mantenha:

IAM
network
database
observability
deployment
security
skills
CI/CD
DR
data synchronization

em três plataformas.

Parabéns.

Você acabou de trocar:

RISCO DE CONCENTRAÇÃO

por:

COMPLEXIDADE OPERACIONAL

Arquitetura é frequentemente escolher qual problema você prefere possuir.


⚡ 17. O sistema elétrico brasileiro entrou oficialmente no war room

A EPE projeta que o consumo total de eletricidade brasileiro poderá chegar a aproximadamente 939 TWh em 2035 no cenário de referência.

O crescimento médio projetado é 3,3% ao ano. (EPE)

Mas existe algo mais interessante.

Cargas especiais — incluindo data centers, hidrogênio e eletromobilidade — podem representar parcela significativa da demanda futura, dependendo do cenário.

O próprio planejamento já considera data centers explicitamente. (EPE)

E o Brasil prevê cerca de:

R$ 120 bilhões

em investimentos no sistema de transmissão até 2035, no cenário de referência do PDE. (EPE)

O velho sysprog observa.

— Então precisamos fazer upgrade do backbone.

O engenheiro elétrico responde:

— Exatamente.

— Fibra?

— Não.

— Ethernet?

— Não.

— Então o quê?

500 kV.

Silêncio.


⚡ 18. São Paulo já precisa abrir espaço elétrico

A EPE informou que estudos concluídos recomendaram cerca de R$ 1,6 bilhão em novos investimentos de transmissão para São Paulo, capazes de liberar aproximadamente 4 GW de margem de conexão.

Outros estudos poderiam acrescentar cerca de mais 5 GW de margem no estado. (EPE)

Veja como a conversa evoluiu.

Ontem:

Precisamos de mais EC2.

Hoje:

Precisamos de mais 4 GW.

O programador pede:

kubectl scale deployment

e em algum lugar um engenheiro elétrico responde:

Calma, campeão.


🩺 19. E então IBM entra no centro cirúrgico

Agora chegamos à IBM.

Seria tentador imaginar IBM olhando Itaú, Santander e Nubank e dizendo:

CLOUD É MODA.

Não.

A resposta estratégica da IBM é muito mais sofisticada:

HYBRID CLOUD.

Não:

MAINFRAME
    OU
CLOUD

mas:

              ENTERPRISE

                  |
       ┌──────────┼──────────┐
       │          │          │
       v          v          v
     IBM Z      CLOUD     LinuxONE
       │          │          │
     CICS     Kubernetes    Linux
     COBOL      APIs       Containers
     Db2         AI          AI
       │          │          │
       └──────────┼──────────┘
                  |
                DATA

IBM percebeu que tentar impedir cloud seria inútil.

A estratégia é fazer IBM Z participar do ecossistema moderno.


🩺 20. z17 entra na guerra

E em 7 de julho de 2026 aconteceu algo simbolicamente importante.

IBM expandiu z17 e LinuxONE 5 com configurações single-frame e rack-mount.

Pela primeira vez, rack mount passou a estar disponível através de toda essa família Z/LinuxONE. (IBM Newsroom)

Isso significa colocar arquitetura Z mais naturalmente dentro da infraestrutura contemporânea de data centers.

E o comunicado da IBM toca justamente no nosso assunto:

organizações enfrentando disponibilidade extremamente baixa de espaço em data centers e custos elevados de capacidade. (IBM Newsroom)

IBM está dizendo:

Quer falar de densidade computacional? Ótimo. Vamos conversar.


⚡ 21. O mainframe encontra sua velha arma: densidade

O argumento histórico de sistemas distribuídos era:

commodity hardware
+
scale-out
=
economia

Mas quando chegamos a milhares de servidores:

SERVERS
+
NETWORK
+
STORAGE
+
COOLING
+
ENERGY
+
RACKS
+
SOFTWARE
+
OPERATIONS

precisamos mudar a métrica.

Não pergunte apenas:

Quanto custa uma VM?

Pergunte:

TRANSAÇÕES / WATT

TRANSAÇÕES / RACK

TRANSAÇÕES / m²

TRANSAÇÕES / ADMINISTRADOR

TRANSAÇÕES / DÓLAR

Agora IBM Z volta a uma conversa na qual sempre foi extremamente confortável.

Consolidação.


⚡ 22. LinuxONE torna a discussão ainda mais divertida

Porque alguém pode responder:

— Mas não quero COBOL.

IBM:

— Tudo bem.

— Quero Linux.

— Temos.

— Containers.

— Temos.

— Kubernetes.

— Temos.

— Java.

— Temos.

— Open source.

— Temos.

CLOUD-NATIVE
     |
     v
CONTAINERS
     |
     v
LINUX
     |
     v
LINUXONE

Ou seja, a batalha não é necessariamente:

MAINFRAME vs CLOUD

Pode ser:

QUAL ARQUITETURA
EXECUTA ESTE WORKLOAD
COM MELHOR

CUSTO
RESILIÊNCIA
DENSIDADE
SEGURANÇA
LATÊNCIA
ENERGIA?

Essa é uma discussão muito mais madura.


🩺 23. O futuro provavelmente será heterogêneo

Não acredito que o banco de 2035 necessariamente terá:

100% MAINFRAME

nem:

100% PUBLIC CLOUD

A tendência mais interessante é:

                    BANCO 2035

                        |
       ┌────────────────┼────────────────┐
       │                │                │
       v                v                v
     IBM Z          PUBLIC CLOUD     PRIVATE CLOUD
       │                │                │
   ledger/core        digital           dados
   settlement         analytics          IA
   high TPS             APIs          containers
       │                │                │
       └────────────────┼────────────────┘
                        |
                    APIs/EVENTS

Santander pode avançar muito mais na direção cloud.

Itaú declarou uma estratégia extremamente agressiva de migração.

Nubank já nasceu cloud-native.

Outras instituições poderão escolher misturas diferentes.

E isso é saudável.


⚠️ 24. Existe, porém, um risco novo: concentração sistêmica

Aqui está algo que merece atenção de bancos centrais, reguladores, CIOs e arquitetos.

No passado:

BANCO A → DC A

BANCO B → DC B

BANCO C → DC C

Agora imagine:

BANCO A ───┐
BANCO B ───┤
FINTECH A ─┤
FINTECH B ─┼──► HYPERSCALER / REGION
VAREJO ────┤
GOVERNO ───┤
SAAS ──────┘

Individualmente, cada empresa pode ter aumentado sua resiliência.

Coletivamente, podemos ter criado uma nova concentração.

Isso é o paradoxo.

Diversificação lógica pode esconder concentração física.

Dez bancos podem possuir arquiteturas diferentes...

executando em instalações que dependem dos mesmos corredores de fibra, da mesma região metropolitana ou de partes relacionadas do mesmo sistema elétrico.


⚠️ 25. E temos soberania

Outro problema.

Dados financeiros são infraestrutura estratégica.

Perguntas inevitáveis surgem:

Onde estão os dados?

Quem controla a infraestrutura?

Quem fabrica os processadores?

Quem controla o hypervisor?

Quem controla o software?

Quem possui as chaves?

Quem consegue desligar?

Qual legislação prevalece?

Cloud traz eficiência extraordinária.

Mas concentração em empresas estrangeiras também introduz questões de soberania tecnológica.

Isso não significa:

“cloud estrangeira é ruim”.

Significa:

infraestrutura crítica exige análise geopolítica além da análise técnica.

O CIO de 2035 precisará conversar com:

CISO
CFO
regulador
engenheiro elétrico
jurídico
geopolítica

O emprego ficou mais interessante.


⚠️ 26. Água também entra na conversa

Data centers precisam dissipar calor.

Dependendo da tecnologia de refrigeração, disponibilidade hídrica também pode ser relevante.

Então o site selection passa a considerar:

ENERGIA
+
ÁGUA
+
FIBRA
+
LATÊNCIA
+
TERRENO
+
IMPOSTOS
+
CLIMA
+
RISCO
+
MÃO DE OBRA

O data center moderno é quase uma cidade industrial.

A aplicação continua dizendo:

POST /payment

Mas atrás dela pode existir uma infraestrutura de centenas de milhões ou bilhões.


⚡ 27. A IA piora tudo — e pode ajudar

Aqui existe outro paradoxo maravilhoso.

IA aumenta brutalmente demanda computacional.

Mas IA também pode otimizar:

cooling
capacity
scheduling
energy
fraud
operations
predictive maintenance

Então:

IA
 |
 +── consome energia
 |
 └── ajuda a economizar energia

M*A*S*H teria orgulho.

Criamos um paciente que também trabalha no hospital.


🩺 28. Como deveria ser a contingência bancária?

Para um sistema realmente crítico, eu pensaria em camadas.

Nível 1 — aplicação

retry
timeout
circuit breaker
idempotency

Nível 2 — compute

multiple instances
autoscaling

Nível 3 — AZ

AZ A
AZ B
AZ C

Nível 4 — região

REGION A
REGION B

Nível 5 — plataforma

Dependendo do risco:

PUBLIC CLOUD
+
PRIVATE INFRASTRUCTURE

Nível 6 — dados

replication
backup
immutable backup
reconciliation

Nível 7 — operação

runbook
war room
chaos testing
DR exercise

Porque existe uma diferença enorme entre:

TEMOS DR

e:

TESTAMOS DR NA SEMANA PASSADA.

A segunda frase vale muito mais.


🩺 29. E não esqueça o modo degradado

Bancos deveriam perguntar:

Se 30% da infraestrutura desaparecer, precisamos realmente desligar 100% do banco?

Talvez não.

Imagine:

NORMAL MODE

PIX
CARTÃO
INVESTIMENTOS
EXTRATOS
MARKETING
RECOMENDAÇÕES
CHATBOT
ANALYTICS

Durante crise:

SURVIVAL MODE

PIX
CARTÃO
SALDO
AUTENTICAÇÃO

todo o resto:
WAIT

Aviação, telecomunicações e sistemas críticos conhecem bem esse conceito.

Preservar funções essenciais pode ser melhor que tentar manter tudo e perder tudo.


🩺 30. A grande pergunta do iniciante COBOL

Depois de tudo isso, o jovem programador pergunta:

— Então mainframe venceu?

Não.

— Cloud venceu?

Também não.

— Então quem venceu?

O velho sysprog aponta para a tomada.

— Ele.

Porque:

COBOL precisa energia.

CICS precisa energia.

Db2 precisa energia.

Kubernetes precisa energia.

Datomic precisa energia.

Kafka precisa energia.

GPU precisa MUITA energia.

Não existe:

cloud computing

sem:

electricity

A física é o sistema operacional abaixo de todos os sistemas operacionais.


☕ 31. O verdadeiro capacity planner de 2035

Talvez o capacity planner futuro não esteja olhando apenas:

CPU 73%

Ele estará olhando:

CPU ............ 73%

GPU ............ 91%

POWER .......... 87%

COOLING ........ 79%

GRID CAPACITY .. 93%

WATER .......... 68%

CARBON ......... 74%

NETWORK ........ 61%

E então perguntará:

Posso executar esse treinamento de IA agora?

Resposta:

JOB HELD

REASON:

POWER CAPACITY

O velho JES2 começa a rir em algum lugar.


🏥 Epílogo — 23h47 no M*A*S*H

Radar entra novamente.

— Coronel!

Potter olha assustado.

— O que caiu agora?

— Nada.

— Então por que está correndo?

— O pessoal da aplicação pediu mais 5.000 GPUs.

Potter olha para Hawkeye.

Hawkeye olha para B.J.

B.J. olha para Klinger.

Klinger, inexplicavelmente vestido de eletricista, pergunta:

— Quantos megawatts?

Radar consulta o papel.

Silêncio.

Potter suspira.

— Ligue para a cloud.

Radar pega o telefone.

Espera.

Desliga.

— E então?

— Disseram que precisamos falar com a concessionária.

O velho sysprog começa a rir.

Hawkeye pergunta:

— Qual a graça?

Ele abre um relatório antigo.

Na capa:

CAPACITY PLANNING
IBM MAINFRAME
1987

— Passamos quarenta anos tentando explicar que recurso computacional não é infinito.

Toma o último gole do café.

— A cloud finalmente concordou conosco.

Potter aponta para o mapa do Brasil.

São Paulo.

Campinas.

Fibra.

Subestações.

AWS.

Bancos.

Fintechs.

IA.

Data centers.

Linhas de transmissão.

Usinas.

E finalmente percebe que o diagrama correto nunca foi:

CLIENTE
  |
 APP
  |
CLOUD

Era:

                    CLIENTE
                       |
                      APP
                       |
                      API
                       |
                 MICROSERVIÇOS
                       |
             KUBERNETES / IBM Z
                       |
                DATA CENTER
                       |
                    RACK
                       |
                    CPU/GPU
                       |
                 SUBESTAÇÃO
                       |
                  TRANSMISSÃO
                       |
                    GERAÇÃO
                       |
                       ⚡

E lá embaixo, escondido sob todas as abstrações modernas, estava o verdadeiro ROOT.

Não Kubernetes.

Não AWS.

Não Clojure.

Não COBOL.

Não z/OS.

Não Linux.

Mas:

//POWER    JOB
//         EXEC PGM=ELETRICIDADE

Sem ele:

IEF450I CLOUD - ABEND=S0WATT

Hawkeye observa a tela.

— Podemos reiniciar?

O engenheiro elétrico responde:

— A usina?

— É.

— Não recomendo.

Potter fecha o prontuário.

Diagnóstico final

O futuro bancário brasileiro não será decidido apenas pela disputa:

mainframe versus cloud.

Será decidido pela capacidade de combinar computação, energia, telecomunicações, resiliência, segurança, soberania, economia e arquitetura.

O Nubank mostrou que uma instituição cloud-native pode alcançar escala bancária monumental.

O Itaú declarou uma rota para levar até seu coração transacional para cloud.

O Santander está transformando seu core através do Gravity.

AWS e outras hyperscalers continuam expandindo infraestrutura.

IBM responde apostando em hybrid cloud, IA, LinuxONE, z17 e densidade computacional.

E a IA acrescenta uma demanda gigantesca que nenhum capacity planner bancário de 1990 imaginaria.

Enquanto isso, o Brasil possui projetos de data centers que somavam 26,2 GW de pedidos em processo no MME em novembro de 2025, embora apenas uma fração disso necessariamente venha a se materializar. São Paulo concentra grande parte dessa corrida e já exige bilhões em expansão da transmissão. (EPE)

Portanto, talvez a grande discussão da próxima década não seja:

“COBOL ou Java?”

Nem:

“IBM Z ou AWS?”

Nem mesmo:

“Mainframe ou Kubernetes?”

Talvez seja:

“Onde estão os próximos 500 megawatts, quanto custam, como chegam até o data center e o que acontece com meu banco se eles desaparecerem?”

E quando essa pergunta finalmente chegar à reunião de arquitetura, haverá um velho sysprog no fundo da sala.

Ele não dirá nada.

Apenas abrirá o RMF.

Pegará o café.

E sorrirá.

Porque, depois de cinquenta anos de revoluções tecnológicas, alguém finalmente redescobriu a primeira lei não escrita do CPD:

Você pode virtualizar o servidor. Pode abstrair o storage. Pode containerizar a aplicação. Pode distribuir o banco. Pode chamar o datacenter de cloud. Pode até pedir para uma IA escrever o código.

Mas ainda não inventaram autoscaling para a tomada.

Fim do café.

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...