Translate

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

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.


quarta-feira, 25 de março de 2026

☁️ Da Sala Gelada do Mainframe à Nuvem Elástica: O Guia Jedi de Cloud para Padawans que Vieram do Ferro Pesado

 

Bellacosa Mainframe comenta sobre Data Cente CPD e Mainframe

☁️ Da Sala Gelada do Mainframe à Nuvem Elástica: O Guia Jedi de Cloud para Padawans que Vieram do Ferro Pesado

“A Força não está no hardware… está na abstração.”

Se você cresceu ouvindo o zumbido de um data center, viu consoles verdes brilharem no escuro e acha que “downtime” é palavrão — bem-vindo, Padawan. 🧙‍♂️

Hoje vamos atravessar o hiper-espaço da TI: do mainframe on-premises para o multiverso da Cloud Computing — sem perder a sanidade, a disciplina operacional nem o amor pelo controle absoluto.

Este não é um tutorial raso. É um mapa estelar.


🏗️ Antes da Nuvem: O Império do Ferro

No modelo tradicional:

  • Você comprava o hardware
  • Instalava tudo
  • Mantinha equipe 24x7
  • Planejava capacidade para o pior caso
  • Rezava para o orçamento sobreviver

Era como construir a Estrela da Morte para hospedar um site institucional.

💡 Curiosidade Bellacosa:
Mainframes já faziam virtualização quando a cloud ainda usava fraldas. VM/370 (1972) mandou lembranças.


☁️ A Virada: Infraestrutura como Serviço (IaaS)

IaaS é o primeiro portal dimensional.

Você não compra mais servidores — você invoca instâncias.

O provedor cuida de:

  • Hardware
  • Energia
  • Refrigeração
  • Virtualização

Você cuida de:

  • Sistema operacional
  • Aplicações
  • Dados
  • Segurança do software

👉 Tradução para o mainframeiro:

IaaS é como ganhar um LPAR sob demanda… sem comprar o CPC.


🧪 PaaS e SaaS: Quanto mais alto, menos dor de cabeça

🧪 PaaS — “Só traga seu código”

Perfeito para construir aplicações sem montar infraestrutura.

📦 SaaS — “Só use”

Software pronto no navegador.

💡 Exemplo prático:

  • IaaS → montar servidor DB2 virtual
  • PaaS → subir API REST
  • SaaS → usar sistema de CRM online

📦 Containers e Serverless: O lado ninja da Força

Containers (CaaS)

  • Leves
  • Portáveis
  • Escaláveis
  • Compartilham o kernel

👉 Pense em JOBs isolados rodando no mesmo sistema.

FaaS / Serverless

Código executa sob demanda e desaparece.

Como um programa batch que só existe enquanto roda… e você só paga por esse tempo.


🌍 Modelos de Implantação: Onde a Força Reside

🌐 Public Cloud — A galáxia compartilhada

Características:

  • Multi-tenant
  • Baixo custo inicial
  • Escala absurda
  • Acesso pela internet

⭐ Ideal para startups e workloads variáveis.


🏢 Private Cloud — Seu próprio Templo Jedi

Características:

  • Infraestrutura dedicada
  • Controle máximo
  • Compliance facilitado
  • Alto custo

⭐ Bancos, governo, saúde — a tríade da cautela.


🔀 Hybrid Cloud — O melhor dos dois mundos

Private + Public trabalhando juntos.

Usos clássicos:

  • Backup na nuvem
  • Disaster recovery
  • Cloud bursting
  • Migração gradual

👉 É o modelo dominante nas grandes corporações.


🌐 Multicloud — Não confie em um único Império

Múltiplos provedores simultaneamente.

Motivos:

  • Evitar lock-in
  • Alta resiliência
  • Escolher o melhor serviço de cada um

💡 Muitas empresas usam Hybrid + Multicloud ao mesmo tempo.


🤝 Community Cloud — A aliança rebelde

Compartilhada por organizações com necessidades comuns:

  • Governo
  • Saúde
  • Educação
  • ONGs

Objetivo: custo compartilhado + compliance setorial.


⚡ Caso real: Por que startups amam Public Cloud

Imagine um Padawan empreendedor criando um sistema de compartilhamento de arquivos.

Sem cloud:

  • Comprar servidores
  • Contratar equipe
  • Dimensionar para milhões (ou falhar)

Com cloud:

👉 Lançar hoje
👉 Escalar amanhã
👉 Pagar só quando crescer

Muitos unicórnios começaram assim.


🛟 Hybrid na prática: Disaster Recovery Jedi

Empresa roda sistemas críticos on-premises.

Backup e réplica ficam na nuvem pública.

Se o data center cair:

👉 Failover automático
👉 Continuidade do negócio
👉 Sem construir um segundo data center


🧠 Easter Eggs para quem veio do Mainframe

  • Virtualização não nasceu na cloud
  • Autoscaling lembra WLM turbinado
  • Cloud bursting ≈ adicionar MIPS temporários
  • Object Storage ≈ datasets gigantes sem JCL
  • Serverless ≈ JOB que cobra por CPU time real

🧭 Guia rápido para escolher o modelo certo

SituaçãoMelhor opção
StartupPublic
BancoPrivate ou Hybrid
Grande corporaçãoHybrid + Multicloud
Órgãos governamentaisPrivate ou Community
Workload sazonalHybrid

🌌 Conclusão: A Força da Abstração

A cloud não substitui o conhecimento de infraestrutura — ela o amplifica.

O verdadeiro poder não é possuir servidores.
É poder invocá-los… e dispensá-los… quando quiser.

Para o Padawan vindo do mainframe, a nuvem não é uma ameaça.

É apenas:

👉 um data center que atravessou o hiper-espaço.

terça-feira, 24 de março de 2026

🚀 O Mainframe Não Morreu — Ele Aprendeu Docker, Kubernetes e Cloud Native (E Está Rindo da Nuvem)

 

Bellacosa Mainframe fala quando o Mainframe conquistou a Cloud

🚀 O Mainframe Não Morreu — Ele Aprendeu Docker, Kubernetes e Cloud Native (E Está Rindo da Nuvem)

Um guia Bellacosa-style para o Padawan que acha que Cloud Native nasceu ontem.


☕ Prefácio do Mestre

Jovem Padawan… 🧠

Se você acredita que:

“Cloud Native substituiu o Mainframe”

… então prepare-se para um choque digno de IPL sem aviso.

A verdade é outra:

🔥 O Mainframe não foi substituído — ele evoluiu.
🔥 E agora roda containers, Kubernetes e microsserviços dentro dele.

Sim. Dentro do z/OS. Sem sair do prédio. Sem drama. Sem hype.


🏢 Antes da Nuvem Existia… o Datacenter Jedi

Muito antes de “Cloud” virar buzzword, o mainframe já fazia:

✔ Multi-tenant
✔ Virtualização
✔ Alta disponibilidade
✔ Workload management
✔ Segurança absurda
✔ Escala vertical e horizontal
✔ Processamento transacional massivo

O nome disso era:

👉 IBM Z

Curiosidade nível Easter Egg 🥚
O conceito de virtualização robusta já existia no VM/370 em 1972.

Sim… antes do seu PC existir.


📦 Containers — A Caixa Mágica da Portabilidade

Um container é basicamente:

👉 Uma aplicação empacotada com tudo que precisa para rodar.

Sem instalar dependências manualmente. Sem “na minha máquina funciona”.

🧠 Analogia Bellacosa™

  • VM = apartamento completo
  • Container = quarto pronto dentro do prédio

⚖️ Containers vs Máquinas Virtuais

CaracterísticaVMContainer
SO próprio
PesoAltoBaixo
InicializaçãoMinutosSegundos
EscalabilidadeMédiaAlta
Kernel compartilhado

👉 Containers virtualizam o SO.
👉 VMs virtualizam o hardware.


🐳 Docker — O Cara que Popularizou Tudo

Docker transformou containers em padrão de mercado (2013).

🔄 Cadeia essencial

Dockerfile → Image → Container

📄 Dockerfile = receita

Exemplo mínimo:

FROM ubuntu:22.04
RUN apt-get update
CMD ["echo", "Olá, Padawan"]

Construa a imagem:

docker build -t hello-padawan .

Execute:

docker run hello-padawan

Pronto. Você invocou um container.


🧩 Microservices — Dividir para Escalar

Aplicações modernas não são um bloco único.

São Lego. 🧱

Exemplo: E-commerce moderno

  • Serviço de usuários
  • Catálogo
  • Carrinho
  • Pagamento
  • Entrega
  • Recomendações

Cada um:

✔ Escala independente
✔ Atualiza sem parar o sistema
✔ Pode usar tecnologia diferente


☸️ Kubernetes — O Maestro dos Containers

Gerenciar poucos containers é fácil.

Gerenciar milhares? Boa sorte sem automação.

Kubernetes resolve isso.

O que ele faz automaticamente

✔ Deploy
✔ Escala
✔ Balanceamento
✔ Autorreparo
✔ Atualizações sem downtime
✔ Service discovery


🧠 Componentes chave

Control Plane = cérebro

  • API Server
  • Scheduler
  • Controllers
  • etcd (memória do cluster)

Worker Nodes = músculos

  • Pods
  • Containers
  • Kubelet
  • Networking

💾 etcd — A Memória do Cluster

Sem etcd, Kubernetes sofre amnésia total.

Ele guarda:

  • Configurações
  • Estado desejado
  • Deployments
  • Secrets
  • Serviços

👉 É o “SYS1.PARMLIB” da nuvem. 😉


🟥 OpenShift — Kubernetes com Gravata Corporativa

OpenShift = Kubernetes + ferramentas empresariais + segurança integrada.

Pode rodar em:

  • Cloud pública
  • On-premises
  • Power Systems
  • 💥 IBM Z Mainframe

🏦 zCX — Containers Dentro do z/OS

Agora vem a parte que explode cérebros.

🔥 z/OS Container Extensions (zCX)

Permite rodar:

✔ Linux
✔ Docker
✔ Aplicações modernas
✔ Microsserviços

👉 Dentro do z/OS
👉 Sem LPAR Linux dedicada


💾 Storage? VSAM!

Os “discos” Linux são:

👉 VSAM Linear Data Sets (LDS)

Sim. VSAM rodando containers modernos.

Se isso não é cyberpunk corporativo, não sei o que é.


🧰 Provisionamento zCX — Passo a passo simplificado

1️⃣ z/OS 2.4 ou superior
2️⃣ z/OSMF
3️⃣ Alocar VSAM LDS
4️⃣ Provisionar instância
5️⃣ Subir Docker
6️⃣ Rodar containers


☁️ Cloud Native — Não é “rodar na nuvem”

É ser construído para ambientes dinâmicos.

Características

✔ Microservices
✔ Containers
✔ Automação
✔ DevOps
✔ Escala horizontal
✔ Infraestrutura imutável


🧊 Immutable Infrastructure — Nada de “mexer em produção”

Mudou algo?

👉 Crie nova versão
👉 Implante
👉 Substitua a antiga

Rollback = voltar para versão anterior.

Muito mais seguro que “editar servidor vivo”.


🏗️ Monolito vs Cloud Native

MonolitoCloud Native
Código únicoMicrosserviços
Deploy arriscadoDeploy contínuo
Escala verticalEscala horizontal
Forte acoplamentoBaixo acoplamento
Infra fixaInfra dinâmica

🔁 DevOps — A Mudança Cultural

Não é ferramenta.

É mentalidade.

👉 Dev + Ops trabalhando juntos
👉 Automação do ciclo inteiro
👉 Feedback contínuo

Ferramentas típicas:

  • GitHub / GitLab
  • Jenkins
  • Ansible
  • Selenium
  • Splunk
  • Nagios

🧠 Easter Egg Mainframe

Sabe quem já fazia algo parecido com DevOps?

👉 Operações de mainframe com JCL + automação + scheduling + change management.

Só não tinha camiseta escrita “DevOps”.


🌟 A Verdade Incômoda

Cloud Native não matou o Mainframe.

🔥 Ele absorveu os conceitos.
🔥 E o Mainframe absorveu Cloud Native.

Hoje vemos:

👉 APIs modernas consumindo CICS
👉 Containers próximos ao DB2
👉 Kubernetes integrando sistemas legados
👉 Hybrid Cloud dominando o mercado


🏁 Conclusão do Mestre

Padawan…

O futuro não é:

❌ Mainframe ou Cloud

O futuro é:

🔥 Mainframe + Cloud + Open Source + Automação

Quem entende isso se torna arquiteto.

Quem ignora… vira legado.


☕ Desafio Final

Se você chegou até aqui, responda mentalmente:

Seu sistema está pronto para rodar em qualquer lugar…
ou está preso a um único ambiente?

Se doeu… é porque precisa evoluir. 😉


segunda-feira, 23 de março de 2026

☁️💥 Do JCL ao Kubernetes: Como um Padawan Pode Dominar a Nuvem Sem Virar Vapor

 

Bellacosa Mainframe do JCL ao Kubernetes

☁️💥 Do JCL ao Kubernetes: Como um Padawan Pode Dominar a Nuvem Sem Virar Vapor

“Na galáxia da TI, alguns pilotam X-Wings… outros ainda estão aprendendo a ligar o hyperdrive.”

Se você é um Padawan da Cloud — ou até um Jedi do mainframe explorando novos planetas — este artigo é para você. Vamos atravessar juntos o caminho do zero até arquiteto, com exemplos reais, curiosidades, easter eggs e aquela pitada Bellacosa de conhecimento que não se aprende em slide corporativo. ☕🖥️☁️


🧠 Episódio I — O Despertar da Nuvem

Antes de containers, Kubernetes ou nomes complicados…

👉 Cloud é só alguém rodando computadores para você — em escala absurda.

No mundo on-premises:

  • Você compra hardware 💸
  • Instala tudo 🧱
  • Mantém tudo 🔧
  • Culpa o ar-condicionado quando cai 🧊

Na cloud:

  • Você aluga capacidade
  • Paga pelo uso
  • Escala sob demanda

💡 Curiosidade mainframe:
O modelo pay-per-use da cloud lembra MUITO o velho conceito de capacity on demand dos grandes sistemas.


🏗️ Episódio II — IaaS, PaaS, SaaS… ou “Quem Faz o Trabalho?”

Imagine que você quer comer pizza 🍕

  • 🧱 On-Prem → você planta o trigo, cria a vaca e assa
  • 🏗️ IaaS → você assa
  • ⚙️ PaaS → você só coloca o recheio
  • 🍕 SaaS → entregam pronta

👉 Quanto mais alto na pilha, menos trabalho (e menos controle).


🌍 Episódio III — Onde Mora a Nuvem?

Modelos de deployment:

  • ☁️ Public — infraestrutura compartilhada
  • 🏢 Private — exclusiva
  • 🌗 Hybrid — mistura dos dois
  • 🌍 Multicloud — vários provedores
  • 🤝 Community — organizações com interesses comuns

💡 Exemplo real:
Banco com dados críticos on-prem + analytics na nuvem = Hybrid.


📦 Episódio IV — Storage: O Cofre dos Dados

Três tipos dominam a galáxia:

🧱 Block Storage

Disco bruto — ideal para bancos.

👉 Pense: DASD virtual.


📂 File Storage

Pastas e arquivos hierárquicos.

👉 Tipo um compartilhamento NFS/SMB.


🎬 Object Storage

Para dados não estruturados:

  • Vídeos
  • Fotos
  • Logs
  • Backups

💡 Easter egg:
Object storage não tem “diretórios de verdade”. Aquela pastinha é só uma ilusão… tipo o Millennium Falcon parado no espaço.


🐳 Episódio V — Containers: O Segredo da Cloud Moderna

VMs são como apartamentos completos 🏢
Containers são kitnets minimalistas 🐳

Containers:

✔️ Mais leves
✔️ Iniciam rápido
✔️ Compartilham o kernel
✔️ Escalam fácil


🧾 Dockerfile — A Receita do Container

FROM ubuntu
COPY app /app
CMD ["./app"]

👉 Isso vira uma imagem → que vira container → que roda seu app.

💡 Comentário Bellacosa:
Se JCL descreve job steps… o Dockerfile descreve build steps.


☸️ Episódio VI — Kubernetes: O Maestro dos Containers

Se Docker cria containers, Kubernetes governa exércitos deles.

Principais conceitos:

  • Pod → unidade mínima
  • Node → máquina
  • Cluster → várias máquinas
  • Service → endereço fixo
  • Deployment → controla versões

🗄️ etcd — O Cérebro do Cluster

👉 Banco de dados que guarda TODO o estado.

Sem ele:

Kubernetes vira um amnésico digital.


⚡ Episódio VII — Serverless: Código Sem Servidor?

Sim e não.

Você não vê o servidor.

FaaS roda código:

  • Sob demanda
  • Escala automática
  • Paga só pelo uso

💡 Ideal para eventos, APIs simples e automações.


🔐 Episódio VIII — Segurança e Sensibilidade

Nem tudo deve ir para public cloud.

Private ou hybrid são comuns quando há:

  • Dados financeiros 🏦
  • Dados médicos 🏥
  • Segredos governamentais 🏛️

🤖 Episódio IX — Infraestrutura Imutável

Antigamente:

👉 Atualize o servidor.

Hoje:

👉 Destrua e recrie.

Isso reduz inconsistências e bugs misteriosos.

💡 Analogia:
Trocar a nave inteira em vez de consertar no espaço.


🧬 Episódio X — Cloud-Native vs Monólito

🧱 Monólito

Tudo num bloco só.

Vantagem: simples.
Desvantagem: difícil de escalar.


☁️ Cloud-Native

  • Microservices
  • APIs
  • Containers
  • Automação
  • Observabilidade

👉 Projetado para falhar e continuar funcionando.


🏆 Episódio XI — O Caminho do Arquiteto

Um arquiteto cloud não escolhe tecnologia… escolhe compromissos:

⚖️ Custo × Performance × Segurança × Resiliência

Princípios Jedi:

  • 🛡️ Design for failure
  • 📈 Scale out
  • 🔗 Loose coupling
  • 🤖 Automação
  • 💰 Otimização de custos

☕ Easter Egg Mainframe Edition

Cloud parece nova… mas várias ideias nasceram no mainframe:

  • Time sharing → multi-tenant
  • Capacity on demand → elasticidade
  • Virtualização → VMs
  • Alta disponibilidade → Sysplex

👉 A nuvem não reinventou a roda. Só colocou foguetes nela.


🚀 Missão Final para o Padawan

Se você quer evoluir de dev para arquiteto:

1️⃣ Entenda fundamentos
2️⃣ Aprenda containers
3️⃣ Domine Kubernetes
4️⃣ Explore serverless
5️⃣ Pense em arquitetura, não em código


🌟 Conclusão — Que a Força da Nuvem Esteja com Você

Cloud não é só tecnologia.

É uma nova forma de operar sistemas em escala planetária.

Você não precisa saber tudo.
Precisa saber como as peças se encaixam.

“Um Padawan aprende ferramentas.
Um Jedi entende sistemas.”

 

sábado, 24 de maio de 2025

Kubernetes Services Muito Além do ClusterIP

 

Bellacosa Mainframe e os kubernetes

☕ Um Café no Bellacosa Mainframe

Kubernetes Services Muito Além do ClusterIP

O Que Todo Programador COBOL Padawan Precisa Saber Sobre ClusterIP, NodePort, LoadBalancer, ExternalName, DNS, Balanceamento, Alta Disponibilidade e Como os Grandes Bancos Mantêm Milhares de Microsserviços Funcionando Sem Que Ninguém Perceba

"Um bom programador conhece um endereço IP. Um excelente engenheiro cria sistemas onde ninguém precisa conhecer endereço algum."


Introdução

Durante décadas, nós, profissionais de Mainframe, aprendemos que estabilidade era uma virtude.

No IBM Z, dificilmente pensamos no endereço físico de uma aplicação.

Quando um operador acessa uma transação CICS, ele não precisa saber em qual LPAR ela está executando.

Quando um lote conversa com o DB2, ele não sabe onde está o buffer pool.

Quando um terminal 3270 executa uma transação, ele não precisa conhecer qual região AOR irá atendê-lo.

Existe uma camada de abstração.

Essa camada protege o usuário da complexidade.

Curiosamente, quase cinquenta anos depois, o Kubernetes resolveu exatamente o mesmo problema.

Só que agora para milhares de containers distribuídos em centenas de servidores Linux.

Se você é um Programador COBOL Padawan entrando no universo DevOps, Kubernetes pode parecer um mundo completamente diferente.

Mas não é.

Na verdade, muitos dos conceitos já existem no Mainframe há décadas.

Neste artigo vamos descobrir por que os Kubernetes Services talvez sejam um dos recursos mais importantes de toda a plataforma.


Antes de falar de Services...

Precisamos entender um conceito fundamental.

Tudo no Kubernetes é temporário.

Isso assusta quem vem do Mainframe.

No IBM Z pensamos assim:

"Meu programa está naquela máquina."

No Kubernetes pensamos diferente.

"Meu programa está em algum lugar do cluster."

Essa pequena mudança de mentalidade muda tudo.

Imagine uma aplicação simples.

Internet

↓

Frontend

↓

Backend

↓

Banco

Agora imagine que o Backend roda em três Pods.

Pod A

Pod B

Pod C

Cada Pod possui um endereço IP.

10.244.1.3

10.244.8.15

10.244.2.9

Até aqui parece simples.

O problema aparece quando um Pod morre.


Pods nascem e morrem o tempo todo

Ao contrário de um servidor tradicional, Pods são descartáveis.

Podem desaparecer por diversos motivos.

  • atualização

  • falha

  • manutenção

  • escalabilidade

  • reinício do Node

  • Rolling Update

  • Auto Scaling

Imagine:

Pod B

10.244.8.15

Foi destruído.

Kubernetes cria outro.

Pod D

10.244.19.44

Novo IP.

Novo identificador.

Nova localização.

Se todas as aplicações utilizassem o IP antigo, tudo quebraria.

É exatamente aqui que nasce o Kubernetes Service.


Afinal, o que é um Kubernetes Service?

A definição oficial diz:

Um Service fornece um endpoint de rede estável para acessar um conjunto de Pods.

Na prática podemos traduzir para:

Um Service é um endereço permanente que representa vários Pods temporários.

Observe.

Sem Service.

Cliente

↓

Pod A

10.244.1.7

Quando o Pod muda...

Tudo quebra.

Com Service.

Cliente

↓

backend-service

↓

Pod A

Pod B

Pod C

Agora o cliente nunca mais conversa diretamente com os Pods.

Essa é uma das ideias mais elegantes do Kubernetes.


A analogia perfeita para quem conhece Mainframe

Imagine um ambiente CICS.

Você possui:

  • TOR

  • AOR

  • FOR

  • WLM

  • Sysplex

  • VIPA

Quando um usuário acessa uma aplicação, ele normalmente não conhece qual AOR irá executar sua transação.

Existe uma infraestrutura inteligente fazendo esse trabalho.

No Kubernetes acontece exatamente a mesma coisa.

Cliente

↓

Service

↓

Pod 1

Pod 2

Pod 3

O Service é uma espécie de endereço lógico.

Assim como um VIPA.


Por que Services existem?

Existem cinco motivos principais.

1. Endereço permanente

Mesmo que todos os Pods sejam recriados.

O endereço continua igual.


2. DNS automático

Todo Service recebe automaticamente um nome DNS.

Exemplo.

backend-service

Ou

backend-service.default.svc.cluster.local

Isso elimina IPs fixos no código.


3. Balanceamento

Se existem quatro Pods...

Pod1

Pod2

Pod3

Pod4

O Service distribui as requisições.

Nenhum Pod fica sobrecarregado.


4. Descoberta de serviços

Imagine um cluster com:

  • PIX

  • Conta Corrente

  • Cartão

  • Investimentos

  • Fraude

  • Autenticação

Como um microsserviço encontra o outro?

Através do Service.


5. Desacoplamento

Aplicações deixam de depender da infraestrutura.

Mudamos Pods.

Mudamos Nodes.

Mudamos Cluster.

Nada muda para o cliente.


Como um Service funciona internamente?

Muita gente imagina que existe um processo rodando como um proxy.

Na maioria dos casos não.

O fluxo real é aproximadamente este.

Cliente

↓

DNS

↓

Service

↓

EndpointSlice

↓

kube-proxy

↓

iptables/IPVS/eBPF

↓

Pod

O kube-proxy cria regras dentro do próprio Kernel Linux.

O encaminhamento acontece praticamente sem intervenção de processos em espaço de usuário.


Endpoint e EndpointSlice

Quando criamos um Service, ele precisa descobrir quais Pods pertencem à aplicação.

Isso acontece através dos Labels.

Pod.

labels:
  app: backend

Service.

selector:
  app: backend

O Kubernetes encontra automaticamente todos os Pods.

Esses Pods são armazenados em objetos chamados EndpointSlices.

Nos clusters antigos existiam apenas Endpoints.

Hoje o EndpointSlice melhora muito a escalabilidade.


Os quatro tipos clássicos de Services

Agora chegamos ao coração do assunto.


ClusterIP

Este é o padrão.

Sempre que você cria um Service sem especificar o tipo, ele será ClusterIP.

type: ClusterIP

Ele cria um IP virtual acessível apenas dentro do cluster.

Arquitetura.

Frontend

↓

ClusterIP

↓

Backend

É o tipo mais utilizado.

Por quê?

Porque a maioria dos microsserviços nunca deve ficar pública.

Imagine um banco.

Você possui.

  • Serviço PIX

  • Serviço Cartão

  • Serviço Conta

  • Serviço Investimentos

  • Serviço Fraude

Nenhum deles precisa ser acessado pela Internet.

Todos usam ClusterIP.


Casos de uso

  • APIs internas

  • Banco de Dados

  • Redis

  • RabbitMQ

  • Kafka

  • Elasticsearch

  • MongoDB


NodePort

Agora a história muda.

NodePort abre uma porta fixa em todos os servidores do cluster.

Exemplo.

Node1

30080
Node2

30080
Node3

30080

Qualquer um responde.

Mesmo que o Pod esteja em outro servidor.

O acesso acontece assim.

192.168.1.50:30080

Muito útil para laboratório.

Pouco utilizado em produção.


Limitações

  • portas limitadas

  • pouca segurança

  • difícil gerenciamento

  • IP dos Nodes exposto

Por isso normalmente é utilizado apenas para desenvolvimento.


LoadBalancer

Quando trabalhamos em Cloud, LoadBalancer torna-se extremamente importante.

Criamos.

type: LoadBalancer

O Kubernetes conversa automaticamente com o provedor.

AWS cria um ELB.

Azure cria um Azure Load Balancer.

Google cria um Cloud Load Balancer.

IBM Cloud cria um IBM Cloud Load Balancer.

Tudo automaticamente.

Arquitetura.

Internet

↓

Cloud Load Balancer

↓

Service

↓

Pods

Essa automação impressiona quem vem do mundo tradicional.

Em poucos segundos uma infraestrutura completa aparece pronta.


ExternalName

Este tipo é diferente de todos os outros.

Ele não cria IP.

Não cria balanceamento.

Não cria Endpoint.

Não cria Proxy.

Ele apenas responde um nome DNS.

Exemplo.

externalName:
   api.bcb.gov.br

Agora qualquer aplicação utiliza.

banco-central

Mesmo que o endereço verdadeiro mude.

Isso facilita migrações.


O quinto tipo que poucos lembram

Embora muitos materiais apresentem apenas quatro tipos, existe outro extremamente importante.

Headless Service.

clusterIP: None

Nesse caso não existe IP virtual.

O DNS devolve diretamente todos os Pods.

Muito utilizado em StatefulSets.

Exemplo.

  • Kafka

  • Cassandra

  • MongoDB

  • Elasticsearch

  • ZooKeeper


O papel do DNS

Uma das maiores mágicas do Kubernetes.

Criamos.

name: backend-service

Automaticamente nasce.

backend-service.default.svc.cluster.local

Nenhuma configuração adicional.

Isso é fornecido pelo CoreDNS.

Assim os desenvolvedores nunca precisam decorar IPs.


Como acontece o balanceamento?

Imagine.

Pod1

Pod2

Pod3

Chegam 900 requisições.

O Service distribui.

300

300

300

Na prática depende do mecanismo utilizado.

  • iptables

  • IPVS

  • eBPF

Mas a ideia continua sendo a mesma.

Distribuir carga.


O que acontece quando um Pod morre?

Suponha.

Pod2

Falhou.

Kubernetes percebe.

Remove o Pod do EndpointSlice.

O Service deixa imediatamente de enviar tráfego para ele.

O usuário nem percebe.

Depois um novo Pod nasce.

Automaticamente entra no balanceamento.

Tudo sem intervenção humana.


O papel das Readiness Probes

Outro conceito fundamental.

Um Pod pode estar vivo.

Mas ainda não pronto.

Imagine um sistema Java iniciando.

O processo já está executando.

Mas ainda carregando centenas de classes.

O Kubernetes espera a Readiness Probe informar.

"Agora estou pronto."

Só então o Service começa a enviar requisições.


Ingress não substitui Service

Esse erro aparece frequentemente em entrevistas.

Ingress faz uma função diferente.

Arquitetura correta.

Internet

↓

Load Balancer

↓

Ingress Controller

↓

ClusterIP

↓

Pods

Ingress trabalha na camada HTTP/HTTPS.

Service trabalha na camada de rede interna.

São tecnologias complementares.


Session Affinity

Por padrão.

Cada requisição pode ir para qualquer Pod.

Mas algumas aplicações antigas dependem de sessão.

Nesse caso.

sessionAffinity:
   ClientIP

O mesmo cliente tende a conversar sempre com o mesmo Pod.

É semelhante ao conceito de Sticky Session.


Erros clássicos

Selector errado

Service.

selector:
   app: api

Pods.

labels:
   app: backend

Resultado.

Zero Endpoints.


TargetPort incorreto

Service.

targetPort: 8080

Container.

9090

Nada funciona.


Pod não Ready

Existe.

Está executando.

Mas ainda não recebe requisições.


NetworkPolicy

O Service funciona.

Mas a política de rede bloqueia o acesso.


O paralelo com o IBM Mainframe

Chegamos à parte mais interessante.

Veja esta comparação.

IBM MainframeKubernetes
Região CICSPod
SysplexCluster
VIPAClusterIP
Sysplex DistributorService
WLMBalanceamento
VTAMRede do Cluster
DNS CorporativoCoreDNS
Health CheckReadiness Probe
Região AORRéplica do Deployment
Balanceador F5LoadBalancer

Perceba que o Kubernetes não inventou todos esses conceitos.

Ele apenas os adaptou para um mundo distribuído baseado em Linux e containers.


Como um banco utiliza tudo isso?

Imagine um Internet Banking.

Internet

↓

Load Balancer

↓

Ingress

↓

Gateway

↓

Conta Corrente

↓

PIX

↓

Cartão

↓

Investimentos

↓

DB2

Cada caixa dessa arquitetura possui seu próprio ClusterIP.

Cada aplicação possui diversas réplicas.

Cada réplica pode estar em um servidor diferente.

Se um Node inteiro falhar.

O Kubernetes recria os Pods em outro Node.

Os Services continuam exatamente iguais.

Os clientes continuam utilizando os mesmos nomes DNS.

Nenhum código precisa ser alterado.

Esse é o verdadeiro poder da abstração.


Conclusão

Quando começamos a estudar Kubernetes, é comum dedicar muita atenção aos Pods, Deployments e Containers. Eles são importantes, mas representam apenas parte da história.

O componente que realmente transforma um conjunto de processos efêmeros em uma plataforma corporativa é o Service.

Ele fornece identidade estável para aplicações que mudam constantemente, esconde a complexidade da infraestrutura, distribui carga, integra-se ao DNS do cluster e permite que atualizações, escalabilidade e recuperação de falhas ocorram de forma transparente.

Para quem vem do universo IBM Mainframe, a ideia não é totalmente nova. Há décadas, tecnologias como VIPA, Sysplex Distributor, WLM e CICS já abstraem a localização física das aplicações e distribuem trabalho entre múltiplas instâncias. O Kubernetes segue a mesma filosofia, adaptando-a ao mundo dos containers, dos microsserviços e da computação em nuvem.

O grande aprendizado para o Programador COBOL Padawan é que o endereço de uma aplicação nunca deve depender da máquina onde ela está executando. Assim como um usuário de um sistema bancário não precisa saber qual região CICS processará sua transação, um consumidor de um microsserviço não deve conhecer o IP de um Pod. Ele deve conhecer apenas um nome lógico — o Service.

No fim das contas, Kubernetes Services representam muito mais do que um recurso de rede. Eles materializam princípios clássicos de engenharia de software: abstração, desacoplamento, alta disponibilidade, balanceamento de carga, resiliência e escalabilidade. São esses princípios que permitem que grandes bancos, seguradoras e empresas globais executem milhões de transações por dia, mantendo seus sistemas disponíveis mesmo quando containers são criados, destruídos e recriados continuamente. Entender esse mecanismo é um passo fundamental para qualquer desenvolvedor COBOL que deseje evoluir do mundo do processamento tradicional para a moderna engenharia de software baseada em DevOps, Cloud Native e IBM Z integrado ao ecossistema Kubernetes.

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