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

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.

sexta-feira, 10 de julho de 2026

Kubernetes sem Mistérios : Os 50 Erros que Derrubam Clusters em Produção (e que um Profissional IBM Z já Aprendeu a Evitar Há Décadas)

Bellacosa Mainframe apresenta kubernetes sem misterios



☕ Um Café no Bellacosa Mainframe

Kubernetes sem Mistérios 

Os 50 Erros que Derrubam Clusters em Produção (e que um Profissional IBM Z já Aprendeu a Evitar Há Décadas)

Existe uma curiosidade interessante.

Muitos profissionais enxergam Kubernetes como uma tecnologia revolucionária.

Ela realmente é.

Mas existe outra forma de enxergá-la.

Para quem trabalhou anos em Mainframe, Kubernetes parece muito mais uma redescoberta de conceitos que IBM já aplicava há décadas.

Disponibilidade.

Balanceamento.

Isolamento.

Escalonamento.

Segurança.

Observabilidade.

Recuperação.

Controle de acesso.

Versionamento.

Rollback.

Tudo isso sempre existiu.

A diferença é que hoje esses conceitos aparecem usando containers, pods e YAML.

No IBM Z eles aparecem como:

  • JES2

  • WLM

  • RACF

  • Sysplex

  • CICS

  • Db2

  • GDG

  • VSAM

  • SMF

  • RMF

O objetivo continua exatamente o mesmo:

Fazer sistemas críticos permanecerem funcionando.


O grande problema

Criar um cluster Kubernetes é extremamente fácil.

Rodar um cluster durante cinco anos, sem interrupções relevantes, é extremamente difícil.

Quase todos os grandes incidentes em produção acontecem por pequenas decisões aparentemente inocentes.

É exatamente isso que o infográfico demonstra.


BLOCO 1

Cluster & Infrastructure

Erro 1

Um único Worker Node

Imagine um banco inteiro rodando em apenas um IBM Z.

Parece absurdo.

No Kubernetes isso acontece o tempo inteiro.

Node A

APP1
APP2
APP3
APP4

Se esse servidor falhar...

Tudo cai.


No Mainframe isso seria equivalente a:

  • um único CPC

  • sem Parallel Sysplex

  • sem GDPS

  • sem redundância

Alta disponibilidade simplesmente deixa de existir.


Erro 2

Não proteger o Control Plane

O Control Plane é o cérebro.

Ele contém:

  • API Server

  • Scheduler

  • Controller Manager

  • ETCD

Sem ele...

O cluster fica "cego".

Os containers podem continuar rodando por algum tempo.

Mas nada novo consegue ser criado.

É parecido com perder o JES2 Master.


Erro 3

Não fazer backup do ETCD

O ETCD guarda praticamente todo o estado do cluster.

É equivalente ao:

  • catálogo do sistema

  • SYS1

  • repositórios de configuração

Sem ETCD...

Você perdeu:

  • Deployments

  • Services

  • Secrets

  • ConfigMaps

  • RBAC

  • Namespaces

Ou seja...

Perdeu o cluster.


Erro 4

Misturar Desenvolvimento e Produção

Esse é um erro clássico.

Imagine colocar:

PIX
Internet Banking
Folha de Pagamento

junto com

Sistema de Testes

No mesmo cluster.

Um teste mal executado pode consumir:

CPU

Memória

IO

Rede

e afetar produção.


Mainframe resolveu isso há décadas.

LPARs.

WLM.

Classes de serviço.

Ambientes isolados.


BLOCO 2

Resource Management

Aqui aparece um dos assuntos mais importantes.

Recursos.

No Kubernetes nada funciona "no automático".


Requests

Requests significam:

"O mínimo que preciso."

Exemplo

CPU: 500m

Memory: 1GB

O Scheduler utiliza isso para decidir onde colocar o Pod.

Sem requests...

Ele simplesmente chuta.


É semelhante ao WLM tentando distribuir workload sem conhecer prioridades.


Limits

Agora vem outra história.

Limits representam o máximo permitido.

CPU

2 cores

RAM

4GB

Se ultrapassar...

O processo sofre throttling.

Ou pode ser encerrado.


OOMKilled

Talvez o erro mais famoso.

Quando um container usa mais memória que o permitido.

O Kernel Linux faz:

OOM Killer

e encerra o processo.

No Mainframe seria parecido com:

Storage exhaustion

ou

S878


HPA

Horizontal Pod Autoscaler.

Ele aumenta o número de Pods.

Mas cuidado.

Escalar uma aplicação ruim apenas cria mais instâncias lentas.

É parecido com colocar mais CICS Regions para um programa que possui SQL ruim.

O gargalo continua existindo.


BLOCO 3

Deployment

Aqui surgem alguns erros extremamente comuns.


Nunca usar latest

Jamais.

image: latest

Parece prático.

Mas amanhã...

"latest"

é outra versão.

Você perdeu reprodutibilidade.


Sempre utilize

1.2.7

2.1.0

5.8.12

ou melhor ainda

Digest SHA256.


Isso lembra muito o mundo Mainframe.

Nunca executamos:

PROD.COBOL

Sabemos exatamente qual Load Module foi promovido.


Readiness Probe

O Pod iniciou.

Mas será que ele está pronto?

Não necessariamente.

Uma aplicação Java pode precisar:

30 segundos.

Sem Readiness.

O Kubernetes envia tráfego imediatamente.

Resultado:

Erro.


Liveness Probe

Verifica se o processo continua vivo.

Se travar...

O Kubernetes reinicia.

É semelhante ao Automation do SA z/OS detectando um address space congelado.


Startup Probe

Ideal para aplicações pesadas.

Sem ela...

O Kubernetes mata a aplicação antes dela terminar de iniciar.


Rolling Update

Jamais atualizar todos os Pods simultaneamente.

Sempre:

1
2
3
4

Nunca:

100%

de uma vez

É exatamente o conceito de deploy gradual utilizado por bancos.


BLOCO 4

Networking

Aqui muitos iniciantes sofrem.


Network Policies

Sem elas...

Todo Pod conversa com qualquer Pod.

Isso é perigosíssimo.

Imagine um malware chegando.

Ele consegue acessar praticamente tudo.


É equivalente a um RACF onde todos possuem ALTER em todos os datasets.

Impensável.


DNS

Muitos problemas parecem ser de aplicação.

Na verdade são DNS.

service

↓

CoreDNS

↓

IP

Uma falha aqui afeta milhares de Pods.


NodePort

Expor NodePort diretamente para Internet.

Nunca.

Use:

Ingress

Load Balancer

API Gateway

WAF


TLS

Sem TLS.

Todo tráfego pode ser interceptado.

No Mainframe isso seria equivalente a utilizar TN3270 sem criptografia.


BLOCO 5

Storage & Security

Aqui aparecem erros gravíssimos.


Rodar como Root

Nunca.

Um container comprometido ganha acesso privilegiado.

Use:

runAsNonRoot

readOnlyRootFilesystem

drop capabilities

Secrets em ConfigMaps

Erro extremamente comum.

ConfigMap não criptografa.

Secrets devem permanecer em:

Secret

Vault

KMS

External Secrets


RBAC

Sem RBAC.

Todos administram tudo.

Imagine um operador podendo:

Excluir produção.

Criar usuários.

Modificar políticas.

É por isso que RACF existe.

RBAC é o RACF do Kubernetes.


BLOCO 6

Observabilidade

Talvez o capítulo mais importante.


Sem logs...

Não existe troubleshooting.


Sem métricas...

Não existe capacity planning.


Sem tracing...

Não existe análise distribuída.


Sem dashboards...

Não existe visão operacional.


Ferramentas normalmente utilizadas

Logs

  • ELK

  • OpenSearch

  • Loki

Métricas

  • Prometheus

Dashboards

  • Grafana

Tracing

  • Jaeger

  • Tempo

  • Zipkin

Alertas

  • Alertmanager


Isso lembra muito:

RMF

SMF

OMEGAMON

NetView

Tivoli

Z APM Connect


BLOCO 7

Operação

Aqui aparecem erros humanos.

E a maioria dos grandes incidentes nasce justamente deles.


Deploy manual

Nunca.

Sempre:

Git

Pipeline

Automação


GitOps

O Git torna-se a verdade absoluta.

Toda alteração passa por:

Commit

Review

Pipeline

Deploy

Rollback


É semelhante ao ChangeMan, ISPW ou Endevor.

Nada muda diretamente na produção.


Não testar recuperação

Backup sem restore não vale nada.

Todo DR precisa ser testado.

No IBM Z isso sempre foi obrigatório.

GDPS.

Recovery.

Image Copy.

Log Apply.


Não auditar segurança

Novas vulnerabilidades surgem diariamente.

Imagens precisam ser continuamente escaneadas.


Os "novos" erros 

Os últimos slides ampliam ainda mais a lista.

Entre eles destacam-se:

  • Não definir ResourceQuota.

  • Não usar LimitRange.

  • Ignorar Namespaces.

  • Expor aplicações diretamente.

  • Não realizar backup periódico do ETCD.

  • Não otimizar custos.

  • Não separar ambientes.

  • Não validar probes continuamente.

  • Não monitorar consumo financeiro do cluster.

Esses erros normalmente não derrubam o ambiente no primeiro dia, mas aumentam gradualmente a complexidade operacional e o risco de incidentes.


O grande paralelo com IBM Z

O aspecto mais interessante desse material é perceber que praticamente todos os "50 erros do Kubernetes" já possuem um equivalente consolidado no ecossistema IBM Z:

KubernetesIBM Z / Mainframe
RBACRACF
SchedulerWLM
Rolling UpdatePromoção controlada (Endevor/ISPW/ChangeMan)
ReplicaSetParallel Sysplex
ETCDCatálogos e repositórios críticos do sistema
ObservabilidadeRMF, SMF, OMEGAMON
Health ChecksSA z/OS, NetView
GitOpsGestão de configuração e promoção de software
SecretsRACF + ICSF + cofres corporativos
AutoscalingBalanceamento e classes de serviço do WLM

A tecnologia mudou, mas os princípios permanecem.


A maior lição para um Padawan COBOL

Quem está começando em Kubernetes costuma imaginar que dominar YAML, Pods e Deployments basta para operar um ambiente de produção. Na realidade, isso representa apenas uma pequena parte do trabalho.

Os profissionais mais experientes pensam primeiro em engenharia operacional. Antes de criar um único Deployment, eles definem como recuperar o cluster após uma falha, como limitar recursos para evitar que uma aplicação afete outra, como monitorar métricas, como proteger segredos, como automatizar implantações, como auditar mudanças e como garantir que qualquer alteração possa ser revertida rapidamente.

Essa é exatamente a mentalidade que sempre existiu no IBM Z. Durante décadas, bancos, seguradoras e governos construíram sistemas que precisavam permanecer disponíveis 24 horas por dia. Kubernetes não substitui esses princípios; ele os reapresenta em uma nova arquitetura baseada em containers.

No Bellacosa Mainframe, essa é talvez a maior mensagem deste material: um bom engenheiro de Kubernetes não é aquele que conhece mais comandos kubectl, mas aquele que projeta plataformas resilientes, observáveis, seguras e previsíveis. A verdadeira maturidade está menos na tecnologia utilizada e muito mais na disciplina de engenharia aplicada a ela.

domingo, 5 de julho de 2026

Kubernetes Autoscaling Muito Além do HPA

 

Bellacosa Mainframe e o kubernetes autoscaling

☕ Um Café no Bellacosa Mainframe

Kubernetes Autoscaling Muito Além do HPA

O Que Todo Programador COBOL Padawan Precisa Saber Sobre HPA, VPA, Cluster Autoscaler e Como os Grandes Bancos Escalam Milhões de Transações Sem Desperdiçar Recursos

"No Mainframe aprendemos que desempenho nunca foi apenas velocidade. Sempre foi equilíbrio entre capacidade, disponibilidade, custo e confiabilidade. Kubernetes apenas reinventou esse conceito para a era da nuvem."


Introdução

Existe uma pergunta que praticamente todo desenvolvedor faz quando começa a estudar Kubernetes:

"Se meu sistema receber mais acessos, o Kubernetes cria novos Pods automaticamente?"

A resposta é:

Depende.

E é justamente esse "depende" que confunde milhares de profissionais todos os anos.

Quando um Programador COBOL começa a estudar Kubernetes, normalmente imagina que existe apenas um mecanismo responsável por aumentar a capacidade da aplicação.

Na prática, isso está longe da realidade.

Na verdade, Kubernetes possui diversos mecanismos diferentes de escalabilidade, cada um resolvendo um problema específico.

Alguns aumentam a quantidade de Pods.

Outros aumentam CPU e memória.

Outros adicionam novos servidores inteiros ao cluster.

Cada um trabalha em uma camada diferente da infraestrutura.

É exatamente como acontece em um grande banco.

Quando o Internet Banking começa a ficar lento, ninguém simplesmente compra um novo servidor.

Antes disso existem diversas decisões:

  • aumentar regiões CICS?

  • criar novos servidores WebSphere?

  • ajustar WLM?

  • aumentar memória?

  • ativar Capacity on Demand?

  • adicionar uma nova LPAR?

No Kubernetes acontece exatamente a mesma filosofia.

Neste artigo vamos entender profundamente como funcionam:

  • Horizontal Pod Autoscaler (HPA)

  • Vertical Pod Autoscaler (VPA)

  • Cluster Autoscaler (CA)

Sempre fazendo paralelos com IBM Z, COBOL, CICS, Batch, WLM e arquitetura corporativa.


Antes de falar sobre Autoscaling...

Precisamos entender um conceito fundamental.

O verdadeiro objetivo não é aumentar recursos.

É utilizar exatamente os recursos necessários.

Essa diferença parece pequena.

Mas muda completamente a forma de projetar sistemas.

Imagine um supermercado.

Às 3 horas da manhã existem apenas cinco clientes.

Às 18 horas existem dois mil clientes.

Você contrataria:

  • 200 caixas funcionando o dia inteiro?

Claro que não.

Também não deixaria apenas dois caixas funcionando às 18 horas.

A solução inteligente é adaptar a quantidade de caixas conforme o movimento.

É exatamente isso que Kubernetes faz.


O grande problema dos sistemas tradicionais

Durante décadas o modelo foi simples.

Comprar servidores suficientes para suportar o pior cenário.

Imagine uma aplicação bancária.

Segunda-feira:

CPU: 12%

Terça-feira:

CPU: 18%

Quarta-feira:

CPU: 22%

Na Black Friday:

CPU: 98%

O servidor foi comprado pensando apenas nesse último dia.

Resultado:

Durante praticamente todo o ano:

  • CPU parada

  • memória parada

  • discos subutilizados

  • energia desperdiçada

  • dinheiro desperdiçado

Cloud Computing mudou completamente essa lógica.

Agora infraestrutura pode crescer e diminuir automaticamente.


Elasticidade x Escalabilidade

Esses conceitos costumam ser confundidos.

Escalabilidade

É a capacidade do sistema suportar mais carga.

Exemplo:

Um servidor suporta:

500 usuários

Depois de melhorias:

5.000 usuários

Ele ficou mais escalável.


Elasticidade

É a capacidade de crescer e diminuir automaticamente.

Hoje:

2 Pods

Daqui cinco minutos:

20 Pods

Mais tarde:

4 Pods

Tudo sem intervenção humana.

Isso é elasticidade.

É justamente o coração do Kubernetes.


Os três tipos de escalabilidade

A maioria das pessoas acredita que existe apenas um tipo.

Na realidade existem três.

Escalabilidade Horizontal

Adicionar mais instâncias.

Exemplo:

Antes

2 Pods

Depois

8 Pods

Cada Pod continua igual.

Apenas existem mais deles.


Escalabilidade Vertical

Não aumenta quantidade.

Aumenta potência.

Antes

CPU 500m

Memória 512Mi

Depois

CPU 2

Memória 4Gi

Mesmo Pod.

Mais poderoso.


Escalabilidade da Infraestrutura

Agora nem estamos falando da aplicação.

Estamos falando do próprio cluster.

Antes

3 Workers

Depois

10 Workers

Agora existe espaço para muito mais Pods.


HPA — Horizontal Pod Autoscaler

Este é o autoscaler mais famoso.

Seu trabalho é extremamente simples.

Responder uma única pergunta.

Existem Pods suficientes?

Observe o que ele NÃO pergunta.

  • Existe CPU suficiente?

  • Existe memória suficiente?

  • Existem servidores suficientes?

Nada disso.

Ele pensa apenas em quantidade de Pods.


Como o HPA funciona?

Imagine uma API.

Ela começou o dia assim.

2 Pods

CPU média:

20%

Tudo funcionando.

Então começa uma campanha de marketing.

A CPU sobe para:

92%

O HPA verifica que sua meta era:

70%

Então ele faz um cálculo.

Simplificando:

Novos Pods =
Pods atuais ×
(CPU Atual / CPU Desejada)

Se havia:

4 Pods

CPU:

84%

Meta:

70%

Resultado:

4 × 84 ÷ 70

≈ 4,8

O Kubernetes arredonda.

Agora teremos:

5 Pods

Se a carga continuar aumentando:

6

8

12

20 Pods

Tudo automático.


Mas o HPA não olha apenas CPU

Esse é um erro muito comum.

Na realidade ele pode observar praticamente qualquer métrica.

Exemplos.

CPU

Memória

Requests por segundo

Tempo médio de resposta

Fila Kafka

RabbitMQ

Prometheus

Número de usuários

Sessões abertas

Mensagens pendentes

Quantidade de pedidos

Pix aguardando processamento

Fila de cartões

Custom Metrics

Isso significa que o HPA pode crescer baseado na necessidade real do negócio.

Imagine um banco.

Talvez CPU nem seja importante.

O importante pode ser:

Fila PIX > 2000

Nesse momento:

Criar novos Pods.

Muito mais inteligente.


Como o HPA conversa com Kubernetes?

O fluxo é relativamente simples.

Usuário

Ingress

Service

Pods

Kubelet mede CPU

Metrics Server coleta

API Server publica

HPA consulta

ReplicaSet aumenta Pods

Deployment cria novas réplicas

Tudo acontece continuamente.

Sem intervenção humana.


HPA não fica escalando o tempo todo

Imagine esta situação.

CPU:

69%

71%

69%

70%

71%

69%

Sem mecanismos de estabilização.

Teríamos:

8 Pods

9 Pods

8 Pods

9 Pods

8 Pods

Isso seria um desastre.

Por isso existem diversos mecanismos internos.

Cooldown.

Stabilization Window.

Tolerance.

Scale Policies.

Esses mecanismos evitam oscilações desnecessárias.


HPA possui limitações

Ele não faz milagres.

Imagine.

Seu cluster possui apenas:

2 Workers

Cada Worker possui:

8 CPUs

Todos estão completamente ocupados.

O HPA decide criar:

30 Pods

Mas onde eles serão executados?

Resposta.

Em lugar nenhum.

Eles ficam:

Pending

É aqui que entra outro personagem.


VPA — Vertical Pod Autoscaler

Agora o problema mudou completamente.

Não queremos mais criar novos Pods.

Queremos melhorar os Pods existentes.

Imagine.

Seu Deployment foi criado assim.

requests:
 cpu: 100m
 memory: 128Mi

Na prática ele utiliza:

CPU

850m

Memória

950Mi

Resultado.

CPU Throttling.

OOMKilled.

Baixo desempenho.

O VPA observa isso.


Como o VPA aprende?

Ao contrário do HPA.

Ele analisa histórico.

Dias.

Semanas.

Meses.

Depois calcula recomendações.

Exemplo.

Atual.

CPU

100m

Recomendado.

900m

Atual.

256Mi

Recomendado.

1Gi

Isso reduz desperdício.

E melhora desempenho.


Os modos do VPA

Off

Apenas recomenda.

Muito usado em produção.

Você recebe um relatório.

Mas nenhuma alteração acontece.


Auto

Atualiza automaticamente.

Se necessário reinicia Pods.

É extremamente poderoso.


Initial

Aplica apenas durante a criação.

Excelente para aplicações críticas.


Por que o VPA reinicia Pods?

Muitos iniciantes estranham isso.

O motivo é simples.

CPU e memória fazem parte da especificação do Pod.

Depois que o container está em execução.

Esses parâmetros normalmente não podem ser alterados.

Então o Kubernetes cria um novo Pod.

Com os novos valores.


O que o VPA não faz?

Não cria novos Pods.

Não cria servidores.

Não aumenta Workers.

Não substitui HPA.

São ferramentas complementares.


Cluster Autoscaler

Agora chegamos à infraestrutura.

Imagine.

Seu HPA criou:

50 Pods

Mas existem apenas:

3 Workers

Todos lotados.

Resultado.

Pods Pending

O Scheduler tenta.

Não consegue.

Agora entra o Cluster Autoscaler.


O trabalho do Cluster Autoscaler

Ele pergunta.

Existe algum Pod que não consegue ser agendado?

Se existir.

Ele conversa com o provedor de nuvem.

AWS.

Azure.

Google.

OpenShift.

VMware.

E solicita novos Workers.

Depois que os novos servidores entram no cluster.

O Scheduler distribui os Pods.


Fluxo completo

Usuários aumentam.

CPU aumenta.

HPA cria Pods.

Pods ficam Pending.

Cluster Autoscaler detecta.

Cloud cria Workers.

Workers entram.

Scheduler agenda Pods.

Aplicação volta ao normal.

Tudo automático.


Como o Cluster Autoscaler decide remover servidores?

Ele também reduz custos.

Imagine.

Domingo.

Pouquíssimos acessos.

Existem:

15 Workers

Mas apenas:

3

são necessários.

O Cluster Autoscaler verifica.

Os Pods podem ser movidos?

Se sim.

Executa.

Drain.

Eviction.

Delete Node.

Resultado.

Economia de infraestrutura.


Comparando HPA, VPA e Cluster Autoscaler

Imagine um supermercado.

HPA

Contrata mais caixas.

Mais pessoas atendendo clientes.


VPA

Entrega computadores mais rápidos para cada caixa.

Cada funcionário trabalha melhor.


Cluster Autoscaler

Constrói uma nova loja.

Agora existe espaço para muito mais caixas.

São três problemas diferentes.


Um exemplo real de um grande banco

Imagine um aplicativo bancário.

Às 8h da manhã.

Começam os acessos.

Primeiro.

O HPA aumenta.

6 Pods

↓

20 Pods

Depois percebe-se que cada Pod está consumindo muito mais memória.

O VPA recomenda.

512Mi

↓

2Gi

Agora não existe mais capacidade física.

O Cluster Autoscaler adiciona.

8 Workers

↓

16 Workers

O usuário final nem percebe.

Essa é a magia da elasticidade.


Analogia com IBM Mainframe

Quem trabalha com IBM Z perceberá rapidamente várias semelhanças.

HPA

Lembra aumentar regiões CICS.

Ou criar mais servidores Liberty.

Mais instâncias.

Mesmo programa COBOL.


VPA

Lembra ajustar REGION.

Heap Java.

Parâmetros WLM.

Mais recursos para uma região existente.


Cluster Autoscaler

Lembra.

Adicionar novas LPARs.

Capacity on Demand.

Expandir Parallel Sysplex.

Mais infraestrutura.

A filosofia é praticamente idêntica.


Quando utilizar cada um?

Use HPA.

Quando existem picos de acesso.

APIs REST.

Microsserviços.

Front-end.

Aplicações stateless.


Use VPA.

Quando deseja otimizar CPU e memória.

Eliminar desperdício.

Evitar OOMKilled.

Melhorar desempenho.


Use Cluster Autoscaler.

Quando a infraestrutura precisa crescer automaticamente.

Principalmente em Cloud.

AWS.

Azure.

Google Cloud.

OpenShift.


O futuro: KEDA e Event-Driven Autoscaling

Os mecanismos que estudamos são apenas a base. Em arquiteturas modernas, surge um quarto componente importante: o KEDA (Kubernetes Event-Driven Autoscaling).

Enquanto o HPA reage principalmente a métricas como CPU e memória, o KEDA reage a eventos.

Imagine um sistema de processamento de boletos. Não importa a CPU; o importante é saber quantos boletos aguardam processamento em uma fila do IBM MQ ou do Kafka.

Se houver 10 mensagens, um Pod é suficiente.

Se houver 10.000 mensagens, o KEDA pode solicitar ao HPA dezenas de Pods para processar a fila rapidamente.

Esse modelo aproxima o Kubernetes dos conceitos de processamento orientado a filas, muito conhecidos por profissionais de Mainframe que trabalham com IBM MQ, CICS Trigger Transactions e Batch.


Conclusão

Quando começamos a estudar Kubernetes, é comum acreditar que autoscaling significa apenas "criar mais Pods". Porém, vimos que a realidade é muito mais rica. O ecossistema foi projetado para atacar diferentes gargalos de forma especializada:

  • HPA responde ao aumento da carga criando ou removendo Pods.

  • VPA ajusta CPU e memória para que cada Pod tenha os recursos ideais.

  • Cluster Autoscaler adiciona ou remove nós do cluster conforme a capacidade física necessária.

  • KEDA amplia essa inteligência ao escalar aplicações com base em eventos e filas.

Para um Programador COBOL Padawan, essa arquitetura não deve ser vista como algo completamente novo. Ela representa a evolução de princípios que sempre existiram no mundo corporativo: distribuir carga, otimizar recursos, garantir disponibilidade e controlar custos.

No IBM Z, esses objetivos eram alcançados com WLM, Parallel Sysplex, Capacity on Demand, regiões CICS, tuning de DB2 e planejamento de capacidade. No Kubernetes, os mesmos princípios são implementados de forma declarativa, automática e integrada à nuvem.

A tecnologia mudou. As ferramentas evoluíram. Mas a missão continua exatamente a mesma: entregar sistemas resilientes, escaláveis e eficientes, capazes de atender milhões de usuários sem desperdiçar recursos. É essa mentalidade de engenharia que transforma um desenvolvedor em um verdadeiro arquiteto de soluções modernas.


sábado, 27 de junho de 2026

O Grande Equívoco: A Modernização Não é Sair do Mainframe

 

Bellacosa Mainframe e a modernizacao na Stack mainframe



☕ Um Café no Bellacosa Mainframe

O Grande Equívoco: A Modernização Não é Sair do Mainframe

A primeira provocação é justamente esta.

A maior parte das pessoas lê:

Modernizar COBOL → Java → Kubernetes → Cloud

Mas essa não é necessariamente a melhor resposta.

Modernizar é diferente de migrar.

Existem quatro estratégias clássicas.

1. Encapsular

Não mexe no COBOL.

Expõe APIs.

COBOL

CICS

z/OS Connect

REST

Mobile

Exemplo:

ContaCorrente.cbl

vira

GET /saldo

em minutos.


2. Refatorar

Melhora código COBOL.

COBOL 74

Enterprise COBOL 6.5

AMODE 64

JSON PARSE

XML

UTF-8

LE

Continua rodando no Z.


3. Reescrever

Maior risco.

COBOL

Java

COBOL

Go

COBOL

C#

Mas...

80% dos projetos falham.

Motivos:

regras escondidas

efeitos colaterais

batchs esquecidos

interfaces desconhecidas

JCL perdido

scheduller

CA7

Control-M

MQ

etc.


4. Replatform

Executar COBOL fora do Z.

Micro Focus

Rocket

Heirloom

Raincode

AWS Blu Age


Etapa 1 — Mainframe

A imagem mostra.

IBM Z

COBOL

DB2

CICS

JCL

Correto.

Mas faltam dezenas de peças.

IMS

MQ

VSAM

RACF

SMF

RMF

WLM

JES2

DFSMS

GDG

TSO

ISPF

SMP/E

NetView

SA zOS

e muitas outras.

Um banco médio pode ter:

50 milhões de linhas COBOL

300 mil JCL

12 mil CICS

200 TB DB2

40 anos de histórico


Bellacosa Mainframe e o mainframe no Brasil


Etapa 2 — Discovery

Talvez seja a etapa mais importante.

Porque ninguém conhece realmente o sistema.

José aposentou em 2009.

Maria saiu em 2017.

Carlos faleceu.

O conhecimento sumiu.


Descobrir significa:

inventário

mapear

catalogar

entender


Exemplo

Programa

PAGA100

CALL PAGA101

CALL PAGA102

READ VSAM001

EXEC SQL

UPDATE CLIENTE

PUT MQ

SUBMIT JCL

Só isso já gera um grafo enorme.


Ferramentas

IBM ADDI

IBM Wazi Analyze

Sonar

Understand

CAST

Manta


Etapa 3 — Regras de Negócio

Este talvez seja o maior patrimônio.

Exemplo.

IF IDADE > 65

AND TEMPO-CONTRIB > 15

AND DATA-CORTE < 20211231

MOVE 'S' TO BENEFICIO

Isso não está em documento.

Está no código.

Há empresas cujo negócio inteiro está aqui.


A Regra Oculta

Um banco descobriu:

IF CODIGO = 87

MOVE 0 TO JUROS

Perguntaram.

Por quê?

Resposta:

"Ninguém sabe."

Era uma lei de 1986.

Implementada por um programador.

Nunca documentada.


Etapa 4 — Dependency Graph

Excelente ideia.

Pouca gente faz.

Visualmente.

Programa A

Programa B

VSAM

MQ

DB2

Batch

Scheduler

API


Ferramentas modernas conseguem mostrar isso.

Parece Neo4J.

Um mapa da galáxia.


Etapa 5 — IA

A IA é promissora.

Mas ainda está longe da autonomia.

Ela consegue:

explicar COBOL

gerar documentação

resumir JCL

identificar copybooks

sugerir Java

gerar testes


Ela não consegue sozinha.

Decidir.

Esta regra bancária pode mudar?

Não sabe.


Exemplo.

COBOL

COMPUTE TAXA =
SALDO * 0.01875

IA pergunta:

Por que 1,875%?

Arquiteto responde:

Resolução BACEN 2147.

Pronto.

Conhecimento capturado.


Etapa 6 — Documentação

Hoje muitas empresas possuem.

Zero documentação.

Somente:

SYS1.PROCLIB

JCL

COBOL

Copybooks


IA pode gerar.

Markdown

Confluence

Draw.io

OpenAPI

Mermaid


Etapa 7 — Reengenharia

Imagem cita.

Java

.NET

Go

Node

Boa visão.

Mas há diferenças.

Java

Excelente.

Ecossistema corporativo.

Spring.


Go

Ótimo.

Microserviços.

Baixo consumo.


Node

Excelente APIs.

Menor adequação para batchs enormes.


.NET

Muito usado em seguradoras.


E Rust?

Começa aparecer.

Muito seguro.

Mas pouco adotado.


Contêineres

Aqui existe um mito.

Containerizar não significa melhorar.

Empacotar um sistema ruim.

Produz.

Um container ruim.


Docker resolve.

Empacotamento.

Não arquitetura.


Kubernetes

Muito poderoso.

Mas caro operacionalmente.

Exige.

SRE

Observabilidade

GitOps

Segurança


Para muitas empresas.

OpenShift.

É mais comum.


Cloud

A parte mais polêmica.

A imagem sugere.

Nuvem.

Como destino natural.

Nem sempre.


Muitos estão voltando.

Cloud Repatriation.

37Signals.

Dropbox.

Basecamp.

Bancos.


Motivos.

Custos.

Latência.

Compliance.

Egress.

Licenciamento.


Observabilidade

Excelente ponto.

Antigamente.

SMF.

RMF.

Omegamon.

Hoje.

Prometheus

Grafana

OpenTelemetry

Elastic


Imagine.

SMF 110

OpenTelemetry

Grafana

Isso já acontece.


O Papel da IA

A figura acerta em cheio aqui.

A IA não substitui.

O arquiteto.

O analista.

O especialista de negócio.

Ela atua como.

Copiloto.


Ela lê.

20 milhões linhas COBOL.

Em minutos.


Mas ela não sabe.

Que:

Cliente Ouro

é diferente de

Cliente VIP

Porque isso é semântico.

É negócio.


Minha visão sobre a frase central


A maior oportunidade tecnológica da próxima década não será abandonar o Mainframe, mas integrá-lo ao ecossistema moderno de APIs, IA, DevOps, observabilidade e computação híbrida.

O IBM Z não está desaparecendo. Está se tornando um nó de alto valor dentro de arquiteturas distribuídas, orientadas a eventos e assistidas por IA.

Acredito que estamos diante de uma das maiores ondas de transformação desde a popularização da internet comercial e da computação em nuvem, mas provavelmente ela não será uma história de "COBOL versus Java". Será uma história de preservar décadas de capital intelectual enquanto se adicionam capacidades modernas, reduzindo risco, aumentando a velocidade de entrega e mantendo a confiabilidade que fez o Mainframe sobreviver por mais de meio século. Afinal, substituir tecnologia é relativamente simples; substituir quarenta anos de conhecimento de negócio embutido em milhões de linhas de código é muito mais difícil.


Bellacosa Mainframe e os ciclos historicos na tecnologia mainframe


A história do software pode ser entendida como uma sucessão de grandes ondas tecnológicas. Nos anos 1960 surgiu a Crise do Software, quando projetos se tornavam caros, atrasados e difíceis de manter, motivando o nascimento da Engenharia de Software. A Crise do Petróleo dos anos 1970 aumentou a pressão por eficiência, impulsionando a automação bancária, industrial e governamental.

Nos anos 1980 ocorreu o movimento de downsizing, migrando parte do processamento de grandes sistemas centralizados para servidores menores e estações de trabalho. Na década de 1990 surgiu o rightsizing, buscando equilibrar custos, desempenho e confiabilidade, reconhecendo que nem tudo deveria sair do mainframe.

A popularização da Internet revolucionou os negócios, exigindo aplicações conectadas, comércio eletrônico e integração global. No final dos anos 1990, o Y2K mobilizou milhares de profissionais para corrigir sistemas legados, preservando um enorme patrimônio tecnológico e renovando plataformas críticas.

A partir dos anos 2000, a Cloud Computing trouxe elasticidade, pagamento sob demanda e novas arquiteturas distribuídas, embora também revelasse desafios de custo, governança e dependência de fornecedores. Atualmente, a onda da Inteligência Artificial acelera desenvolvimento, documentação, testes e modernização de sistemas legados. Diferentemente das revoluções anteriores, a IA não elimina o conhecimento humano: amplia a capacidade dos especialistas de compreender, preservar e evoluir décadas de regras de negócio.

sexta-feira, 12 de junho de 2026

☕🚀 PADAWAN COBOL, O QUE É O GRAVITY DO SANTANDER?

 

Bellacosa Mainframe e o Gravity do Santander

☕🚀 PADAWAN COBOL, O QUE É O GRAVITY DO SANTANDER?

"Imagine que alguém pegasse décadas de COBOL, CICS, DB2 e Mainframe, colocasse tudo dentro de um foguete espacial e o lançasse rumo à nuvem. Esse foguete atende pelo nome de Gravity."


📖 Sinopse

O Gravity é a plataforma tecnológica criada pelo Banco Santander para modernizar seu núcleo bancário (Core Banking).

Não é apenas um software.

Não é apenas uma migração para nuvem.

É uma estratégia completa para permitir que sistemas bancários gigantescos deixem de depender exclusivamente de ambientes tradicionais de mainframe e passem a operar em arquitetura cloud moderna.

O objetivo é simples:

Fazer um banco de 180 milhões de clientes funcionar com a velocidade de uma fintech sem perder a robustez de um mainframe.


🏛 História

Durante décadas o Santander construiu seus sistemas bancários sobre tecnologias tradicionais:

  • COBOL

  • Mainframe IBM

  • Bancos relacionais

  • Sistemas batch

  • Processamento transacional

Essas plataformas eram extremamente confiáveis.

O problema?

O mercado mudou.

Clientes passaram a exigir:

  • PIX instantâneo

  • Aplicativos móveis

  • APIs

  • Open Finance

  • Integração em tempo real

O modelo tradicional começou a limitar a velocidade de inovação.

Por volta da década de 2010 o Santander iniciou um programa de transformação que culminou no Gravity.

Em 2022 o projeto ganhou notoriedade internacional quando o Google anunciou o uso da tecnologia por trás do Gravity no serviço Dual Run.

Em 2025 o Santander informou que mais de 90% de sua infraestrutura tecnológica já estava em nuvem.


Bellacosa Mainframe visuliza o Gravity

🚀 O que é o Gravity?

Pense nele como um:

Tradutor Universal Bancário

Ele permite que aplicações que antes viviam exclusivamente no mainframe possam operar em ambiente cloud.

Sua função principal é:

  • Modernizar o Core Banking

  • Executar processamento distribuído

  • Operar em nuvem

  • Facilitar migrações

  • Reduzir dependência de hardware especializado


Bellacosa Mainframe uma visao geral do gravity

🏦 O que é Core Banking?

Padawan...

Quando você consulta saldo no aplicativo...

Quando faz um PIX...

Quando recebe salário...

Quando solicita empréstimo...

Tudo isso acaba passando pelo Core Banking.

É o coração do banco.

Sem ele:

💀 nada funciona.


⚙ Como funciona?

O segredo do Gravity é o conceito chamado:

Dual Run

Imagine duas locomotivas andando lado a lado.

Locomotiva 1

Mainframe

  • COBOL

  • CICS

  • DB2

Locomotiva 2

Cloud

  • Microservices

  • Containers

  • APIs

Durante um período ambas executam simultaneamente.

Os resultados são comparados.

Se tudo bater:

✅ a aplicação pode ser movida para nuvem.

Isso reduz enormemente o risco da migração.


🖥 Tecnologias Envolvidas

Embora o Santander não revele todos os detalhes internos, sabe-se que o projeto envolve:

Cloud Computing

  • Google Cloud

  • Kubernetes

  • Containers

APIs

  • REST

  • Open Banking

DevOps

  • CI/CD

  • Deploy automatizado

Data

  • Processamento distribuído

  • Streaming

Engenharia Moderna

  • Observabilidade

  • Telemetria

  • Monitoramento


☕ O que acontece com o COBOL?

A pergunta de um milhão de dólares.

Muitos imaginam:

"Migrar para nuvem significa jogar COBOL fora."

Errado.

O próprio Santander declarou que muitos dos profissionais que criaram os sistemas de mainframe há 20 anos participam do Gravity.

Isso revela algo importante:

O conhecimento de negócio continua valendo ouro.

A linguagem muda.

O negócio permanece.


🔥 Pontos Fortes

Escalabilidade

Pode crescer rapidamente conforme a demanda.


Agilidade

Novas funcionalidades podem ser liberadas em horas.

Antes levavam dias ou semanas.


Menor Dependência de Hardware

Não exige expansão física de datacenters.


Automação

Reduz atividades operacionais repetitivas.


Modernização

Facilita integração com:

  • APIs

  • Open Finance

  • IA

  • Aplicativos móveis


💣 Pontos Fracos

Complexidade

Migrar um banco não é igual migrar um site.

É extremamente complexo.


Custos Elevados

Projetos dessa magnitude custam bilhões.


Dependência da Cloud

O banco passa a depender mais dos provedores de nuvem.


Escassez de Talentos

Encontrar profissionais que entendam:

  • Mainframe

  • Cloud

  • DevOps

  • Negócio bancário

não é simples.


🤔 Curiosidades

Curiosidade 1

O Gravity não foi comprado.

Foi desenvolvido pelo próprio Santander.


Curiosidade 2

O Google aproveitou conceitos da tecnologia para construir o Dual Run.


Curiosidade 3

Poucos bancos do tamanho do Santander tentaram uma transformação tão profunda.


Curiosidade 4

O conhecimento dos especialistas de mainframe foi considerado fundamental.


Curiosidade 5

Mais de 1 trilhão de operações técnicas por ano deverão ser executadas através da plataforma.


🌎 Impacto no Mercado

O Gravity é observado por:

  • BBVA

  • HSBC

  • ING

  • Barclays

  • Deutsche Bank

  • Itaú

  • Bradesco

  • Banco do Brasil

Todos enfrentam o mesmo desafio:

Como modernizar décadas de sistemas sem parar o banco?


👨‍💻 O que muda para o Desenvolvedor COBOL?

Antigamente:

COBOL
 ↓
CICS
 ↓
DB2
 ↓
Produção

Agora:

COBOL
 ↓
API
 ↓
Container
 ↓
Cloud
 ↓
Observabilidade
 ↓
Produção

O desenvolvedor moderno precisa entender:

  • APIs

  • JSON

  • Git

  • DevOps

  • Cloud

  • Segurança


⚠ Riscos para a Carreira

Se o profissional pensar:

"Vou aprender apenas COBOL e parar no tempo."

Existe risco.

O mercado quer cada vez mais:

Profissionais Híbridos

  • COBOL + Cloud

  • COBOL + APIs

  • COBOL + Java

  • COBOL + Python

  • COBOL + DevOps

O especialista puro continua existindo.

Mas o híbrido tende a ser mais valorizado.


🎯 Vantagens para o Profissional Mainframe

O Padawan costuma acreditar que:

"Cloud vai matar o Mainframe."

Na prática acontece o contrário.

Quem entende:

  • Batch

  • Integridade transacional

  • Recuperação

  • Consistência

  • Alta disponibilidade

possui conhecimentos raros que muitos profissionais cloud nunca estudaram.

Por isso diversos arquitetos de transformação digital vieram do mundo mainframe.


☕ Resumo Bellacosa Mainframe

Gravity em uma frase

"É a ponte construída pelo Santander para levar décadas de conhecimento em COBOL e Mainframe para a nuvem sem destruir aquilo que fez o banco funcionar durante gerações."

O Padawan precisa aprender?

✅ Sim.

Precisa abandonar COBOL?

❌ Não.

Precisa aprender cloud?

✅ Sim.

O Mainframe vai acabar amanhã?

❌ Não.

O mercado está mudando?

✅ Muito rápido.

Quem será mais valorizado?

🚀 O profissional que souber conversar tanto com o veterano de JCL quanto com o engenheiro de Kubernetes.

Porque o futuro não é COBOL contra Cloud.

O futuro é COBOL + Cloud, e o Gravity talvez seja um dos maiores exemplos dessa convergência já vistos na indústria bancária mundial. ☕🔥🚀🏦💻

Gravity https://www.santander.com/en/press-room/press-releases/2025/06/santander-completes-the-digitalization-of-its-technology-infrastructure-in-spain-with-the-deployment-of-gravity

Gravity Power https://www.jornalintegracao.com/noticia/40336/revista-britanica-the-banker-elege-o-banco-mais-inovador-do-mundo

Inovação https://jornaleconomico.sapo.pt/noticias/santander-escolhido-como-mais-inovador-por-causa-da-plataforma-gravity/

Gravity - https://sapo.pt/artigo/santander-torna-se-o-primeiro-grande-banco-ocidental-a-operar-100-na-cloud-6865c821bf6e672c9d4acb54

Gravity - https://thedigitalbanker.com/santander-passes-key-milestone-in-its-transformation-after-migrating-its-cib-banking-platform-to-the-cloud/








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