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

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.


segunda-feira, 15 de junho de 2026

☕🚀 Azure + IBM MQ + CICS + COBOL: Quando a Nuvem Descobre Que Ainda Precisa do Mainframe

Bellacosa Mainframe e uma visão da integração mainframe + nuvem


☕🚀 Azure + IBM MQ + CICS + COBOL: Quando a Nuvem Descobre Que Ainda Precisa do Mainframe

A arquitetura híbrida que responde em milissegundos e movimenta bilhões sem que ninguém perceba

Existe uma frase que escuto há mais de trinta e cinco anos:

"O Mainframe está morrendo."

A primeira vez que ouvi isso foi quando ainda existiam fitas magnéticas por todos os lados, terminais 3270 ocupavam salas inteiras e a internet comercial engatinhava.

Depois ouvi novamente quando surgiram os ERPs.

Depois quando surgiram os Data Centers distribuídos.

Depois quando vieram os smartphones.

Depois quando chegaram os containers.

Depois quando Kubernetes virou moda.

Depois quando a nuvem se tornou o assunto do momento.

E agora escuto novamente com a Inteligência Artificial.

Curiosamente, enquanto todos anunciavam o funeral do Mainframe, ele continuava processando cartões de crédito, transações bancárias, reservas aéreas, operações de seguradoras, sistemas governamentais e bilhões de dólares diariamente.

Talvez o erro nunca tenha sido tecnológico.

Talvez o erro tenha sido imaginar que inovação significa substituir tudo o que existe.

Na prática, a verdadeira inovação costuma acontecer quando conseguimos conectar mundos aparentemente incompatíveis.

E poucas arquiteturas representam isso melhor do que a integração entre Microsoft Azure e IBM Mainframe utilizando IBM MQ, CICS e COBOL.

Estamos falando de uma arquitetura capaz de unir o melhor dos dois universos:

  • Agilidade da nuvem

  • Robustez do Mainframe

  • Escalabilidade dos microsserviços

  • Consistência transacional do CICS

  • Segurança do IBM MQ

  • Décadas de regras de negócio escritas em COBOL

Tudo funcionando como uma única plataforma.


O Grande Equívoco Sobre Modernização

Quando alguém fala em modernização, muitas pessoas imaginam algo parecido com isto:

Sistema Antigo
      ↓
Apagar Tudo
      ↓
Reescrever Tudo
      ↓
Sistema Novo

Na teoria parece simples.

Na prática costuma ser um desastre.

Imagine um banco que possui:

  • 40 milhões de clientes

  • 30 anos de regras de negócio

  • milhares de programas COBOL

  • dezenas de sistemas satélites

  • integrações desconhecidas

Reescrever tudo pode levar anos.

Custar centenas de milhões.

E ainda introduzir novos erros.

Por isso os grandes bancos do mundo adotaram outro caminho.

Em vez de substituir o Mainframe, passaram a conectá-lo ao ecossistema digital.

É exatamente isso que esta arquitetura faz.


O Cliente Nem Imagina o Que Está Acontecendo

Imagine um cliente consultando saldo pelo aplicativo.

Ele toca um botão.

Em menos de um segundo recebe a resposta.

Para ele parece algo simples.

Mas nos bastidores ocorre uma verdadeira orquestra tecnológica.

O aplicativo chama uma API hospedada no Azure.

A API gera uma mensagem JSON.

Essa mensagem atravessa a rede.

Chega ao IBM MQ.

O MQ desperta uma transação CICS.

O CICS chama um programa COBOL.

O COBOL consulta DB2.

A resposta retorna pelo mesmo caminho.

Tudo isso em poucos milissegundos.

O usuário jamais perceberá.

E essa é justamente a beleza da arquitetura.


IBM MQ: O Carteiro Mais Confiável do Mundo Corporativo

Muitos profissionais mais jovens cresceram utilizando APIs REST.

Naturalmente surge a pergunta:

Por que usar MQ?

Porque sistemas críticos exigem garantias que HTTP sozinho não consegue fornecer.

Quando uma mensagem entra em uma fila MQ, ela não desaparece.

Ela permanece armazenada até ser processada.

Mesmo que:

  • um servidor caia

  • a rede falhe

  • uma aplicação seja reiniciada

a mensagem continua lá.

Imagine uma transferência financeira de cem mil reais.

Você gostaria que ela dependesse exclusivamente de uma conexão HTTP momentânea?

Provavelmente não.

É por isso que bancos continuam apaixonados pelo MQ.

Ele foi criado para ambientes onde perder uma única mensagem pode significar prejuízo milionário.


Request-Reply: O Casamento Entre Dois Mundos

Existe um detalhe fascinante nessa arquitetura.

O mundo web é síncrono.

O mundo MQ é assíncrono.

São filosofias diferentes.

Quando um navegador faz uma requisição HTTP, ele espera uma resposta.

Quando uma aplicação grava uma mensagem em uma fila MQ, ela normalmente segue seu caminho.

Mas o usuário quer uma resposta imediata.

Surge então o padrão Request-Reply.

Funciona assim:

A aplicação envia uma mensagem para a fila REQUEST.

O Mainframe processa.

Depois envia uma resposta para uma fila REPLY.

A aplicação recupera a resposta e devolve ao usuário.

Parece simples.

Mas essa simplicidade esconde décadas de evolução arquitetural.


O Poder dos Identificadores

Aqui encontramos um dos elementos mais importantes de toda a solução.

O MsgId.

Cada mensagem recebe um identificador único.

Por exemplo:

A1B2C3D4E5

Quando a resposta é gerada, esse valor reaparece como CorrelId.

Dessa forma:

Request
MsgId = A1B2C3D4E5

Reply
CorrelId = A1B2C3D4E5

A aplicação consegue saber exatamente qual resposta pertence a qual requisição.

Sem isso seria impossível processar milhares de mensagens simultaneamente.

É como o número de protocolo de uma ligação para suporte.

Sem ele tudo viraria uma enorme confusão.


MQ Trigger: O Despertador do Mainframe

Uma das partes mais elegantes dessa arquitetura é o Trigger.

Imagine um operador sentado observando uma fila.

Sempre que chegasse uma mensagem ele iniciaria um programa.

Seria absurdo.

O MQ faz isso automaticamente.

Quando uma mensagem chega:

QUEUE DEPTH = 1

o Trigger entra em ação.

Instantaneamente ele inicia uma transação CICS.

Sem polling.

Sem scripts.

Sem agendadores.

Sem desperdício de CPU.

É uma solução extremamente elegante criada décadas antes do conceito moderno de eventos ganhar popularidade.

Na verdade, muitos sistemas chamados hoje de Event-Driven Architecture fazem algo conceitualmente muito parecido com o que MQ e CICS realizam há anos.


O Router Program: O Maestro da Orquestra

Após a ativação do Trigger entra em cena o Router Program.

Se eu tivesse que apontar o cérebro da arquitetura, seria ele.

Sua função é simples:

Receber.

Analisar.

Decidir.

Encaminhar.

Ele lê o payload.

Consulta tabelas de roteamento.

Avalia parâmetros.

E escolhe qual backend deverá executar o processamento.

Por exemplo:

CONSULTA_CLIENTE → CUST0001
PIX → PIX0001
CARTAO → CARD0001

Isso oferece enorme flexibilidade.

Novos serviços podem ser adicionados sem alterar toda a arquitetura.

Basta cadastrar uma nova regra.

É o equivalente corporativo de um controlador de tráfego aéreo.


Quando COBOL Encontra JSON

Muitos profissionais ainda acreditam que COBOL vive preso a arquivos sequenciais e layouts de 80 colunas.

A realidade atual é muito diferente.

O CICS moderno possui recursos nativos para trabalhar com JSON.

Isso significa que uma estrutura como:

{
  "cliente":"VAGNER",
  "saldo":1500
}

pode ser transformada diretamente em estruturas COBOL.

Sem parsers complexos.

Sem centenas de linhas de manipulação de texto.

Sem gambiarras.

Durante décadas, integrar COBOL com formatos modernos exigia muito esforço.

Hoje o próprio CICS faz grande parte desse trabalho.

Essa é uma das transformações menos conhecidas fora do universo Mainframe.


O Segredo da Performance

Quando alguém vê Azure, JSON e microsserviços, normalmente imagina dezenas de chamadas distribuídas.

Mas o processamento principal acontece dentro do CICS.

E isso muda tudo.

Após chegar ao Mainframe, a execução ocorre dentro de um ambiente extremamente otimizado.

Não existe:

  • startup de container

  • inicialização de JVM

  • criação de novos processos

  • overhead desnecessário

O programa já está carregado.

O ambiente já está pronto.

A transação apenas executa.

É por isso que muitas operações conseguem responder em poucos milissegundos.

Uma característica frequentemente subestimada por quem nunca trabalhou em ambientes de missão crítica.


DB2: O Guardião da Consistência

Toda essa velocidade seria inútil sem consistência.

É aqui que entra o DB2.

Quando o COBOL consulta ou atualiza dados, o DB2 garante:

  • integridade

  • atomicidade

  • isolamento

  • durabilidade

Os famosos princípios ACID.

Em outras palavras:

ou tudo acontece corretamente

ou nada acontece.

Em sistemas financeiros isso não é luxo.

É obrigação.

Ninguém quer descobrir que o débito ocorreu mas o crédito não.


O Valor das Transações

Um aspecto frequentemente ignorado é o gerenciamento transacional.

Quando MQ, CICS e DB2 trabalham juntos, formam um ecossistema extremamente robusto.

Imagine:

  • mensagem recebida

  • atualização realizada

  • resposta enviada

Tudo dentro de uma única unidade lógica de trabalho.

Se qualquer etapa falhar:

rollback.

Como se nada tivesse acontecido.

Esse é um dos motivos pelos quais Mainframes continuam dominando ambientes financeiros.

Confiabilidade não é um recurso opcional.

É parte fundamental do negócio.


Dead Letter Queue: A Sala de Quarentena

Nem toda mensagem nasce perfeita.

Erros acontecem.

Layouts incorretos.

Dados inválidos.

Problemas de roteamento.

Mensagens corrompidas.

Se elas bloqueassem a fila principal, toda a operação sofreria.

A solução é a Dead Letter Queue.

A famosa DLQ.

Ela funciona como uma área de isolamento.

Mensagens problemáticas são removidas do fluxo principal e armazenadas separadamente.

O processamento continua.

Os usuários continuam trabalhando.

A equipe técnica pode investigar posteriormente.

É um conceito simples.

Mas extremamente poderoso.


O Que os Jovens Arquitetos Podem Aprender Com Isso

Existe uma tendência atual de acreditar que tudo começou com APIs, Kubernetes e microsserviços.

Arquiteturas como esta mostram que muitos conceitos modernos possuem raízes muito mais antigas.

Observe:

Eventos.

Mensageria.

Roteamento dinâmico.

Processamento assíncrono.

Alta disponibilidade.

Escalabilidade.

Observabilidade.

Resiliência.

Tudo isso já existia em ambientes Mainframe décadas atrás.

A diferença é que hoje utilizamos novos nomes para ideias antigas.


O Futuro Não É Cloud ou Mainframe

A pergunta correta não é:

Cloud ou Mainframe?

A pergunta correta é:

Como combinar Cloud e Mainframe?

A resposta está justamente nesta arquitetura.

O Azure fornece velocidade para inovação.

O Mainframe fornece estabilidade para execução.

O MQ conecta os dois mundos.

O CICS orquestra as transações.

O COBOL preserva o conhecimento acumulado.

O DB2 protege os dados.

Juntos, eles formam uma plataforma capaz de atender milhões de usuários simultaneamente.


Considerações Finais

Ao observar esta arquitetura, não vejo apenas filas MQ, programas COBOL ou serviços Azure.

Vejo algo muito mais interessante.

Vejo a prova de que tecnologia não é uma disputa entre velho e novo.

É uma construção contínua.

Os sistemas que realmente movem o mundo raramente são os mais barulhentos.

São os mais confiáveis.

Enquanto muitos discutem tendências, frameworks e modismos passageiros, arquiteturas híbridas como esta continuam processando pagamentos, movimentando recursos financeiros, autorizando cartões, executando operações críticas e sustentando economias inteiras.

Talvez essa seja a maior lição de todas.

O futuro não pertence exclusivamente à nuvem.

O futuro pertence às arquiteturas capazes de unir inovação e legado sem sacrificar desempenho, segurança ou confiabilidade.

E poucas combinações fazem isso tão bem quanto Azure, IBM MQ, CICS, COBOL e DB2 trabalhando em perfeita harmonia.

Porque, no final das contas, modernizar não significa destruir o passado.

Significa construir pontes entre o que já funciona e aquilo que ainda está por vir.

E essa arquitetura é uma dessas pontes.


domingo, 15 de março de 2026

Como um Aplicativo Moderno Conversa com um Mainframe IBM Z? Do Terminal Verde ao Smartphone.

 

Bellacosa Mainframe como um aplicativo moderno conversa com um mainframe ibm z

☕ Um Café no Bellacosa Mainframe

Como um Aplicativo Moderno Conversa com um Mainframe IBM Z?

Do Terminal Verde ao Smartphone.

O Mainframe Mudou Menos do que Você Imagina. O Mundo ao Redor Mudou Muito.

Existe uma pergunta que acompanha praticamente todo desenvolvedor que chega ao universo IBM Z:

"Se o mainframe é tão antigo, como um aplicativo Android consegue conversar com ele?"

Ou então:

"Como um site feito em HTML, CSS e JavaScript consegue consultar o saldo da minha conta que está em um programa COBOL escrito há trinta anos?"

A resposta é uma das histórias mais fascinantes da engenharia de software.

Porque, ao contrário do que muita gente imagina, o COBOL nunca aprendeu HTML.

O CICS nunca aprendeu JavaScript.

O DB2 nunca começou a falar React.

Quem evoluiu foi toda a infraestrutura em volta deles.

E essa talvez seja a maior lição que o IBM Z ensina.

Os sistemas realmente importantes não são reescritos toda vez que aparece uma tecnologia nova.

Eles aprendem novas formas de conversar.


Primeiro precisamos esquecer uma ideia errada.

Quando você abre um aplicativo do banco no Android, provavelmente imagina algo parecido com isto:

Android
    ↓
COBOL

Não.

Quase nunca.

Na realidade existem diversas camadas entre eles.

Hoje uma simples consulta de saldo pode atravessar meia dúzia de tecnologias antes de chegar ao programa COBOL.

Algo muito mais parecido com isto.

Android

↓

Internet

↓

API Gateway

↓

Servidor Java

↓

Middleware

↓

CICS

↓

Programa COBOL

↓

DB2

E cada uma dessas camadas existe por um motivo.

Nenhuma delas apareceu por acaso.


Bellacosa Mainframe fluxo teorico em 1980

Vamos voltar quarenta anos.

Imagine um banco em 1985.

Não existia internet.

Não existia smartphone.

Não existia navegador.

O usuário estava diante de um terminal 3270.

Usuário

↓

Terminal IBM 3270

↓

Controladora

↓

Mainframe

↓

CICS

↓

COBOL

O terminal era extremamente simples.

Ele praticamente desenhava caracteres na tela.

Nada de janelas.

Nada de mouse.

Nada de ícones.

Nada de JavaScript.

O CICS enviava uma tela.

O usuário digitava.

A tela inteira voltava.

O COBOL processava.

Outra tela era enviada.

Era um diálogo baseado em telas.

Hoje chamamos isso de arquitetura orientada a transações.

Na época era simplesmente computação.


Bellacosa Mainframe e o fluxo moderno 

Como funcionava o login?

O operador digitava:

Usuário

Senha

A tela era enviada inteira para o CICS.

O CICS chamava um programa COBOL.

O COBOL verificava:

  • usuário

  • senha

  • permissões

Depois consultava RACF.

Ou outro sistema de segurança.

Se estivesse tudo correto...

Outra tela aparecia.

Observe uma coisa interessante.

Mesmo naquela época já existia autenticação centralizada.

Já existia controle de acesso.

Já existia auditoria.

Muito antes da internet existir.


Bellacosa Mainframe e o fluxo teorico em 1990

Então chegou a arquitetura Cliente-Servidor.

Década de 90.

Agora surgiu o Windows.

Visual Basic.

PowerBuilder.

Delphi.

C++.

Os usuários queriam janelas bonitas.

Botões.

Menus.

Mouse.

Mas...

O COBOL continuava funcionando perfeitamente.

Então nasceu uma ideia simples.

Criar uma camada intermediária.

Windows

↓

Servidor

↓

CICS

↓

COBOL

O Windows deixou de conversar diretamente com o CICS.

Agora existia um servidor traduzindo tudo.

Era o nascimento do middleware moderno.



Depois chegou a Internet.

Essa mudou tudo.

Agora qualquer navegador precisava conversar com o banco.

Mas HTML não entende COBOL.

JavaScript não conhece CICS.

Foi necessário criar outra ponte.

Browser

↓

Apache

↓

Java

↓

CICS

↓

COBOL

Observe.

O COBOL continuava igual.

Quem mudou foi o tradutor.


Bellacosa Mainframe e o fluxo teorico em 2000

O nascimento dos Application Servers

Na década de 2000 apareceram servidores como:

  • IBM WebSphere

  • JBoss

  • WebLogic

  • Tomcat

Agora um servlet Java recebia a requisição.

Esse servlet chamava:

  • CICS

  • MQ

  • IMS

  • DB2

O navegador nunca falava diretamente com o mainframe.

Ele conversava com Java.

Java conversava com o IBM Z.


E onde entra o MQ?

Imagine um restaurante.

Você faz um pedido.

A cozinha está ocupada.

O garçom não fica parado esperando.

Ele coloca o pedido na fila.

Depois entrega quando estiver pronto.

MQ faz exatamente isso.

Aplicação

↓

Fila

↓

MQ

↓

COBOL

É comunicação assíncrona.

Muito mais segura.

Muito mais confiável.

Se o programa estiver indisponível por alguns segundos...

A mensagem continua esperando.

Nada é perdido.


Depois vieram os Web Services.

Agora o mundo falava XML.

Surgiram SOAP.

WSDL.

XSD.

O fluxo ficou parecido com isto.

HTML

↓

SOAP

↓

Application Server

↓

CICS

↓

COBOL

O COBOL ainda não entendia XML.

Mas havia componentes convertendo XML em estruturas COBOL.

Era tradução.

Sempre tradução.


Bellacosa Mainframe e o fluxo teorico em 2010

REST mudou novamente o cenário.

Agora quase tudo conversa usando HTTP.

GET

POST

PUT

DELETE

E normalmente JSON.

{
    "conta":12345
}

O navegador envia JSON.

O COBOL continua trabalhando com COPYBOOK.

Alguém precisa converter.

Quem faz isso?

Hoje normalmente:

  • z/OS Connect

  • CICS Web Services

  • Java

  • API Gateway



O nascimento do z/OS Connect

Essa talvez tenha sido uma das maiores evoluções do IBM Z.

Agora o fluxo pode ser assim.

React

↓

REST

↓

JSON

↓

z/OS Connect

↓

CICS

↓

COBOL

O desenvolvedor React acredita que está falando com uma API qualquer.

Na realidade...

Existe um programa COBOL do outro lado.

Sem ele perceber.


Vamos acompanhar uma consulta de saldo.

Você toca no botão.

Consultar Saldo

O aplicativo cria um JSON.

{
    conta:1234
}

Esse JSON segue pela internet.

HTTPS.

TLS.

Chega ao API Gateway.

O Gateway verifica:

  • certificado

  • autenticação

  • limite

  • token

  • autorização

Se tudo estiver correto...

Encaminha ao z/OS Connect.


O que faz o z/OS Connect?

Ele transforma isto:

JSON

naquilo:

COPYBOOK COBOL

Por exemplo.

JSON.

{
 cliente:100
}

vira

01 CLIENTE.

   05 CODIGO PIC 9(5).

Nenhum COBOL precisou ser alterado.

Ele continua recebendo estruturas COBOL.

Como sempre recebeu.


Agora entra o CICS.

O CICS recebe a requisição.

Seleciona uma Task.

Reserva memória.

Cria o ambiente.

Chama o programa COBOL.

Tudo isso acontece em poucos milissegundos.


O COBOL faz exatamente o que fazia em 1992.

Consulta DB2.

Ou VSAM.

Ou IMS.

Calcula saldo.

Verifica limites.

Executa regras de negócio.

Nada mudou.

As regras continuam ali.

Testadas durante décadas.


O retorno começa.

O COBOL devolve uma estrutura.

01 SALDO.

   05 VALOR PIC S9(9)V99.

O CICS devolve ao z/OS Connect.

O z/OS Connect transforma.

COPYBOOK

↓

JSON

Agora temos.

{
   "saldo":2450.80
}

O aplicativo Android recebe.

Atualiza a tela.

O usuário acredita que tudo aconteceu diretamente.

Na verdade dezenas de componentes participaram.


E onde entra Java?

Em muitos lugares.

Pode existir:

Android

↓

REST

↓

Spring Boot

↓

MQ

↓

COBOL

Ou

Angular

↓

Spring

↓

CICS TG

↓

COBOL

Ou

React

↓

Java

↓

IMS

↓

DB2

Java normalmente funciona como uma camada de negócios moderna.


E Node.js?

Também.

React

↓

Node.js

↓

REST

↓

z/OS Connect

↓

COBOL

Nada impede.

O IBM Z conversa com praticamente qualquer linguagem moderna.


E Python?

Também.

Python pode consumir APIs REST normalmente.

Python

↓

HTTPS

↓

JSON

↓

API

↓

Mainframe

O Python não sabe que existe um COBOL atrás da API.

Nem precisa saber.


E C#?

Exatamente igual.

C#

↓

REST

↓

Gateway

↓

Mainframe

E Go?

Também.


Rust?

Também.


Kotlin?

Também.


Flutter?

Também.


React Native?

Também.


Bellacosa Mainframe e o fluxo teorico em 2020

O protocolo mudou.

O conceito permaneceu.

Essa talvez seja a maior descoberta para um Padawan.

Muitos acreditam que aprender IBM Z significa abandonar tudo que conhecem.

Na verdade...

Você continua trabalhando com exatamente os mesmos conceitos.

Existe uma requisição.

Existe uma resposta.

Existe autenticação.

Existe autorização.

Existe uma camada de negócio.

Existe persistência.

Existe tratamento de erro.

Existe auditoria.

Existe segurança.

Esses conceitos nunca mudaram.

Mudaram apenas os protocolos.


O login moderno

Hoje um login costuma seguir aproximadamente este caminho.

Usuário

↓

Aplicativo

↓

HTTPS

↓

API Gateway

↓

OAuth2

↓

OpenID Connect

↓

JWT

↓

Servidor

↓

Mainframe

Depois do login o aplicativo recebe um Token.

JWT

Nas próximas chamadas ele envia apenas o Token.

O Gateway valida.

Se estiver correto...

A requisição segue.

O COBOL nem precisa conhecer JWT.

Alguém já validou antes.


O que continua exatamente igual?

Muito mais do que você imagina.

Ainda existem:

  • transações

  • commits

  • rollback

  • controle de concorrência

  • integridade

  • logs

  • auditoria

  • segurança

  • alta disponibilidade

  • recuperação

  • controle de acesso

  • regras de negócio

Esses pilares continuam praticamente idênticos há décadas.


O que realmente mudou?

Mudou quase tudo ao redor.

Antes:

3270

Hoje:

Android
iPhone
React
Angular
Vue
Windows
Electron
Flutter

Antes:

SNA

Hoje:

TCP/IP
HTTPS
REST
gRPC

Antes:

Tela 3270

Hoje:

JSON

Antes:

Terminal

Hoje:

API

Antes:

Monolito fechado

Hoje:

Microserviços consumindo APIs

Antes:

Operador interno

Hoje:

Milhões de usuários simultâneos

Mas o coração permanece surpreendentemente parecido.


O segredo do IBM Z

Existe uma frase que gosto de repetir aos meus alunos.

O mundo moderno não substituiu o mainframe. Aprendeu a conversar com ele.

Quando você abre um aplicativo de banco no celular, dificilmente imagina que aquela animação elegante, construída em Kotlin, Swift ou Flutter, pode terminar em um programa COBOL executando dentro de um CICS no IBM Z. No entanto, é exatamente isso que acontece milhões de vezes por dia.

O desenvolvedor do aplicativo pensa em telas, componentes, animações e experiência do usuário. O desenvolvedor de APIs pensa em REST, JSON, OAuth e microsserviços. O arquiteto de integração pensa em API Gateway, mensageria, balanceamento e observabilidade. E, no centro desse ecossistema, o COBOL continua fazendo o que sempre fez com excelência: aplicar regras de negócio, proteger dados e garantir que uma transferência de dinheiro, uma compra com cartão ou o pagamento de um benefício aconteçam com precisão absoluta.

Essa é a verdadeira evolução do software. Não jogar fora décadas de conhecimento, mas construir novas camadas sobre uma base sólida.


A Última Xícara de Café

Padawan, quando alguém disser que "o aplicativo conversa diretamente com o banco", lembre-se desta jornada invisível.

Um simples toque na tela percorre redes, protocolos, gateways, autenticação, criptografia, APIs, conversores de JSON para COPYBOOK, gerenciadores de transações, filas de mensagens, programas COBOL e bancos de dados, antes de retornar como um número exibido em poucos milissegundos.

A tela mudou.

A linguagem mudou.

Os protocolos mudaram.

As ferramentas mudaram.

Mas a essência continua a mesma desde os primeiros dias da computação corporativa: receber uma solicitação, validar quem a fez, executar regras de negócio com segurança, acessar dados de forma íntegra e devolver uma resposta confiável.

É por isso que o IBM Z continua relevante. Não porque resiste ao novo, mas porque se adapta a ele sem abrir mão daquilo que realmente importa: confiabilidade, disponibilidade, segurança e consistência.

No fim das contas, Android, Windows, HTML, JavaScript, Java, Node.js, Python, Go ou Rust não competem com o mainframe. Eles são apenas novos idiomas para conversar com um dos computadores mais confiáveis já construídos.

E talvez essa seja a maior lição desta conversa: a tecnologia muda; a boa engenharia permanece.

 


domingo, 27 de julho de 2025

A grande confusão do Software Legados em mini tópicos.

Bellacosa Mainframe e a grande confusao dos softwares legado


 Newsletter Logo

Bellacosa Mainframe fala sobre a confusão dos software legado

A grande confusão do Software Legados em mini tópicos.

4,385 followers

Descubra o que é Software Legado

Salve jovem padawan, Fevereiro continua com muita chuva, a quarentena nunca mais acaba e o tiozão aparece com mais um artigo, originalmente pretendia ir diretamente para meu projeto mainframe, mas surgiu um gancho sobre metodologias, que puxou um fio e o novelo se desenrolou, necessitando falar sobre um tópico cavernoso.

As vezes pensamos em seguir um rumo, mas lendo os comentários no Fórum, vejo alguns Dionitos indignados, com bases frágeis, então acabo escrevendo um novo artigo com tópicos que espero de coração ajudar.

Sem mais delongas, vamos falar sobre Software Legado, passando por histórias de antigos CPDS e seus Spaghetti Code, Monólitos, Software Quebrados e explorando abertamente o conceito de software Legado.


O que é Software Legado?

É uma expressão muito utilizada para designar Sistemas Informáticos antigos, mas que continuam em operação, atualmente tem um sentido pejorativo, em que as novas gerações de DEVs acostumados a Frameworks de Trabalho com muitas cores, sons e imagens, acabam desdenhando destes sistemas, por acreditarem em coachs e empresas de consultoria, que aspiram vender pacotes de serviços.

Claro que muitas vezes realmente são softwares monolíticos construídos sem nenhum cuidado, cheios de remendos e tecnologias obsoletas, que nem valem o trabalho de migração, devendo ser jogados na lata do lixo da empresa.

Mas na maior parte do tempo, são softwares em produção, gerando milhões de lucro a seus stakeholder, administrando base de dados com milhões de registros, muitas vezes a engenharia envolvida em sua construção, mantem softwares performáticos, econômicos em uso de espaço em disco e memória, em sintes obras de arte em bits e bytes, programas que exploram o máximo da logica matemática, com escrita elegante e codigo limpo-


Modas e modismos

Os avanços tecnológicos criam necessidades aos usuários, que por sua vez pressionam a área de informática a criar soluções para as atividades do dia a dia na empresa, trabalhei com um gestor, que sempre argumentava ao final deste pedido, a sua produtividade ira aumentar quantos por cento? O break-even deste investimento será em quantos meses?

O grande receio era tornar-se vítima de modismo e gastar recursos vitais em projetos sem relevância e perigosos para o negócio da empresa. Os ERPs são um grande exemplo deste problema, totalmente em voga nos anos 90, hoje tornaram grande monstros legados, mantidos por analistas a beira da reforma, muitas das empresas desenvolvedoras foram incorporadas a grandes grupos, restando meia dúzia delas.

Outro exemplo da virada do século, as grandes empresas utilizam Mainframe com seus terminais 3270 ou emuladores em redes de cabo coaxil, atendiam a necessidade e geravam poucas transferências de dados, com o advento da interface gráfica e posterior WEB, os usuários queriam sistemas mais user-friends com janelinhas e botões, que forçaram a criação de monstrengos intermédios entre mainframe e baixa plataforma.

Chegando aos dias atuais com a computação em nuvem e terceirização completa dos serviços informáticos, com bons e maus resultados, somente o futuro ira dizer o quanto foi acertado, não esquecendo do altamente noticiado Bug do Milênio Y2k e suas soluções miraculosas.


A roupa nova do Rei.

Um antigo conto infantil onde um Rei gaboso e vaidoso é enganado por pilantras, que vendem roupas maravilhosamente lindas, que apenas pessoas inteligentes e fabulosas poderiam ver, por fim o Rei desfila nu nas ruas de seu reino.

Antes de migrar, comprar soluções faça uma análise profunda, elabore estudos de viabilidade econômica, calcule os custos envolvidos, cuidado com os custos ocultos e veja se vale migrar para novas soluções.


Entendendo um software Legado

Vou apresentar uma lista geral com inúmeros itens, que ajudam a tornar uma solução informática obsoleta, não é conclusiva ou completa, pois como o assunto é dinâmico surgiram novos e alguns podem até ser retirados.


Mobilidade

Atualmente vivemos a era First Mobile, todos os usuários e consequentemente querem que os aplicativos funcionem em mobile, independentemente de custos e riscos associados a entrar em novos canais. Muitas vezes empresas gastam tubos, empenham-se em adquirir soluções com preços elevados, mas que ao final acabam subutilizadas.

Os sistemas mais antigos estão limitados a tecnologia existente e muitas vezes novos canais implicam em novas soluções, que destroem performance e dificultam o fluxo de processamento original, obrigando soluções Franksteins para explorarem as tecnologias estreantes.


Escalabilidade

Ao pensarmos numa solução, a escalabilidade é um fator de extrema importância, afinal se o utilizador do Sistema, expandir seus negócios, aumentando a base de clientes, número de acesso e transações, o Sistema deve estar preparado a atendar a demanda, caso contrário tornar-se obsoleto rapidamente.


Obsolescência tecnológica

Um Sistema Informático é uma entidade viva, necessitando de um meio ambiente especifico para qual foi projetado, acontece que devido a rápida evolução tecnológica, muitas vezes o custo de equipamento alteram-se drasticamente, tornando o custo de manutenção de velhas maquinas elevados, incentivando a migração com a aquisição de novos equipamentos, obrigando a recompilaçao de códigos fontes e reinstalação de softwares, ocasionando obsolescência técnica, pois em algumas situações ocorrem conflitos com DLLs, Sistemas Operacionais e etc.

Em outras situações a própria linguagem de programação sofre alterações, que tornam velhos programas incompilaveis nas novas versões. Quando trabalhava no Banco Real, a IBM efetuou um release no S/370, que tornava o subprograma PSDATA, escrito em PL/1 e Assembler inoperante, o grande desafio e dor surgiu, devido a este programa ser utilizado em 100% das operações de cálculo de data. O Banco Real não aplicou o patch enquanto a IBM não liberou uma versão onde o PSDATA continuasse a funcionar sem erro.


Colaboradores

Mudanças tecnologias afetam o bem-estar da equipe, alterando o desempenho e quebra de produtividade, empresas com quadros de funcionários compostos por pessoas com mais senioridade, tem dificuldades em adotar novas tecnologias, o mesmo ocorre quando o mercado cria novos padrões que afetam os Sistemas Informáticos, a exemplo podemos citar o uso dos Telégrafos para envio de mensagens importantes em uso até meados dos anos 90, o Fac-símile que gradativamente o substituiu, por fim os e-mails, maquinas de escrever e editores de texto, pagers por celulares e etc. Todas estas mudanças implicou em substituir processos e procedimentos em uso durante décadas.

O mesmo se aplica aos terminais IBM 3270 e os pools de digitação para introduzir dados em sistemas. Com o processo obsoleto o Sistema informático que lhe dava surporte torna-se legado. Com certeza ainda existem empresas com microfilmes e processos para consulta-los e backups em fitas, cartridges e outros meios de outros tempos.


Suporte

Em algumas situações criticas, o fornecedor do software vai a falência, deixando inúmeros clientes sem suporte técnico e a linguagem deixa de ter evoluções ou deploys corretivos, deixando inúmeros utilizadores órfãos com um Sistema Informático moribundo, como exemplo relembramos o Clipper, o Dbase, o Macromedia Flash Player e tantos outros.


Incompatibilidade

Um problema que tira os cabelos da equipe de sustentação é a incompatibilidade de software com outros softwares, como todos estamos carecas de saber, os Sistemas Informáticos não são estanques e incomunicáveis, mas sim trocam informações com diversas entidades, em formato de arquivos mais variáveis e por todos os meios possíveis, estes pacotes necessitam estar pareado entre o remetente e o receptor, caso os softwares sofram alterações e está conversação se quebra.

Teremos um problema de incompatibilidade entre softwares, outro caso mais cabeludo é o caso quando se troca algum periférico do hardware e ocorre conflitos entre hardware e software deixando a equipe de desenvolvimento numa corrida contra o tempo, com muitas situações desastrosas pelo caminho.


EOL – End of Life

Este é o pior cenário possível num sistema Legado, ocorre quando o Software encontra o seu fim, em decorrência de obsolescência de software ou hardware, num cenário assim nada poderá ser feito, a não ser migrar, de preferência num processo planejado e com tempo hábil para testes e acompanhamentos.

Um momento muito triste para o desenvolvedor que trabalhou durante anos, quiçá décadas no projeto e ao final vê-lo desaparecer para sempre, sendo apagado e retirado do DataCenter. Dói muito pensar nisso.


Custo de Manutenção

O terror do gestor de infraestrutura e desenvolvimento, ao aumentar o custo da manutenção devido à complexidade crescente do software, problemas de escalabilidade que implicam a aquisição de mais hardware e mesmo o consumo elevado de insumos para a operação diária do Sistema, situações que rapidamente tornam o Software inviável economicamente e forte candidato a EOL.


Custo de Treinamento

Um grande problema que tende a piorar em nossa geração, o custo elevado para treinar técnicos e operadores em tecnologias arcaicas sem GUI, sem multiplataforma e aparência sisuda e espartana.

A cada dia surgem novas tecnologias e metodologias de desenvolvimento, que atrai as novas gerações de DEVs catequizando e criando clubinhos, que os dificultam trabalhar com softwares legados e com a necessidade constante de criar, fazem uma pressão para o novo e abandono do legado.

Por isso uma tecnologia com poucos desenvolvedores e estudantes desta tecnologia, torna-se um candidato perfeito a EOL, por isso antes de adquirir uma ferramenta para sua empresa, verifique as tendências do mercado.

O SAP é um exemplo perfeito, conquistou o mercado nos anos 90 e hoje luta para sobreviver ao meio de tantas mudanças, existem outros erps que sofreram do mesmo mal, alto custo de formação e baixo retorno salarial, que acabou espantando os programadores.


Refatoração

No ciclo de vida de um software é o equivalente a visitar o cirurgião plástico, toques do Dr. Pitanguy, em linhas gerais é analisar um software antigo, mantendo todas as suas funcionalidades e workflows, sob uma roupagem nova e mais performática. Uma maquiagem que estende a vida útil de um Sistema, em alguns casos durante mais de uma década. Eu participei num projeto do gênero, na Zurich italiana participei de um equipe que refatorou o Sistema de IBM Mainframe para AIX Unix.


Lentidão

É um péssimo sinal, tanta coisa pode estar envolvida, os suspeitos são muitos, desde cabos de redes, servidores, provedores de internet, hardware com anomalia e o pior de todos: SOFTWARE mal projetado, todo sistema informático é uma maravilha, no ambiente de teste, com pouca intervenção funciona que é uma maravilha, bastou passar a produção, que os problemas surgem.

Sejam problemas na base de dados, seja índices mal feitos, conflitos entre aplicações, gargalos em workflow e usuários imaginativos. E quanto mais usado, mais deteriorado fica, chegando a pontos cruciais, onde Lideres de Projeto avaliam refatoraçao, remodelação, migração e em casos graves EOL.


Multiplataformas

Nos anos 90 a expressão usada eram Canais: canal web, canal emulador, canal móvel, cana pc e etc. Atualmente o mobile é o rei, como dizem First Mobile, caso o sistema não tenha sua versão em APP em alguma lojinha da moda, Android APPs, Microsoft Apps e ou na mais exclusiva e cheia de nove horas IOS Apps.

É uma sentença de morte, o Sistema Informático que não foi previsto em operar em  Multiplataforma está com seus dias contatos, rapidamente chegar uma empresa de consultoria com uma solução baratinha para ser implementada e aí temos novamente EOL.


Incompatibilidade

Este problema é um pouco mais raro, porem acontece com as melhores famílias, imagine um Sistema Informático que utiliza um periférico especifico para a introdução de dados, por exemplo o PDA Palmtop, era o queridinho no princípio da década de 2000, a Datarroba que o diga, quando a empresa deixou o suporte dos equipamentos, os softwares que o utilizavam ficaram incompatíveis com o novo sistema Android e com isso EOL.


Não atualização

Um risco que surge em utilizar softwares Open-Source, a moda do momento, dominando corações e agregando equipes pelo mundo afora, porém como não tem um suporte oficial garantido com Garantias Legais, inesperadamente aquele software que suporta seus negócios deixa de ser atualizado, e as contas para manter o projeto vivo é absurda, logo, a solução para softwares sem atualização é EOL.


Flexibilidade

Um problema em softwares antigos e construídos sobre outros paradigmas e sua falta de flexibilidade a mudanças, principalmente devido a equipe de sustentação do software, o que gera grande problemas quando surge a necessidade de alteração estrutural, a resistência das pessoas em modificar, torna-se o software um sério candidato a EOL.


Novas funcionalidades

Como sempre digo, perdoem a repetição, mas Sistemas Informáticos são entidades vivas, precisam-se adaptar-se, modificarem-se, evoluírem e apenas os mais aptos sobrevivem. Um programa que não esta apto a receber novas funcionalidades com certeza será substituindo por um programa da concorrência.

Se a empresa for incapaz de agregar novas funcionalidades a seu parque tecnológico, com certeza morrera, lembro-me sempre do Clipper que tinha limitação ao uso de memória baixa, um programa crashava e não compilava se ultrapassasse os 640 kilobytes de memória.


Falhas de Segurança

Um gestor de projetos não deve dormir no ponto, estar atento ao que acontece no submundo da informática, vendo a DeepWeb, os newsletters de segurança, atualizando softwares de apoio e mantendo backups a postos.

Nunca sabemos quando seremos atacados por hackers e outros vigaristas virtuais, por isso nosso parque informático necessita estar seguro, um sistema informático com falhas de segurança deve ser remendado e caso os custos sejam proibitivos, sabem a máxima, EOL nele.


Custos Operacionais

Em alguns momentos o Software está redondo, atende a todas as necessidades, usuários e desenvolvedores estão felizes, mas nem tudo é céu azul, nuvens de tempestade surgem no horizonte.

Qual o problema? Custos operacionais elevados, por alguma razão a ser analisada, os custos de operação são elevados, sejam na aquisição de insumos, seja nos equipamentos que necessitam de ajustes ou até mesmo no consumo de eletricidade ou até mesmo os custos de manutenção que conduzem o Sistema para o EOL.


Manutenção Cara

Este é o grande problema dos softwares legado do ambiente IBM Mainframe, o aluguel da máquina é elevado, os custos são calculados em MIBS, a mão de obra é rara, com custos elevadíssimos em Hora/Homem e as novas gerações não curtem a tela verde dos emuladores 3270. Forçando as grandes empresas migrarem seu parque informático para a Cloud Computer, empresas como Microsoft, Google e Amazon estão na liderança destes Data Centers modernos, que na minha modesta opinião não são tão diferentes dos antigos CPDs da IBM.


Um longo caminho

Agradeço sua atenção até este ponto, foi um longo artigo, tantas definições, ideias para apresentar o que é um Software Legado, saiba que o seu fabuloso projeto de hoje , construído no Estado da Arte da Tecnologia contemporânea um dia será o Software Legado, maltratado e vilipendiado e alguns casos até odiado.


Conclusão

Jovem padawan, quanto mais mergulhar no Mundo das Tecnologias, mais contato com Software Legado encontraras, o cemitério das tecnologias ultrapassadas é imenso, o memorial das Linguagens de Programação esquecidas e largadas renderia um artigo com milhares de páginas.

O meu objetivo nestas palavras foi apresentar alguns elementos que tornam o Software obsoleto e implica em sua eliminação. Lembrando que muitas vezes as funcionalidades são reescritas em novas linguagens, velhos bancos de dados migram em formato semelhante ao anterior. Então em tese não desaparecem apenas se transformam.

Esteja atento as tendências e surf a onda, mas cuidado para não se tornar um especialista em tecnologia ultrapassada, pois no primeiro momento seus rendimentos serão elevados, mas no futuro não encontrara projetos para aplica-los.


Espero ter ajudado ate o próximo artigo.


Referência Bibliográfica


WIKIPEDIA - A Enciclopédia Livre, faça parte, ajude atualizando ou criando verbetes http://www.wikipedia.org


Google Books um repositório com milhões de livros digitalizados https://books.google.com/


Internet Archive, tudo aquilo que um dia foi publicado veio parar aqui. https://archive.org/


Biblioteca de ícones https://www.flaticon.com/



Article content


Article content

Mais momento jabá, um passeio noturno pela bela cidade de Guararema/SP as margens do Rio Paraíba do Sul, com a majestosa Maria Fumaça e seus passeios de Trem a Vapor nos antigos trilhos da Ferrovia Central do Brasil, uma pacata urbe com suas tipicas casas do Brasil de antigamente , visite meu vídeo e veja para onde fui desta vez :


https://www.youtube.com/watch?v=U2KC2tebxNQ


Bom curso a todos.

Article content

https://www.linkedin.com/in/VagnerBellacosa

Article content

https://github.com/VagnerBellacosa/

Pode me dar uma ajudinha no YouTube?


Article content

https://www.youtube.com/user/vagnerbellacosa

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