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

sexta-feira, 11 de setembro de 2026

🧠 Microservices sob a Batuta de Chris Knight — Real Genius, Arquitetura e a Arte de Não Construir um Laser para Aquecer Pipoca

 

Bellacosa Mainframe apresenta microservices

☕ Um Café no Bellacosa Mainframe

🧠 Microservices sob a Batuta de Chris Knight — Real Genius, Arquitetura e a Arte de Não Construir um Laser para Aquecer Pipoca

Quando todo mundo está fascinado pela tecnologia, talvez o verdadeiro gênio seja justamente aquele que pergunta: “Legal... mas por que estamos construindo isso?”

Existe uma cena mental perfeita para explicar boa parte da arquitetura de software moderna.

Imagine uma sala cheia de engenheiros brilhantes. Há diagramas nas paredes, notebooks abertos, APIs sendo desenhadas, Kubernetes em algum canto, Kafka atravessando o desenho, containers surgindo aos montes e alguém acaba de pronunciar palavras capazes de provocar arrepios em qualquer apresentação corporativa:

“Precisamos migrar para microservices.”

Todos concordam.

Alguém acrescenta:

— E microfrontends.

Outro melhora:

— Event-driven!

Do fundo da sala:

— Service mesh!

Então aparece Chris Knight, de Real Genius, observa o quadro por alguns segundos e provavelmente pergunta:

“Tá... qual problema vocês estão tentando resolver?”

Silêncio.

E é justamente aí que começa nossa conversa.

Porque transformar um desenvolvedor em arquiteto não significa ensiná-lo a colocar mais tecnologias dentro de um desenho.

Significa ensiná-lo a questionar o desenho.

Para um programador COBOL começando a olhar para arquitetura moderna, existe uma excelente notícia: você provavelmente já conhece vários dos princípios fundamentais. Talvez apenas os conheça por outros nomes.

Pegue seu café.

Hoje vamos entrar no laboratório de Chris Knight.

E alguém, por favor, esconda a pipoca.



🎬 1. Primeiro precisamos falar sobre Real Genius

Real Genius, lançado em 1985, acompanha estudantes extremamente talentosos envolvidos em um projeto científico universitário. Chris Knight, interpretado por Val Kilmer, é um daqueles personagens que parecem estar permanentemente brincando enquanto enxergam coisas que outras pessoas não percebem.

E isso combina maravilhosamente com arquitetura.

O estereótipo do arquiteto costuma ser alguém extremamente sério diante de um enorme diagrama.

Chris Knight representa quase o contrário.

Ele domina a tecnologia, mas não é hipnotizado por ela.

Essa distinção é fundamental.

Existe uma diferença enorme entre:

saber construir algo

e

saber se aquilo deveria ser construído.

Na arquitetura corporativa encontramos frequentemente pessoas extremamente competentes resolvendo brilhantemente problemas que talvez nem precisassem existir.

Microservices são um excelente exemplo.



🧱 2. “Monólito” não é palavrão

Durante alguns anos, dizer que uma aplicação era monolítica parecia quase uma confissão.

“Nosso sistema ainda é um monólito...”

Pronunciado quase como:

“Temos ratos no datacenter.”

Mas precisamos separar duas coisas:

MONÓLITO

e:

MONÓLITO RUIM

Não são sinônimos.

Imagine:

SISTEMA DE PEDIDOS
│
├── CLIENTES
├── PRODUTOS
├── PEDIDOS
├── ESTOQUE
├── PAGAMENTOS
└── FATURAMENTO

Tudo pode existir dentro da mesma aplicação.

Isso não significa necessariamente que temos uma arquitetura ruim.

Podemos possuir módulos claramente definidos, responsabilidades separadas e interfaces controladas.

Temos então aquilo que costuma ser chamado de:

Modular Monolith.

Agora compare com:

SISTEMA
│
├── tudo acessa tudo
├── qualquer módulo altera qualquer tabela
├── regras aparecem duplicadas
├── dependências circulares
└── ninguém sabe quem é dono de quê

Isso é ruim.

Mas dividir esse segundo sistema em 50 containers não elimina magicamente seus problemas.

Talvez apenas consigamos transformar:

um monólito ruim

em:

50 pequenos pedaços ruins conversando pela rede.

Chris Knight certamente acharia isso divertido.

O pessoal de produção, provavelmente menos.



🧠 3. COBOL já ensinava modularidade antes de ela ganhar slides coloridos

Vamos colocar nosso programador COBOL iniciante diante disso.

Imagine:

       CALL 'CALCJURO'
           USING WS-SALDO
                 WS-TAXA
                 WS-JUROS.

O programa principal não precisa conhecer cada detalhe do cálculo.

Ele conhece uma interface.

Existe entrada.

Existe processamento.

Existe saída.

Isso é uma forma de separação de responsabilidade.

Podemos ter:

PROGRAMA PRINCIPAL
       │
       ├── VALIDCPF
       ├── CALCJURO
       ├── CONSULTA
       └── GRAVAPGTO

Isso não são microservices.

É importante não cair nessa simplificação.

Um subprograma COBOL normalmente não possui várias características associadas a um microservice moderno, como deployment independente, isolamento operacional, endpoint de rede próprio, escalabilidade independente e ownership autônomo.

Mas existe uma ancestralidade conceitual.

Estamos falando de:

modularidade.

coesão.

baixo acoplamento.

contratos.

Esses princípios não nasceram com Docker.


🔬 4. Chris Knight perguntaria onde está a fronteira

Agora imagine que alguém encontre:

PGM001
PGM002
PGM003
...
PGM500

e proponha:

“Vamos transformar cada programa COBOL em um microservice.”

Chris Knight provavelmente levantaria a sobrancelha.

Porque programa não é necessariamente domínio de negócio.

Um sistema bancário poderia possuir algo conceitualmente parecido com:

CONTA
├── abrir
├── consultar
├── bloquear
├── movimentar
└── encerrar

Essas operações possuem relação.

Talvez façam parte de uma capacidade coerente.

Por outro lado, transformar mecanicamente:

PGM001 → SERVICE001
PGM002 → SERVICE002
PGM003 → SERVICE003

não constitui arquitetura.

É conversão de inventário.

Uma boa fronteira deveria tentar responder:

Quem é responsável por esta capacidade?

Quais dados pertencem a ela?

Quem pode modificá-los?

Que contrato oferecemos ao restante do sistema?

Esse raciocínio nos aproxima de conceitos como bounded contexts e Domain-Driven Design.


🚪 5. Então aparece o API Gateway

Nos diagramas modernos frequentemente encontramos:

                 FRONTEND
                    │
                    ▼
              API GATEWAY
                    │
        ┌───────────┼───────────┐
        ▼           ▼           ▼
     PRODUCT      BASKET      ADVERT
     SERVICE      SERVICE     SERVICE

O gateway funciona como uma porta de entrada.

Ele pode participar de tarefas como roteamento, autenticação, autorização, controle de tráfego, transformação e observabilidade.

Isso evita que o consumidor precise conhecer detalhes demais da infraestrutura interna.

Para quem trabalha com mainframe, existe aqui uma conexão importantíssima.

Suponha:

MOBILE
   │
   ▼
REST API
   │
   ▼
API LAYER
   │
   ▼
CICS
   │
   ▼
COBOL
   │
   ▼
Db2

O aplicativo móvel não precisa saber que existe COBOL.

Aliás, ele não deveria precisar saber.

Para ele existe:

GET /accounts/123

Atrás disso pode existir uma transação CICS construída anos atrás.

Isso nos leva a uma das ideias mais importantes deste artigo:

Modernizar a interface de um sistema não exige necessariamente reescrever seu coração.


⚡ 6. “Mas microservices escalam!”

Sim.

E aqui Chris Knight provavelmente responderia:

“Qual parte precisa escalar?”

Imagine uma loja:

CATÁLOGO
50.000 req/s

PAGAMENTO
2.000 req/s

RELATÓRIOS
200 req/s

Se tudo estiver dentro de uma aplicação indivisível, talvez seja necessário escalar todo o conjunto.

Com serviços independentes, podemos ter:

CATÁLOGO
████████████████████

PAGAMENTO
████

RELATÓRIO
█

Agora temos uma vantagem concreta.

Não estamos usando microservices porque são modernos.

Estamos usando porque determinadas capacidades possuem características operacionais diferentes.

Esse é pensamento arquitetural.


🌐 7. Só existe um pequeno problema chamado rede

No COBOL podemos ter:

CALL 'VALIDA' USING WS-DADOS.

Agora transforme conceitualmente essa interação em:

SERVICE-A
    │
    │ HTTP
    ▼
SERVICE-B

Parece semelhante no PowerPoint.

Na operação, não é.

O Service B pode estar indisponível.

A rede pode estar congestionada.

O DNS pode falhar.

A resposta pode demorar.

A conexão pode cair.

A solicitação pode ser processada e a resposta se perder.

Aí Service A pensa:

“Não recebi resposta. Vou tentar novamente.”

Só que Service B executou a operação.

Parabéns.

Talvez você tenha cobrado o cliente duas vezes.


🔁 8. Bem-vindo ao maravilhoso mundo dos retries

Precisamos começar a pensar em:

timeout
retry
backoff
circuit breaker
idempotency
correlation ID
distributed tracing

Suponha:

POST /payment

A chamada chega.

O pagamento é processado.

A resposta desaparece.

O consumidor repete:

POST /payment

O sistema precisa conseguir perceber:

“Eu já processei esta operação.”

Daí surge a importância de idempotência.

Por exemplo:

IDEMPOTENCY-KEY: TX-928374

Se a mesma operação chegar novamente, podemos reconhecer que ela já aconteceu.

Observe como algo que parecia simplesmente:

A → B

acabou se tornando uma discussão arquitetural inteira.

Essa é uma das contas escondidas dos sistemas distribuídos.


💾 9. E então chegamos aos dados

Aqui começa a diversão de verdade.

Em um monólito podemos encontrar:

APPLICATION
     │
     ▼
    DB2

Uma transação pode executar várias operações e depois:

COMMIT

ou:

ROLLBACK

É uma ideia maravilhosa.

Tudo funcionou?

COMMIT.

Alguma coisa falhou?

ROLLBACK.

Agora distribua:

ORDER SERVICE
      │
      ▼
ORDER DB

PAYMENT SERVICE
      │
      ▼
PAYMENT DB

STOCK SERVICE
      │
      ▼
STOCK DB

Uma compra precisa:

criar pedido
reservar estoque
autorizar pagamento
emitir nota
solicitar entrega

Quem controla a transação?

Agora a resposta pode envolver eventos, mensagens, compensações, Saga Pattern e consistência eventual.


🍿 10. O microservice que virou laser de pipoca

Aqui está nossa metáfora Real Genius.

Imagine que o requisito fosse:

aquecer pipoca.

A primeira equipe sugere:

panela

Outra diz:

micro-ondas

Então o arquiteto extremamente entusiasmado apresenta:

satélite
     ↓
laser de alta potência
     ↓
espelho orbital
     ↓
sistema de coordenadas
     ↓
pipoca

Funciona?

Provavelmente conseguimos inventar uma maneira.

É impressionante?

Sem dúvida.

Era necessário?

Aí está a pergunta.

Em software fazemos exatamente isso.

Requisito:

600 usuários
CRUD
4 desenvolvedores
1 release mensal

Arquitetura proposta:

37 microservices
Kubernetes
Kafka
service mesh
Redis
API Gateway
15 databases
distributed tracing
GitOps
multi-cloud

E alguém precisa perguntar:

“Nós estamos construindo uma aplicação ou tentando ganhar a feira de ciências?”


🕸️ 11. O monólito distribuído

Existe uma criatura particularmente cruel.

Ela possui microservices no diagrama:

A → B → C → D → E

Mas A não consegue funcionar sem B.

B depende de C.

C depende de D.

Todos compartilham dados.

Precisam ser publicados juntos.

Uma alteração em E exige mudanças em A.

Temos então algo parecido com:

Distributed Monolith.

Conseguimos preservar o acoplamento do monólito e adicionar:

latência
rede
timeouts
deployment
containers
observabilidade
versionamento
falhas distribuídas

É quase uma obra de arte.

Chris Knight estaria impressionado.


📡 12. Observabilidade deixa de ser luxo

Imagine uma operação:

APP
 ↓
GATEWAY
 ↓
ORDER
 ↓
PAYMENT
 ↓
BROKER
 ↓
FRAUD
 ↓
BANK

Às 03:17, toca o telefone.

Easter egg encontrado. ☕

O cliente foi cobrado, mas o pedido não existe.

Agora precisamos reconstruir a viagem daquela transação.

Precisamos de algo parecido com:

TRACE-ID = ABC938271

Esse identificador acompanha a operação:

Gateway  ABC938271
Order    ABC938271
Payment  ABC938271
Fraud    ABC938271
Bank     ABC938271

Finalmente podemos reconstruir a história.

Esse é o valor do distributed tracing.

Em sistemas distribuídos, logs isolados deixam de contar a história completa.

Precisamos correlacioná-los.


🎯 13. Microservices não são principalmente uma decisão tecnológica

Aqui encontramos uma das maiores curiosidades da arquitetura.

Microservices também são uma decisão organizacional.

Imagine uma empresa com 300 desenvolvedores divididos em equipes:

CATALOG TEAM
PAYMENT TEAM
ORDER TEAM
SHIPPING TEAM
CUSTOMER TEAM

Se cada equipe puder controlar uma capacidade com ciclo próprio:

code
 ↓
test
 ↓
deploy
 ↓
operate

a independência arquitetural pode trazer enorme valor.

Agora imagine quatro desenvolvedores mantendo tudo.

Criar 40 serviços talvez não proporcione autonomia.

Talvez proporcione 40 coisas para quatro pessoas cuidarem.

Arquitetura precisa considerar a organização que vai operá-la.


🧩 14. Microfrontends repetem a experiência

Depois dos microservices alguém percebeu:

“E o frontend?”

Surge então:

Microfrontends.

Podemos ter:

BASE APPLICATION
│
├── PRODUCT
├── BASKET
└── ADVERT

Equipes diferentes podem desenvolver partes da experiência.

Em organizações enormes isso pode oferecer independência.

Mas imediatamente surgem novas perguntas.

Quem controla o design?

Quem controla as bibliotecas?

Como evitamos duplicação?

Como mantemos performance?

Como garantimos experiência consistente?

Outra vez:

Todo benefício arquitetural compra alguma complexidade.

A pergunta é se vale o preço.


🤖 15. “Micro/vibe everything” é mais perigoso do que parece

A imagem original contém uma pequena provocação maravilhosa:

Micro/vibe everything.

Em plena era da IA generativa, isso merece atenção.

Hoje podemos pedir:

“Crie 15 microservices para uma plataforma de vendas.”

E minutos depois receber:

/auth
/customer
/product
/order
/payment
/shipping
/inventory
/notification
/recommendation
...

Temos Dockerfiles.

APIs.

Testes.

YAML.

Filas.

Bancos.

Tudo parece extraordinariamente profissional.

Só existe uma questão:

Por que 15?

Talvez fossem necessários três.

Talvez oito.

Talvez nenhum.

IA reduziu dramaticamente o custo de produzir código.

Mas isso não reduz automaticamente o custo de:

possuir o código.

Alguém terá que entender, testar, proteger, atualizar, observar e recuperar aquilo.

Esta talvez seja uma das maiores mudanças para o arquiteto moderno:

Quanto mais barato fica criar complexidade, mais valiosa fica a capacidade de recusá-la.


🏛️ 16. O velho mainframe entra no laboratório

Aqui nosso programador COBOL pode sorrir.

Mainframes corporativos carregam décadas de lições sobre:

contratos
compatibilidade
transações
workload
segurança
mensageria
recuperação
disponibilidade
observabilidade

Sistemas antigos sobreviveram não porque nunca mudaram.

Sobreviveram justamente porque conseguiram mudar preservando contratos importantes.

Podemos encontrar algo como:

React
   ↓
REST
   ↓
API
   ↓
CICS
   ↓
COBOL
   ↓
Db2

E isso não deveria provocar vergonha arquitetural.

Talvez seja uma arquitetura excelente.

O frontend pode ser substituído.

A API pode evoluir.

A camada de integração pode mudar.

Enquanto isso, uma rotina COBOL comprovada durante bilhões de transações continua fazendo exatamente aquilo para que foi construída.

Chris Knight provavelmente perguntaria:

“Se funciona, escala, é seguro e atende ao negócio... exatamente por que vocês querem reescrever?”

Excelente pergunta.


🧠 17. O que realmente transforma Engineer em Architect

Não é Kubernetes.

Não é Kafka.

Não é AWS, Azure ou qualquer outra plataforma.

Não é conhecer cinquenta design patterns.

A transformação acontece quando mudamos de:

COMO CONSTRUO?

para:

POR QUE CONSTRUIR?

QUAL PROBLEMA?

QUAL ESCALA?

QUAL SLA?

QUAL CUSTO?

COMO FALHA?

COMO RECUPERA?

COMO OBSERVAMOS?

QUEM MANTÉM?

COMO EVOLUI?

QUAL É A ALTERNATIVA MAIS SIMPLES?

Um arquiteto não deveria ser simplesmente o profissional capaz de desenhar mais caixas.

Às vezes sua maior contribuição é pegar o desenho:

□ → □ → □ → □ → □
       ↓
       □
       ↓
   □ → □ → □

e perguntar:

“Podemos fazer isso com três?”


⚖️ 18. A regra Bellacosa-Chris Knight

Podemos transformar toda esta conversa em uma pequena regra:

Não escolha uma arquitetura porque consegue construí-la. Escolha porque consegue justificar sua existência.

Microservices podem ser extraordinários.

Um modular monolith também.

Event-driven architecture pode resolver problemas difíceis.

Uma chamada síncrona simples também.

Kafka pode ser fantástico.

Uma fila MQ pode continuar sendo exatamente aquilo que o problema exige.

REST pode ser perfeito.

Uma transação CICS pode estar executando sua função impecavelmente há décadas.

O arquiteto não deveria possuir religião tecnológica.

Deveria possuir critérios.


🔬 19. Passo a passo: antes de escolher microservices

Quando alguém disser:

“Precisamos de microservices.”

Faça o exercício Chris Knight.

Primeiro pergunte:

Qual problema atual queremos resolver?

Depois:

Precisamos de deployment independente?

Depois:

Partes diferentes precisam escalar independentemente?

Depois:

Existem boundaries de negócio claros?

Depois:

As equipes realmente possuem autonomia?

Depois:

Temos CI/CD maduro?

Depois:

Temos observabilidade?

Depois:

Sabemos operar sistemas distribuídos?

Depois:

Como trataremos consistência de dados?

Finalmente:

Um modular monolith resolveria?

Se ninguém consegue responder à primeira pergunta, não precisamos discutir a décima.


🎓 20. A lição para o programador COBOL iniciante

Se você está começando COBOL e olha para diagramas modernos pensando:

“Meu Deus, preciso aprender tudo isso antes de entender arquitetura.”

Não.

Comece pelos fundamentos.

Entenda profundamente:

dados
interfaces
responsabilidades
transações
dependências
falhas
contratos
estado
recuperação

Aprenda por que existe:

CALL

Entenda por que existe:

COMMIT

Entenda por que existe:

ROLLBACK

Entenda arquivos, Db2, VSAM, CICS e mensageria.

Depois olhe novamente para microservices.

Você começará a reconhecer velhos problemas usando roupas novas.

Naturalmente, sistemas distribuídos trouxeram desafios e soluções próprias. Não devemos fingir que um CALL COBOL e uma chamada HTTP são equivalentes.

Mas ambos obrigam o arquiteto a pensar:

Quem chama quem?

Qual é o contrato?

O que acontece quando falha?

Essas perguntas atravessam gerações tecnológicas.


🍿 Epílogo — alguém trouxe pipoca?

No final, talvez essa seja a melhor contribuição de Chris Knight para nossa imaginária aula de arquitetura.

Tecnologia pode — e deve — ser divertida.

Precisamos experimentar.

Precisamos construir protótipos.

Precisamos estudar microservices, containers, APIs, eventos, IA e tudo aquilo que surgir depois.

Mas devemos conservar uma pequena irreverência diante das modas.

Quando uma apresentação disser:

“Todo mundo está migrando para microservices.”

Pergunte:

Por quê?

Quando disserem:

“Precisamos quebrar o monólito.”

Pergunte:

Onde exatamente ele está nos prejudicando?

Quando disserem:

“Precisamos de 70 serviços.”

Pergunte:

Por que 70?

E quando alguém apresentar uma arquitetura gigantesca para resolver um problema relativamente pequeno, imagine Chris Knight entrando na reunião, olhando aquele maravilhoso laser tecnológico apontado para uma simples panela de milho e perguntando:

“Vocês sabem que existe um jeito mais fácil de fazer pipoca, não sabem?”

Essa é a diferença entre conhecer tecnologia e compreender arquitetura.

O desenvolvedor aprende a construir o laser.

O engenheiro aprende a fazê-lo funcionar.

O arquiteto calcula potência, disponibilidade, segurança e custo.

Mas o Real Genius olha para o requisito e pergunta:

“A gente precisava mesmo do laser?”

Bellacosa Mainframe — porque às 03:17 da madrugada, simplicidade também é uma feature.

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