Translate

domingo, 21 de janeiro de 2024

☕🔥 COMMAREA, CHANNELS e CONTAINERS no CICS TS: O Guia Definitivo para Desenvolvedores COBOL Junior

 

Bellacosa Mainframe e commarea channels e containers no cics ts

☕🔥 COMMAREA, CHANNELS e CONTAINERS no CICS TS: O Guia Definitivo para Desenvolvedores COBOL Junior

Introdução

Todo programador COBOL que inicia no mundo CICS aprende rapidamente três palavras que aparecem em praticamente qualquer aplicação online:

  • COMMAREA

  • CHANNEL

  • CONTAINER

Embora pareçam apenas mecanismos para passagem de parâmetros, na realidade representam três gerações diferentes da evolução do CICS.

Compreender quando utilizar cada abordagem, suas limitações, vantagens, implicações de performance e integração com Web Services, APIs REST e IBM MQ é fundamental para qualquer desenvolvedor que deseje construir aplicações modernas no IBM Z.

A grande dúvida dos iniciantes costuma ser:

"Se a COMMAREA funciona há décadas, por que a IBM criou Channels e Containers?"

A resposta está diretamente relacionada à evolução dos sistemas corporativos.


Como o CICS Enxerga uma Transação

Quando uma transação executa:

Cliente
   |
TRANSAÇÃO
   |
PROGRAMA A

frequentemente o programa precisa:

  • chamar outro programa

  • enviar dados

  • receber retorno

  • transferir controle

Exemplo:

PROGRAMA A
   |
 LINK
   |
PROGRAMA B

Nesse momento os dados precisam ser transferidos.

É aí que entram COMMAREA, CHANNEL e CONTAINER.


COMMAREA — O Clássico do CICS

COMMAREA significa:

Communication Area

Ela surgiu nos primeiros anos do CICS e se tornou durante décadas o principal mecanismo de comunicação entre programas.

Exemplo:

Programa A:

EXEC CICS LINK
     PROGRAM('CLIENTE')
     COMMAREA(WS-COMMAREA)
     LENGTH(200)
END-EXEC

Programa B:

01 DFHCOMMAREA.
   05 CLI-CODIGO PIC 9(08).
   05 CLI-NOME   PIC X(40).

O CICS copia os dados de um programa para outro.


Como Funciona Internamente

Imagine:

PROGRAMA A
   |
   | 200 bytes
   |
PROGRAMA B

O CICS realiza uma cópia física do conteúdo.

Por isso o tamanho importa.


Limite da COMMAREA

O limite máximo teórico é:

64 KB

Na prática:

65.535 bytes

Porém a maioria dos sistemas utiliza:

32 KB

como limite operacional seguro.

Por quê?

Porque historicamente muitos aplicativos e interfaces foram construídos considerando esse valor.


Exemplo de Layout COMMAREA

01 WS-COMMAREA.
   05 WS-HEADER.
      10 WS-OPERACAO PIC X(08).
      10 WS-USUARIO  PIC X(20).

   05 WS-CLIENTE.
      10 WS-CONTA    PIC 9(10).
      10 WS-NOME     PIC X(40).
      10 WS-SALDO    PIC S9(9)V99 COMP-3.

Total:

82 bytes

Vantagens da COMMAREA

Simplicidade

Extremamente fácil.

EXEC CICS LINK

e pronto.


Compatibilidade

Praticamente todos os sistemas CICS do mundo utilizam COMMAREA.


Performance

Para pequenos volumes:

100 bytes
500 bytes
1 KB
2 KB

é extremamente eficiente.


Desvantagens da COMMAREA

Estrutura rígida

Quem envia e quem recebe devem conhecer exatamente o mesmo layout.

Mudou um campo?

Pode quebrar tudo.


Acoplamento forte

Programa A depende diretamente do layout do Programa B.


Limite de tamanho

Web Services modernos frequentemente ultrapassam:

32 KB
50 KB
100 KB
500 KB

A COMMAREA não foi projetada para isso.


O Problema das APIs Modernas

Imagine um JSON:

{
  "cliente": {
     "nome":"João",
     "enderecos":[...],
     "cartoes":[...],
     "seguros":[...]
  }
}

Facilmente pode ultrapassar:

40 KB
80 KB
150 KB

A COMMAREA começa a sofrer.


Surge o CHANNEL

Para resolver isso a IBM criou:

CHANNEL

Pense nele como um envelope.


O que é um CHANNEL?

Um CHANNEL não contém dados.

Ele contém:

CONTAINERS

Imagine:

CHANNEL CLIENTE

   |
   +-- HEADER
   +-- DADOS
   +-- ENDERECOS
   +-- CARTOES
   +-- SEGUROS

O que é um CONTAINER?

Container é onde os dados ficam armazenados.

Cada container possui:

  • nome

  • conteúdo

  • tamanho


Analogia Simples

COMMAREA:

1 caixa gigante

CHANNEL:

1 armário

CONTAINER:

gavetas do armário

Exemplo de Criação

Criando container:

EXEC CICS PUT CONTAINER
     CONTAINER('CLIENTE')
     CHANNEL('CANAL01')
     FROM(WS-DADOS)
     FLENGTH(500)
END-EXEC

Recuperando Dados

EXEC CICS GET CONTAINER
     CONTAINER('CLIENTE')
     CHANNEL('CANAL01')
     INTO(WS-DADOS)
END-EXEC

Limites dos Containers

Ao contrário da COMMAREA:

64 KB máximo

Containers podem armazenar:

Megabytes

de informação.

Na prática:

  • JSON grandes

  • XML grandes

  • payloads extensos

funcionam muito melhor.


Estrutura Recomendada

Exemplo:

CHANNEL CLIENTE

HEADER
CLIENTE
ENDERECOS
TELEFONES
PRODUTOS
LOGS

Cada informação isolada.


Benefícios dos Channels

Menor acoplamento

Cada container pode evoluir independentemente.


Melhor manutenção

Não é necessário reconstruir um layout monolítico.


Escalabilidade

Ideal para integrações modernas.


COMMAREA vs CHANNEL

CaracterísticaCOMMAREACHANNEL
Tamanho64 KBMuito maior
EstruturaÚnicaMúltiplos Containers
JSONLimitadoExcelente
XMLLimitadoExcelente
APIs RESTFracoExcelente
MQBomExcelente
EvoluçãoDifícilFácil

Uso com Web Services

Quando um Web Service recebe:

<cliente>
 ...
</cliente>

ou

{
 ...
}

normalmente o runtime do CICS utiliza:

CHANNEL
CONTAINER

internamente.

Motivo:

Payloads variáveis.


Uso com z/OS Connect

Praticamente todas as implementações modernas utilizam:

JSON
↓
CHANNEL
↓
COBOL

em vez de COMMAREA.


Uso com IBM MQ

MQ pode trabalhar com ambos.


Modelo Tradicional

MQ
  |
COMMAREA
  |
COBOL

Modelo Moderno

MQ
  |
CHANNEL
  |
CONTAINERS
  |
COBOL

Exemplo MQ

Mensagem recebida:

Pedido
Itens
Cliente
Pagamento

Pode ser dividida em:

PEDIDO
ITENS
CLIENTE
PAGAMENTO

Cada parte em um container.


Quando Usar COMMAREA?

Utilize quando:

✅ aplicações legadas

✅ pequenas estruturas

✅ LINK simples

✅ integração interna

Exemplo:

Consulta Cliente
Consulta Agência
Consulta Conta

Quando Usar CHANNEL?

Utilize quando:

✅ APIs REST

✅ JSON

✅ XML

✅ Web Services

✅ MQ moderno

✅ microsserviços

✅ payloads grandes


Estratégia Utilizada pelos Bancos

O que normalmente vemos hoje:

Core COBOL antigo
      |
   COMMAREA

e

APIs novas
      |
CHANNEL
CONTAINER

Os dois convivem perfeitamente.


Erros Comuns dos Iniciantes

Não validar tamanho

LENGTH(...)

deve sempre ser controlado.


Alterar layout sem sincronizar

Clássico problema de COMMAREA.


Usar container gigante

Separar logicamente os dados é melhor.


Não documentar containers

Sempre documente:

CLIENTE
ENDERECO
PRODUTO
PAGAMENTO

Boas Práticas

COMMAREA

  • manter abaixo de 32 KB

  • usar copybooks

  • versionar layouts


CHANNELS

  • containers pequenos

  • nomes padronizados

  • separar responsabilidades


MQ

  • payload desacoplado

  • evitar estruturas gigantes

  • utilizar containers temáticos


Conclusão

A COMMAREA continua viva e continuará por muitos anos. Milhares de aplicações bancárias processam bilhões de transações diariamente utilizando esse mecanismo criado há décadas.

Entretanto, o mundo mudou.

JSON, APIs REST, Open Banking, PIX, Web Services, MQ distribuído e arquiteturas orientadas a serviços exigiram uma evolução do modelo tradicional.

Foi exatamente para atender esse novo cenário que surgiram os Channels e Containers.

O desenvolvedor COBOL moderno não deve enxergar COMMAREA e CHANNEL como concorrentes.

Eles são ferramentas diferentes para problemas diferentes.

A regra prática é simples:

  • COMMAREA para integrações simples e legadas.

  • CHANNEL e CONTAINER para aplicações modernas, APIs, MQ e Web Services.

Quem domina os dois mundos consegue navegar tanto nos sistemas que sustentam os bancos há décadas quanto nas novas arquiteturas digitais que conectam o IBM Z ao restante do planeta.

E essa é uma das habilidades mais valiosas para qualquer programador COBOL que deseja evoluir para desenvolvedor CICS de alto nível.

sábado, 20 de janeiro de 2024

☕💀 “RE:MONSTER” — O GOBLIN QUE TRANSFORMOU EVOLUÇÃO BIOLÓGICA EM UM SISTEMA OPERACIONAL DE GUERRA E PROVOU QUE O MAIOR PREDADOR DO ISEKAI NÃO ERA O HERÓI… ERA O PROCESSAMENTO ADAPTATIVO 🖥️🔥

 

Bellacosa Mainfrmae e o RE:Monster o goblin gulos

☕💀 “RE:MONSTER” — O GOBLIN QUE TRANSFORMOU EVOLUÇÃO BIOLÓGICA EM UM SISTEMA OPERACIONAL DE GUERRA E PROVOU QUE O MAIOR PREDADOR DO ISEKAI NÃO ERA O HERÓI… ERA O PROCESSAMENTO ADAPTATIVO 🖥️🔥

A evolução do Globin


☕ Introdução — Quando o Isekai Saiu do Modo “Herói” e Entrou em “Sobrevivência Selvagem”

Durante anos, o gênero isekai foi dominado por:

  • protagonistas gentis,

  • mundos coloridos,

  • guildas aventureiras,

  • escolas mágicas,

  • e o eterno “rei demônio”.

Então surgiu RE:MONSTER.

E o anime basicamente disse:

“Esqueça cavaleiros. Esqueça honra. A evolução pertence a quem consegue sobreviver.” 💀

O resultado foi uma obra que misturou:

  • fantasia sombria,

  • progressão monstruosa,

  • biologia predatória,

  • sobrevivência tribal,

  • e um protagonista que age mais como um processo autônomo de adaptação do que como um ser humano.


📜 Informações Oficiais

📌 Título Original

Re:Monster (リ・モンスター)

✍️ Autor

Kogitsune Kanekiru

🎨 Ilustrador da Light Novel

Yamaada

🏢 Estúdio do Anime

Studio DEEN

📅 Estreia do Anime

Abril de 2024

📚 Origem

  • Web Novel

  • Light Novel

  • Mangá

🎭 Gêneros

  • Isekai

  • Dark Fantasy

  • Ação

  • Sobrevivência

  • Evolução Monstruosa

  • Aventura

  • Seinen

🔞 Classificação Indicativa

+16 / +18 dependendo da região

Por conter:

  • violência,

  • gore,

  • escravidão,

  • temas sexuais,

  • brutalidade psicológica.

📺 Episódios

12 episódios (1ª temporada)


🖥️ Sinopse — O Processo Que Reinicializou Como Goblin

Tomokui Kanata era um humano comum… até ser assassinado.

Após morrer, ele renasce em outro mundo como um goblin recém-nascido chamado Gobrou.

Mas existe um BUG crítico no sistema:

✅ ele manteve memórias humanas
✅ ele possui inteligência superior
✅ ele herdou a habilidade “Absorption”

Tudo o que ele devora:

  • habilidades,

  • magia,

  • resistência,

  • atributos,

  • características biológicas,

…pode ser incorporado ao seu corpo.

E aí o anime abandona totalmente a ideia de “aventura heroica”.

O que vemos é:

uma entidade evolutiva crescendo exponencialmente até se tornar uma arma biológica consciente.


☕ A Grande Diferença de RE:MONSTER

A maioria dos isekais pergunta:

“Como um humano sobreviveria em outro mundo?”

RE:MONSTER pergunta algo muito mais sombrio:

“O que aconteceria se a evolução deixasse de ter limites morais?”

Essa é a verdadeira essência da obra.

Gobrou não é exatamente:

  • herói,

  • vilão,

  • anti-herói tradicional.

Ele funciona como:

  • algoritmo adaptativo,

  • inteligência predatória,

  • sistema autônomo de sobrevivência.

É quase:

“um workload manager orgânico evoluindo em produção.” 💀🖥️


🧠 A Temática Oculta — Darwinismo Selvagem

O anime trabalha fortemente:

  • seleção natural,

  • poder biológico,

  • tribalismo,

  • dominância,

  • pragmatismo extremo.

Aqui:

  • bondade não garante sobrevivência,

  • honra não impede morte,

  • moralidade não impede extinção.

O mundo de RE:MONSTER funciona como um ecossistema hostil onde:

adaptação é mais importante que ética.

Isso faz o anime parecer muito mais “cru” que:

  • Slime

  • Overlord

  • Shield Hero


⚔️ As Aventuras — Cada Arco é um Upgrade de Sistema

🩸 Sobrevivência Goblin

No começo:

  • fome,

  • fraqueza,

  • hierarquia brutal,

  • predadores,

  • tribos inimigas.

Gobrou aprende rapidamente:

quem não evolui… vira alimento.


🔥 Formação da Tribo

Ele começa a:

  • organizar goblins,

  • treinar guerreiros,

  • estruturar liderança,

  • criar estratégias.

É praticamente:

“ITIL aplicado em gerenciamento tribal goblin.” ☕


☠️ Evolução Orgânica

Cada batalha gera:

  • novas habilidades,

  • mutações,

  • upgrades corporais,

  • absorção genética.

A sensação é de assistir:

um sistema z/OS fazendo IPL contínuo sem downtime.


🧬 Transformação em Ogre

Aqui o anime muda completamente de escala.

Gobrou deixa de parecer:

  • criatura fraca,

  • monstro genérico.

E passa a virar:

  • comandante,

  • predador alfa,

  • entidade quase mítica.


🖥️ O Protagonista — Um “Sysprog Biológico”Gobrou lembra um sysprog veterano porque ele:

  • otimiza tudo,

  • reaproveita recursos,

  • aprende rápido,

  • automatiza sobrevivência,

  • escala poder continuamente.

Ele não luta por justiça.

Ele luta por:

  • eficiência,

  • continuidade,

  • domínio,

  • estabilidade da tribo.


🏢 O Studio DEEN — O Estúdio das Obras Polêmicas

O anime foi produzido pelo:

Studio DEEN

Um estúdio conhecido por:

  • obras cult,

  • adaptações controversas,

  • produções experimentais,

  • animes adultos e sombrios.

Eles participaram de:

  • Higurashi

  • Konosuba (temporadas antigas)

  • Fate/stay night clássico

  • Rurouni Kenshin antigo

O DEEN frequentemente divide opiniões:

  • alguns amam,

  • outros criticam animação inconsistente.

Em RE:MONSTER:

  • o foco ficou mais na atmosfera,

  • progressão,

  • brutalidade,

  • do que em animação ultra fluida.


🚨 Houve Censura?

Sim… parcialmente.


A obra original possui:

  • violência mais pesada,

  • conteúdo sexual mais explícito,

  • situações extremamente controversas.

O anime suavizou:

  • algumas cenas sexuais,

  • brutalidade gráfica,

  • certos momentos envolvendo escravidão e reprodução.

Mesmo assim:
o conteúdo ainda foi considerado pesado para parte do público.


🧩 Mensagens Ocultas e Filosofia

☕ 1. Evolução sem ética

O anime pergunta:

“Se a sobrevivência estiver em jogo, a moral ainda importa?”


☕ 2. Humanidade é apenas uma camada superficial

Gobrou lentamente deixa de agir como humano.

O anime mostra:

  • desumanização,

  • adaptação extrema,

  • transformação psicológica.


☕ 3. Poder muda percepção

Quanto mais forte Gobrou fica:

  • menos ele teme,

  • menos ele hesita,

  • mais distante ele fica da humanidade original.


🌍 Impacto Cultural

RE:MONSTER ganhou destaque porque:

  • ajudou a popularizar “monster evolution isekai”,

  • reforçou o arquétipo do protagonista não humano,

  • influenciou debates sobre moralidade em isekais modernos.

Ele se tornou referência para fãs de:

  • progressão de poder,

  • fantasia biológica,

  • protagonistas monstruosos.


⚠️ Por Que o Anime Divide Tanto o Público?

Porque ele quebra regras modernas do gênero.

Hoje muitos animes tentam:

  • suavizar violência,

  • romantizar protagonistas,

  • criar heróis simpáticos.

RE:MONSTER faz o contrário:

  • sobrevivência brutal,

  • pragmatismo,

  • evolução predatória,

  • poder acima da moralidade.

Isso cria:

  • fascínio,

  • desconforto,

  • polêmica,

  • culto de fãs.


☕ Comparações Técnicas de Datacenter (Modo Bellacosa Mainframe)

Gobrou é praticamente:

  • um z/OS adaptativo,

  • um RACF biológico,

  • um WLM orgânico,

  • um sistema de auto-upgrade em runtime.

Cada inimigo derrotado vira:

  • patch,

  • upgrade,

  • módulo carregado,

  • capability expansion.

💀 Em outras palavras:

“o protagonista transforma combate em instalação incremental de firmware genético.”


🏆 Vale a Pena?

Vale MUITO se você gosta de:

✅ evolução constante
✅ dark fantasy
✅ protagonistas monstruosos
✅ progressão absurda
✅ sobrevivência brutal
✅ anti-heróis pragmáticos

Talvez NÃO se:

❌ procura fantasia leve
❌ prefere heróis tradicionais
❌ não gosta de temas moralmente cinzentos
❌ se incomoda com violência e escravidão


☕ Conclusão

RE:MONSTER não é apenas um isekai.

É:

uma análise brutal sobre evolução, sobrevivência e poder absoluto em um mundo onde ética vale menos que capacidade adaptativa.

O anime pergunta algo profundamente desconfortável:

“Quando a sobrevivência vira prioridade absoluta… o que sobra da humanidade?”

E talvez seja exatamente essa pergunta que transformou RE:MONSTER em um dos isekais mais estranhos, polêmicos e fascinantes da fantasia moderna. 💀🖥️🔥

sexta-feira, 19 de janeiro de 2024

☕🚆 “O ANIME MAIS ESTRANHO DE 2024?” — SHUUMATSU TRAIN DOKO E IKU? E O COLAPSO TOTAL DA REALIDADE NOS TRILHOS DO FIM DO MUNDO

Bellacosa Mainframe e o final do mundo dentro de um trem shuumatsu train

 ☕🚆 “O ANIME MAIS ESTRANHO DE 2024?” — SHUUMATSU TRAIN DOKO E IKU? E O COLAPSO TOTAL DA REALIDADE NOS TRILHOS DO FIM DO MUNDO

☕🚆 Shuumatsu Train Doko e Iku? — “Train to the End of the World”

📌 Informações Gerais

ItemDetalhes
Título Original終末トレインどこへいく? (Shuumatsu Train Doko e Iku?)
Título InternacionalTrain to the End of the World
Criação Originalapogeego
DireçãoTsutomu Mizushima
Roteiro/ComposiçãoMichiko Yokote
StudioEMT Squared
Data de Lançamento1º de abril de 2024
TemporadaSpring 2024
Episódios12
GênerosPós-apocalíptico, sci-fi, slice of life, surrealismo, aventura, comédia absurda
ClassificaçãoTeen/Seinen leve

Música de abertura“GA-TAN GO-TON”
Ending“Eureka”

☕🔥 O QUE É SHUUMATSU TRAIN DOKO E IKU?

Imagine:

  • Girls Last Tour,

  • FLCL,

  • Sonny Boy,

  • Mawaru Penguindrum,

  • e um sistema legado IBM completamente corrompido…

…tudo isso dentro de um trem atravessando um Japão quebrado pela própria tecnologia.

Esse anime não é apenas uma aventura pós-apocalíptica.

Ele é:

uma viagem filosófica sobre colapso da realidade, isolamento social, desconexão humana e sobrevivência emocional.

E faz isso usando:

  • humor nonsense,

  • diálogos caóticos,

  • horror existencial,

  • e absurdismo japonês puro.


🚆 SINOPSE

Após o lançamento experimental da rede 7G, algo terrível acontece.

A realidade entra em colapso.

O Japão inteiro sofre distorções:

  • cidades desaparecem,

  • distâncias mudam,

  • pessoas viram animais,

  • regras físicas deixam de existir,

  • e o país se transforma num mosaico surrealista. 

Na cidade rural de Agano:

  • todos os adultos acima de 21 anos viram animais falantes.

Quando Shizuru descobre que sua amiga desaparecida Yoka pode estar viva em Ikebukuro, ela decide embarcar num trem abandonado com suas amigas.

E assim começa:

uma das viagens mais estranhas dos animes modernos.


☕🚂 RESUMO DA HISTÓRIA

A estrutura da temporada funciona quase como:

  • uma road movie,

  • um RPG episódico,

  • ou uma sequência de “zonas corrompidas”.

Cada estação ferroviária apresenta:

  • uma sociedade diferente,

  • uma distorção diferente,

  • e novas regras absurdas.

O trem literalmente atravessa:

  • cidades zumbificadas,

  • realidades deformadas,

  • cultos estranhos,

  • pessoas transformadas,

  • ambientes que parecem sonhos febris.

Mas o anime não trata isso como horror puro.

Ele trata como:

“a nova normalidade.”

E é justamente isso que torna tudo desconfortável.


☕🔥 ANÁLISE BELLACOSA MAINFRAME

🖥️ “O Japão virou um grande ambiente legacy sem documentação”

O 7G funciona exatamente como:

  • uma atualização crítica aplicada sem rollback,

  • sem teste em homologação,

  • sem disaster recovery,

  • e sem governança.

Resultado?

ABEND nacional.

O mundo de Shuumatsu Train parece:

  • um z/OS corrompido,

  • subsistemas fora de sincronismo,

  • VTAM enlouquecido,

  • JES2 travando spool,

  • DB2 inconsistente,

  • e CICS operando em modo sobrevivência.

Cada cidade é praticamente:

um subsystem quebrado tentando continuar vivo.

E o trem?
O trem é o batch sobrevivente.

Ele continua rodando mesmo quando:

  • ninguém entende mais a arquitetura original,

  • ninguém sabe as dependências,

  • e toda a documentação desapareceu.


👧 PERSONAGENS PRINCIPAIS

🚂 Shizuru Chikura

A protagonista.

Determinada, emocionalmente reprimida e extremamente resiliente.

Ela representa:

a insistência humana em continuar mesmo sem compreender o sistema ao redor.

Shizuru é o “operador veterano” do anime.
Ela não entende tudo.
Mas continua mantendo o ambiente funcionando.


🌌 Yoka Nakatomi

A ausência mais presente da obra.

Yoka simboliza:

  • inocência perdida,

  • influência tecnológica,

  • e o perigo do escapismo digital.

Ela acaba ligada diretamente ao colapso do 7G.  


📚 Akira Shinonome

A intelectual do grupo.

Obcecada por literatura e cultura antiga.

Funciona como:

o “arquivo histórico” da humanidade.

Ela constantemente tenta racionalizar o irracional.


⚡ Reimi Kuga

Explosiva e emocional.

É quem traz energia e humanidade ao grupo.

Representa:

  • instinto,

  • impulsividade,

  • sobrevivência emocional.


🍄 Nadeshiko Hoshi

A mais “normal” do grupo.

E exatamente por isso:

ela vira o ponto de estabilidade emocional do anime.


🌍 TEMÁTICAS PROFUNDAS

🔥 1. Tecnologia sem controle

O anime é uma crítica pesada à:

  • dependência digital,

  • hiperconectividade,

  • redes sociais,

  • e aceleração tecnológica.

O 7G simboliza:

tecnologia avançando mais rápido que a capacidade humana de compreendê-la.


🌌 2. A realidade virou subjetiva

Cada cidade possui suas próprias regras.

Isso reflete:

  • bolhas sociais,

  • tribalismo digital,

  • algoritmos,

  • internet fragmentada.

Cada comunidade vive numa “verdade própria”.

Exatamente como a internet moderna.


🚂 3. O trem como metáfora existencial

O trem é:

  • progresso,

  • movimento,

  • passagem do tempo,

  • fuga,

  • amadurecimento.

As garotas seguem avançando mesmo sem saber:

  • se existe destino,

  • se o mundo pode ser salvo,

  • ou se ainda existe normalidade.


☕ 4. Solidão pós-moderna

Mesmo cheio de humor, o anime é profundamente melancólico.

Todos os personagens parecem:

  • desconectados,

  • perdidos,

  • emocionalmente isolados.

O fim do mundo aqui não é explosivo.

É silencioso.


🎨 DIREÇÃO E ESTILO VISUAL

Tsutomu Mizushima usa:

  • enquadramentos desconfortáveis,

  • timing cômico estranho,

  • caos visual,

  • e ambientação surreal.

O orçamento do anime claramente não é gigantesco.

Mas a direção transforma limitação em identidade.

O anime parece:

um sonho estranho entre nostalgia e pesadelo.


🎵 TRILHA SONORA

A opening “GA-TAN GO-TON” virou uma das músicas mais memoráveis da temporada Spring 2024. 

Ela transmite:

  • viagem,

  • melancolia,

  • esperança,

  • e decadência.

Já “Eureka” encerra os episódios com aquela sensação:

“o mundo acabou… mas ainda estamos vivos.”


🔥 O QUE TORNA ESSE ANIME DIFERENTE?

✅ 1. Pós-apocalipse sem foco em violência

Não é:

  • Mad Max,

  • Attack on Titan,

  • ou Fallout.

O foco é:

  • comportamento humano,

  • estranheza,

  • absurdo existencial.


✅ 2. Surrealismo inteligente

O anime nunca explica tudo.

Ele quer:

  • desconfortar,

  • intrigar,

  • causar fascínio.

Isso lembra muito obras cult clássicas.


✅ 3. Atmosfera única

Pouquíssimos animes conseguem equilibrar:

  • fofura,

  • horror cósmico,

  • humor nonsense,

  • e melancolia existencial.


✅ 4. Road movie ferroviário

O trem vira praticamente um personagem.

Cada parada:

  • é um mini universo,

  • um experimento psicológico,

  • uma crítica social.


⚠️ PONTOS FRACOS

❌ Final acelerado

Muitos espectadores sentiram que:

  • o encerramento corre demais,

  • algumas ideias não foram aprofundadas,

  • e o lore poderia render muito mais episódios. 


❌ Não é anime para todos

Quem busca:

  • batalhas,

  • power scaling,

  • explicações lógicas,

  • narrativa tradicional,

pode estranhar MUITO.


☕🔥 IMPACTO E RECEPÇÃO

A comunidade anime ficou dividida:

  • alguns chamaram de obra-prima cult,

  • outros acharam caótico demais.

Mas praticamente todos concordam em algo:

esse anime tem personalidade própria.

Num mercado cheio de fórmulas repetidas…
isso vale ouro.


☕🚆 VEREDITO BELLACOSA MAINFRAME

CategoriaNota
Criatividade10/10
Atmosfera10/10
Construção de mundo9/10
Desenvolvimento emocional8.5/10
Narrativa8/10
SurrealismoABSURDO
OriginalidadeEXTREMAMENTE RARA

☕🔥 CONCLUSÃO FINAL

Shuumatsu Train Doko e Iku? é uma das obras mais originais da década recente dos animes.

Ele pega:

  • slice of life,

  • pós-apocalipse,

  • surrealismo,

  • sci-fi,

  • horror existencial,

  • e amizade adolescente…

…e transforma tudo numa viagem ferroviária psicodélica sobre:

  • conexão humana,

  • colapso tecnológico,

  • e sobrevivência emocional.

No estilo Bellacosa Mainframe:

☕ “Quando o sistema operacional da realidade sofre corrupção irreversível… ainda existe um último batch job atravessando os trilhos do caos.” 

quinta-feira, 18 de janeiro de 2024

A internet ficou mais chata?

 


A internet ficou mais chata?

Censura, vigilância moral e o fim da autonomia digital**

Por muito tempo a internet representou o território da liberdade. Espaço onde se tropeçava no bizarro, no proibido, no criativo e no nonsense sem filtro. Nos últimos anos, entretanto, a sensação dominante entre muitos usuários é clara: algo mudou. Tudo parece altamente policiado. Há sempre alguém julgando, denunciando ou “ensinando o que é o certo”.

A pergunta surge com força:
por que a internet está mais chata e moralista?

Este post não busca respostas absolutas. O objetivo é mapear os elementos que explicam essa “nova ordem digital”.


1. Plataformas centralizaram o poder

A internet antes era fragmentada. Hoje, concentra-se em meia dúzia de aplicativos. Quem controla essas plataformas controla:

• o que pode ser dito
• o que pode ser visto
• o que pode ser monetizado

O algoritmo virou o verdadeiro editor-chefe do mundo. Ele decide o que ganha espaço e o que é enterrado no limbo do irrelevante. Isso gera a sensação de que há um “curador invisível” guiando nossas escolhas.


2. A monetização exige ambiente “seguro”

Publicidade teme polêmicas. Para proteger anunciantes, as plataformas implementam filtros mais rígidos. Conteúdos eróticos, violentos, politizados ou “tabu” sofrem desvalorização automática.

Resultado:
o conteúdo neutro e insosso é mais recompensado do que o autêntico e arriscado.

A criatividade perde para o medo de ser desmonetizado ou banido.


3. Novo puritanismo social

Mesmo sem leis diretas, a vigilância moral aumentou. Grupos organizados promovem cancelamentos e campanhas de linchamento simbólico. Certas opiniões deixam de ser “controversas” para se tornarem proibitivas.

Isso gera autocensura. O usuário passa a se policiar para evitar punição social.


4. Regulamentações estatais em expansão

Governos adotam legislações para combate a:

• desinformação
• ódio
• exploração
• crimes virtuais

Essa normatização surge de preocupações legítimas, porém cria efeitos colaterais. Para evitar problemas legais, empresas aumentam o bloqueio automático de temas sensíveis.

O risco é simples: no esforço para proteger, pode-se começar a tolher demais.


5. O algoritmo quer perfeição emocional

Plataformas associam “bem-estar” a ausência de desconforto. Qualquer conteúdo complexo, provocativo ou que exija reflexão pode ser interpretado como “negativo”.

Assim, a cultura da internet se infantiliza. O contraditório vira inimigo.

A máquina protege o usuário do mundo, mas também o protege de pensar.


O que realmente mudou

A internet não é mais o espelho da humanidade.
Ela se tornou o produto daquilo que empresas e comunidades acreditam que deve ser aceito.

Antigamente:
→ o usuário moldava a rede
Hoje:
→ a rede molda o usuário

Cada clique é avaliado.
Cada palavra é rastreada.
Cada desejo é classificado.

A autonomia dá lugar à curadoria forçada.


Conclusão

A pergunta do título talvez esteja mal formulada.
A internet não ficou necessariamente mais “chata”.
Ela ficou governada.

O espaço que antes era caos criativo agora opera sob:

• algoritmos que selecionam o que “pode”
• moralistas que policiam o que “deve”
• anunciantes que decidem o que “vende”

A liberdade existe… desde que dentro das regras do feed.

A era da internet anárquica terminou.
Vivemos agora na internet domesticada.

quarta-feira, 17 de janeiro de 2024

Mainframe, conheça um pouco sobre Sistemas Centrais

Mainframe Grande computadores predominantemente oriundos da IBM com grande poder computacional, que esta por traz de todos os processos governamentais, grandes bancos, seguradoras e complexos militares. Trabalha através de processo online via transações assíncronas CICS, síncronas CICS, chamadas JAVA ao DB2 e processamento Batch em janelas de horário.

terça-feira, 16 de janeiro de 2024

🔥 IBM 3592 JF – O cartucho que carrega impérios de dados

 


🔥 IBM 3592 JF – O cartucho que carrega impérios de dados




🧠 Introdução – quando o dado dorme em fita, mas sonha em petabytes

Se você acha que fita magnética é coisa de museu, é porque nunca encarou um IBM 3592 JF rodando em um TS1140/TS1150 dentro de um data center que parece mais uma nave espacial do que uma sala fria.
O 3592 JF não é “backup”. Ele é arquivo corporativo, retenção legal, seguro contra ransomware e, em muitos bancos, a última linha de defesa da civilização digital.

Bem-vindo ao mundo onde dados não são deletados — são arquivados com honra.


📜 História – da fita de rolo ao JF

A linhagem do IBM 3592 nasce no início dos anos 2000 como sucessor espiritual das 3490/3480.
O sufixo JF marca uma geração madura, refinada, feita para:

  • Ambientes z/OS heavy-duty

  • Integração com DFSMS/HSM

  • Coexistência com VTS, TS7700 e GDPS

📼 O JF é o tipo de mídia que sobrevive a mudanças de diretoria, ERPs, fusões e três modas de cloud.


🧱 Arquitetura do cartucho IBM 3592 JF

Características físicas e lógicas:

  • 📏 Formato proprietário IBM (não confundir com LTO)

  • 💾 Capacidade nativa: ~700 GB

  • 🗜️ Capacidade com compressão: até ~2–3 TB (dependendo do workload)

  • 🔐 Suporte a criptografia por hardware

  • 🧬 Servo tracking de altíssima precisão

💡 Easter egg: a densidade da fita é tão alta que um cartucho mal acondicionado “grita” no log do drive antes mesmo de falhar.


🏗️ Onde ele vive no mundo real

Normalmente você encontra o 3592 JF em:

  • 🗄️ IBM TS3500 / TS4500 Tape Library

  • 🧠 TS7700 (Virtual Tape Server) como mídia física de backend

  • 🧾 Ambientes regulados: bancos, seguradoras, governos

Ele conversa intimamente com:

  • z/OS DFSMS

  • HSM (Hierarchical Storage Manager)

  • DFSMShsm Migration / Recall


🔄 Workflow clássico no mainframe

📌 Passo a passo “vida de fita”

  1. Dataset criado (PS ou GDG)

  2. Política de SMS decide: disk hoje, fita amanhã

  3. HSM migra o dataset para fita

  4. Catalog aponta para volume JF

  5. Recall on-demand traz o dado de volta

  6. Dataset volta ao disco como se nada tivesse acontecido

🧙‍♂️ Magia negra mainframe: a aplicação nunca sabe que o dado dormiu em fita.


📊 Logs, SMF e rastros

O 3592 JF deixa pegadas elegantes:

  • SMF 14/15 – uso de fita

  • SMF 42 – atividades de DFSMS

  • SMF 94 – criptografia

  • Logs do TS7700 (se virtualizado)

📎 Dica Bellacosa: fita não mente. Se algo sumiu, o SMF sabe onde foi parar.


🧩 Curiosidades que só quem viveu sabe

  • ☕ Drives 3592 “acordam” antes do operador terminar o café

  • 🔁 Uma fita JF pode sobreviver 30 anos se bem armazenada

  • 🧯 Ransomware odeia fita — ela não monta sozinha

  • 🎩 Cartucho com label mal escrito vira lenda urbana no CPD


🛠️ Dicas práticas de sobrevivência

✔️ Padronize nomenclatura de volumes
✔️ Nunca misture JF com JE/JB sem planejamento
✔️ Use criptografia nativa, não “caseira”
✔️ Monitore recalls excessivos (sinal de má política de HSM)
✔️ Tape não é lenta — lento é acesso mal desenhado


📚 Guia de estudo para mainframers

📖 Leia e domine:

  • DFSMS Storage Administration

  • DFSMShsm Implementation

  • IBM TS11xx Drive Redbooks

  • SMF 14/15 deep dive

🧠 Exercício clássico:

Simule migração, expiração, recall e auditoria de um dataset crítico sem que a aplicação perceba.


🧪 Aplicações reais do IBM 3592 JF

  • 📜 Retenção legal (7–30 anos)

  • 🏦 Histórico financeiro imutável

  • 🧬 Dados médicos arquivados

  • 🛰️ DR offline (air gap real)

  • 📦 Data lake pré-cloud que ainda funciona


🧨 Comentário final – El Jefe Style

Enquanto o mundo discute se “cloud é o futuro”, o IBM 3592 JF continua fazendo o que sempre fez:
guardar o passado para proteger o futuro.

No mainframe, fita não é legado.
É estratégia.

🔥 Midnight Lunch aprovado. A fita gira, o dado dorme, o mainframer sorri.


segunda-feira, 15 de janeiro de 2024

🕴️ O Homem Médio: o “Salaryman” dos Animes



🕴️ O Homem Médio: o “Salaryman” dos Animes

💼 Quem é o Salaryman?

O salaryman (サラリーマン) é o trabalhador assalariado urbano japonês — terno escuro, gravata, pastinha na mão, metrô lotado às 7 da manhã. Ele é o homem médio, aquele que vive para o emprego, fiel à empresa quase como a um clã.
O termo nasceu no pós-guerra, quando o Japão reconstruía sua economia. As grandes corporações ofereciam emprego vitalício e esperavam, em troca, lealdade total. O resultado? Uma geração de homens moldados pela rotina e pelo sacrifício pessoal.


☕ O arquétipo nos animes

Nos animes, o salaryman aparece tanto como figura trágica quanto cômica. Ele é o homem invisível da metrópole, cercado de néon e solidão. Alguns exemplos emblemáticos:

  • “Aggretsuko” (2018) – Um retrato hilário e melancólico: Retsuko, uma panda-vermelha contadora, sofre com o chefe abusivo e desabafa cantando death metal no karaokê.

  • “Shinya Shokudō” (Midnight Diner) – Mostra o lado humano do salaryman noturno: gente exausta que encontra um pouco de calor em uma tigela de sopa quente às 2 da manhã.

  • “Salaryman Kintarō” (1999) – Um ex-gângster tenta se adaptar à vida corporativa — uma crítica direta ao conformismo e à hierarquia do escritório japonês.

  • “Tokyo Godfathers” (2003) e “Perfect Blue” (1997) também mostram figuras masculinas presas à rotina, sufocadas pela cidade e pelo peso das aparências.


🔁 O ciclo da rotina

O dia do salaryman é quase ritualístico:

  • Acordar cedo, metrô lotado.

  • Trabalho até tarde.

  • Bebedeira com os colegas (por obrigação).

  • Dormir poucas horas, e repetir tudo amanhã.

É uma vida sem clímax narrativo, o oposto da jornada do herói — e justamente por isso, fascinante. O salaryman é o anti-herói moderno: alguém que vive para manter o sistema em funcionamento, sem jamais ser notado.


💔 O custo da conformidade

Essa cultura gera o fenômeno do karōshi (過労死) — morte por excesso de trabalho. Também alimenta temas como solidão, escapismo, jōhatsu (desaparecimento voluntário) e hikikomori.
Nos animes mais sérios, o salaryman é usado para discutir a perda da identidade e o vazio existencial na sociedade japonesa contemporânea.


🌃 Curiosidades e detalhes culturais

  • Muitos salarymen dormem no trem e decoram o tempo exato da viagem para acordar na estação certa.

  • As empresas incentivam o nomikai (bebedeira corporativa) como forma de “harmonizar o grupo”, o que mistura hierarquia e alcoolismo leve.

  • mangás slice of life só sobre o cotidiano desses homens, como “Hataraki Man” e “Shima Kōsaku” — ambos exploram as pressões e pequenas vitórias do mundo corporativo.


💡 Porque o “salaryman” importa

Ele é o espelho do cidadão comum — aquele que trabalha, sofre e sonha pequeno. No Japão, onde o coletivo vale mais que o indivíduo, o salaryman é o herói trágico que sustenta a engrenagem.
Nos animes, ele é lembrado como o homem que não salvou o mundo, mas o manteve girando.

quarta-feira, 10 de janeiro de 2024

Artigos para ler, Um Roteiro teórico para trabalhar com Mainframe

Roteiro para aprender Mainframe Antes de começarmos, vamos falar sobre computadores, vamos ver as origens, saber sobre computadores e computação.
Leia na Integra

segunda-feira, 8 de janeiro de 2024

🔮 Um Ano Depois — A Memória e a Ferida

 



🔮 Um Ano Depois — A Memória e a Ferida
Por Bellacosa Mainframe | Crônicas do Brasil Inacabado


Um ano.
Doze voltas completas do sol desde o dia em que Brasília foi tomada pela própria sombra.
As vidraças já foram trocadas, os tapetes lavados, os salões voltaram ao brilho cerimonial —
mas as feridas que importam não sangram por fora.

O Brasil chegou a 8 de janeiro de 2024 com o mesmo espelho rachado na alma.
O concreto foi restaurado.
A confiança, não.


🌫️ O Tempo Cura — Mas Não Apaga
O país tenta seguir.
As manchetes mudaram de tema, os discursos migraram para novas polêmicas,
mas basta uma imagem — a bandeira caída, a cúpula quebrada —
para que tudo volte como um eco.

Aquela tarde virou símbolo e cicatriz.
Não mais o susto, mas o sintoma de uma doença longa:
a incapacidade nacional de escutar antes de gritar.


⚙️ O Ano Seguinte em Cinco Movimentos

  1. Os Julgamentos: o STF, agora símbolo de reconstrução, virou palco de justiça e debate moral. As sentenças se tornaram espelhos — uns viram punição, outros viram vingança.

  2. O Esquecimento: o noticiário se cansou. As redes seguiram o ciclo do novo escândalo. Mas há quem ainda acorde com a lembrança de sirenes ecoando no coração da Praça dos Três Poderes.

  3. A Política dos Cacos: os discursos ficaram mais afiados, o país mais cético. Brasília aprendeu a temer o próprio povo — e o povo a desconfiar de tudo.

  4. Os Documentários: o cinema e a TV começaram a narrar o episódio com a frieza do tempo — como quem tenta compreender um trauma coletivo.

  5. O Turismo da Memória: hoje há visitas guiadas que mostram onde o caos entrou. Brasília transformou o horror em aula de história.


💀 Curiosidades do Esquecimento
🔸 As cadeiras do plenário do STF foram restauradas por artesãos de Minas — cada entalhe feito à mão, como quem reza.
🔸 Uma pintura destruída naquele dia, “A Justiça”, foi restaurada e hoje carrega uma marca discreta da invasão, deixada propositalmente — uma cicatriz exposta como lembrança.
🔸 Professores de História chamam o episódio de “Domingo de Cinzas da República”.
🔸 E há quem colecione souvenirs digitais: prints, vídeos, memes — fragmentos de um pesadelo transmitido ao vivo.


🕯️ A Ferida e o Aprendizado
Um país não amadurece sem olhar seus fantasmas.
O 8 de janeiro ensinou que a democracia não morre em golpes súbitos —
ela morre aos poucos, na banalização da mentira,
na paixão cega, na desistência de pensar.

O Brasil vive a ressaca de um delírio coletivo.
E, no meio da confusão, descobre que reconstruir não é punir —
é educar, é lembrar, é repetir até que doa menos.


💭 Para o Padawan, aprendiz do caos e da calma:

“O poder é frágil quando o povo esquece o porquê das leis.
A liberdade não se sustenta no grito, mas no entendimento silencioso.”

Um ano depois, Brasília segue de pé,
mas cada vidro reflete mais do que o horizonte —
reflete a dúvida que paira sobre todos nós:
seremos capazes de aprender com o erro?


🌌 Epílogo: A Cidade Que Sobreviveu ao Seu Povo
Brasília, com suas linhas perfeitas e vazios geométricos,
segue sendo o coração de um país emocionalmente caótico.
O concreto resistiu.
O mito da estabilidade, não.

Mas talvez, como toda ferida, essa também traga um antídoto escondido:
a lembrança de que a democracia é obra diária, não monumento.


🕯️ Um ano depois, o Brasil não é o mesmo —
e talvez isso seja o primeiro sinal de que ainda há salvação.

sexta-feira, 5 de janeiro de 2024

☕💣 TESTOU 100% DOS CASOS... E MESMO ASSIM QUEBROU EM PRODUÇÃO? O MAIOR MITO DOS TESTES EM MAINFRAME QUE AINDA ENGANA MUITA GENTE

 

Bellacosa Mainframe e a cobertura de testes em mainframe

☕💣 TESTOU 100% DOS CASOS... E MESMO ASSIM QUEBROU EM PRODUÇÃO? O MAIOR MITO DOS TESTES EM MAINFRAME QUE AINDA ENGANA MUITA GENTE

Se existe uma frase que todo profissional de Mainframe já ouviu alguma vez, ela é:

"O programa foi totalmente testado."

Curiosamente, essa mesma frase costuma aparecer poucas horas antes de um incidente em produção.

E aqui está uma verdade que muitos profissionais descobrem apenas depois de alguns anos de guerra:

Não existe programa totalmente testado.

O que existe é um programa com um nível de cobertura suficientemente alto para reduzir o risco a um patamar aceitável.

A pergunta correta nunca deveria ser:

"O programa foi testado?"

Mas sim:

"Qual foi a cobertura real do teste?"

E mais importante ainda:

"O que ficou sem ser testado?"

Hoje vamos conversar sobre um dos assuntos mais importantes para analistas, desenvolvedores COBOL, testadores, líderes técnicos e gestores de aplicações Mainframe:

Como medir cobertura de testes, construir um plano realmente abrangente e aumentar drasticamente a qualidade das entregas.

Pegue seu café.

Porque cobertura de teste não é quantidade de cenários.

É ciência.


O grande erro: confundir quantidade com cobertura

Muitos profissionais acreditam que executar muitos casos de teste significa possuir alta cobertura.

Não significa.

Imagine um programa COBOL com:

  • 20 IFs

  • 5 EVALUATEs

  • 3 loops

  • 15 regras de negócio

Você executa 500 casos.

Mas todos seguem o mesmo caminho lógico.

Resultado:

  • 500 execuções

  • cobertura baixíssima

Você apenas percorreu a mesma estrada centenas de vezes.

É como testar um elevador indo somente para o segundo andar.

Você pode apertar o botão mil vezes.

Ainda não sabe o que acontece no décimo quinto andar.


O que é cobertura de teste?

Cobertura é uma métrica que mede quanto do comportamento do software foi exercitado durante os testes.

Ela responde perguntas como:

  • Quantas instruções foram executadas?

  • Quantos IFs foram percorridos?

  • Quantas decisões foram avaliadas?

  • Quantos caminhos lógicos foram explorados?

  • Quantas regras de negócio foram validadas?

Quanto maior a cobertura, maior a confiança.

Mas atenção:

100% de cobertura não significa ausência de defeitos.

Significa apenas que tudo foi visitado.

Não necessariamente validado corretamente.


As camadas de cobertura

Um plano robusto costuma analisar múltiplas camadas.


1. Cobertura de instruções (Statement Coverage)

A mais básica.

Pergunta:

Cada linha executável foi executada ao menos uma vez?

Exemplo:

IF SALDO > 0
   MOVE 'A' TO STATUS
ELSE
   MOVE 'B' TO STATUS
END-IF

Se apenas SALDO > 0 foi testado:

MOVE 'A'

executou.

Mas:

MOVE 'B'

não.

Cobertura parcial.

Para atingir 100%, ambos os caminhos precisam ser executados.


2. Cobertura de decisões (Branch Coverage)

Mais importante.

Pergunta:

Cada decisão assumiu todos os resultados possíveis?

Exemplo:

IF CLIENTE-ATIVO

Devemos testar:

  • TRUE

  • FALSE

Muitos projetos param na cobertura de instruções.

Os melhores projetos vão além e medem cobertura de decisões.


3. Cobertura de condições

Exemplo:

IF IDADE > 18
AND RENDA > 5000

Precisamos validar:

IDADERENDA
TT
TF
FT
FF

Caso contrário, parte da lógica pode nunca ter sido exercitada.


4. Cobertura de caminhos (Path Coverage)

Aqui a brincadeira fica séria.

Imagine:

IF A
   IF B
      ...
   END-IF
END-IF

Agora existem vários caminhos:

  • A=T B=T

  • A=T B=F

  • A=F

Quanto mais IFs surgem, mais caminhos aparecem.

O crescimento é explosivo.

Por isso ninguém tenta cobrir absolutamente todos os caminhos em sistemas grandes.

O objetivo é cobrir os caminhos críticos.


O conceito mais importante do Mainframe

Cobertura de negócio

Esta é a cobertura que realmente paga as contas.

Perguntas:

  • Emissão de apólice funcionou?

  • Pagamento foi processado?

  • Cálculo de juros foi validado?

  • Baixa financeira foi testada?

  • Cancelamento foi exercitado?

O usuário não se importa se:

PERFORM 1000-PROCESSA

executou.

Ele se importa se o dinheiro caiu na conta correta.

Por isso:

Cobertura técnica sem cobertura funcional é uma ilusão perigosa.


Como construir um plano de teste abrangente

A técnica que uso para ensinar equipes é simples.

Divida os cenários em grupos.


Grupo 1 – Casos normais

Fluxo feliz.

O famoso Happy Path.

Exemplo:

Cliente válido.

Conta válida.

Saldo suficiente.

Arquivo disponível.

Tudo funcionando.

Esses testes validam o comportamento esperado.


Grupo 2 – Casos de fronteira

Aqui vivem os defeitos.

Exemplo:

Campo aceita:

0 a 999999

Testar:

0
1
999998
999999

Mas também:

-1
1000000

A maioria dos bugs aparece nos limites.


Grupo 3 – Casos inválidos

Todo sistema recebe lixo.

Você precisa descobrir como ele reage.

Exemplos:

CPF inválido.

Data inválida.

Arquivo vazio.

Campo nulo.

Código inexistente.

Registro duplicado.

Produção faz isso diariamente.

Seu teste também deve fazer.


Grupo 4 – Casos excepcionais

Os mais esquecidos.

Exemplo:

VSAM indisponível.

DB2 retornando erro.

Dataset cheio.

Timeout de CICS.

Lock de registro.

Fila MQ parada.

É justamente aqui que nascem os incidentes mais caros.


O método Bellacosa para testar COBOL

Quando olho um programa, sigo sempre esta sequência.


Entrada

O que entra?

Analise:

LINKAGE
COMMAREA
ARQUIVOS
DB2
MQ
VSAM

Liste tudo.


Processamento

O que acontece?

Mapeie:

  • IF

  • EVALUATE

  • PERFORM

  • GO TO

  • loops

Tudo que altera comportamento.


Saída

O que sai?

Arquivos.

Relatórios.

Tabelas.

Mensagens.

Retornos.

Abends.

Tudo deve ser validado.


A matriz de cobertura

Uma técnica extremamente poderosa.

Monte uma tabela.

RegraTestada
Regra 1Sim
Regra 2Sim
Regra 3Não
Regra 4Sim

Agora faça o mesmo para:

  • programas

  • módulos

  • telas

  • transações

  • jobs

A matriz revela instantaneamente os buracos.


Cobertura para Batch

Em batch devemos validar:

Arquivo vazio

0 registros

Arquivo pequeno

10 registros

Arquivo médio

100.000 registros

Arquivo grande

10 milhões de registros

Registro inválido

Registro duplicado

Chave fora de sequência

Dataset inexistente

Espaço insuficiente

Return codes

Tudo isso precisa aparecer no plano.


Cobertura para CICS

Valide:

  • Entrada válida

  • Entrada inválida

  • PF Keys

  • Timeout

  • Commarea vazia

  • Commarea truncada

  • Falha de comunicação

  • Reentrada da transação

Muitos defeitos aparecem apenas em ambiente online.


Cobertura para DB2

Nunca teste apenas o SQLCODE 0.

Teste:

0
+100
-803
-811
-904
-911
-913

Grande parte dos problemas de produção surge justamente nos códigos de erro.


Cobertura para VSAM

Valide:

READ OK
NOT FOUND
DUPLICATE KEY
END OF FILE
OPEN ERROR

Muitos testes ignoram completamente os File Status.

Erro clássico.


Testes de performance também fazem parte da cobertura

Um programa pode estar funcionalmente correto.

Mas:

  • consumir CPU demais

  • gerar EXCP excessivo

  • aumentar elapsed time

E então falhar operacionalmente.

Portanto inclua:

  • volume realista

  • pico de carga

  • concorrência

  • consumo de recursos


Como medir cobertura no Mainframe

Hoje existem ferramentas especializadas.

Entre elas:

  • IBM Debug Tool

  • IBM Application Delivery Foundation

  • IBM Fault Analyzer

  • IBM Application Performance Analyzer

  • Compuware Topaz

  • Compuware Xpediter

  • Micro Focus Enterprise Analyzer

  • SonarQube para COBOL

Essas soluções conseguem mostrar:

  • linhas executadas

  • branches percorridos

  • percentuais de cobertura

  • áreas não testadas

Transformando percepção em números.

E números vencem opiniões.


A armadilha do 100%

Imagine:

IF VALOR > 1000

Você executa:

1001

e

999

Cobertura:

100%.

Mas você não testou:

1000

Exatamente o limite.

Portanto:

100% de cobertura não significa qualidade máxima.

Significa apenas que todos os pontos foram visitados.


O indicador que realmente importa

Depois de décadas observando projetos, cheguei a uma conclusão.

A melhor pergunta não é:

"Qual a cobertura?"

Mas:

"Qual o risco residual?"

Se uma rotina financeira movimenta bilhões:

  • 95% pode ser insuficiente.

Se uma rotina gera relatório interno:

  • 80% pode ser aceitável.

Cobertura deve ser analisada junto com criticidade.


A filosofia dos grandes times

Equipes maduras fazem quatro perguntas:

O que testamos?

O que não testamos?

Por que não testamos?

Qual o risco disso?

Quando essas respostas existem, o plano de teste deixa de ser um documento burocrático.

Ele vira uma ferramenta de gestão de risco.


Conclusão

O profissional júnior acredita que testar é executar casos.

O profissional experiente entende que testar é procurar defeitos.

E o veterano de Mainframe sabe algo ainda mais importante:

Cobertura não é uma porcentagem. É a medida da sua confiança antes de colocar um programa em produção.

Porque no mundo real ninguém é acordado às 3 da manhã por causa dos cenários que foram testados.

Somos acordados pelos cenários que esquecemos de testar.

E quase sempre eles estavam escondidos exatamente naquele IF, naquele SQLCODE, naquele File Status ou naquele registro de fronteira que alguém julgou improvável.

No Mainframe, assim como na aviação, o problema raramente está no voo que você simulou.

O problema está naquele que você acreditou que jamais aconteceria. ☕💣🚀


quinta-feira, 4 de janeiro de 2024

☕💣🔥 LABORATÓRIO PRÁTICO — TESTES DE PERFORMANCE PARA O PADAWAN COBOL MAINFRAME

 

Bellacosa Mainframe e laboratorio pratico de performance

☕💣🔥 LABORATÓRIO PRÁTICO — TESTES DE PERFORMANCE PARA O PADAWAN COBOL MAINFRAME

Este laboratório foi criado para transformar conceitos em prática.

A ideia é que o aluno pense como um Analista de Performance, um Desenvolvedor COBOL e um Sysprog ao mesmo tempo.

Cada exercício possui:

  • Cenário

  • Desafio

  • Solução Comentada

  • Conceitos Envolvidos


EXERCÍCIO 1

Identificando o Tipo de Teste

Cenário

O banco deseja validar se o Internet Banking suporta 5.000 usuários simultâneos.

Pergunta

Qual tipo de teste deve ser realizado?

A) Estresse

B) Resistência

C) Carga

D) Pico


Solução

Resposta:

C) Carga

O objetivo é validar a capacidade prevista do ambiente.

Não estamos ultrapassando limites.

Não estamos testando durante horas.

Não estamos simulando explosões repentinas.

Estamos simulando o uso normal esperado.


EXERCÍCIO 2

Descobrindo o Gargalo

Cenário

Uma consulta de saldo apresenta:

ComponenteTempo
Front-End50 ms
API80 ms
CICS1200 ms
DB2950 ms

Pergunta

Onde está o principal gargalo?


Solução

CICS e DB2.

O tempo de resposta total está concentrado nessas camadas.

O Front-End e API representam parcela muito pequena do processamento.

O próximo passo seria analisar:

  • SQL

  • Índices

  • Plano de acesso

  • Locks


EXERCÍCIO 3

Avaliando Throughput

Cenário

Durante um teste foram processadas:

120.000 transações

em

60 segundos

Pergunta

Qual o Throughput?


Solução

Fórmula:

TPS = Transações ÷ Tempo

120.000 ÷ 60

TPS = 2.000

Resposta:

2.000 TPS


EXERCÍCIO 4

Encontrando Problema de Código COBOL

Programa

PERFORM UNTIL WS-FIM = 'S'

   READ ARQ-CLIENTES
      AT END
         MOVE 'S' TO WS-FIM
   END-READ

   PERFORM PROCESSA-CLIENTE

END-PERFORM

Pergunta

Qual risco de performance existe?


Solução

Se o arquivo possuir milhões de registros:

  • CPU elevada

  • I/O elevado

  • Tempo excessivo

O código não está errado.

Mas pode não escalar.

Performance depende do volume.


EXERCÍCIO 5

Escolhendo a Ferramenta

Cenário

Você precisa gerar:

10.000 usuários simultâneos

realizando chamadas HTTP.

Pergunta

Qual ferramenta apresentada seria mais indicada?


Solução

Apache JMeter.

Porque:

  • Open Source

  • Escalável

  • HTTP

  • HTTPS

  • REST

  • SOAP

Foi justamente a ferramenta mostrada na apresentação.


EXERCÍCIO 6

Teste de Resistência

Cenário

Uma aplicação funciona perfeitamente por:

30 minutos

Após:

8 horas

o consumo de memória cresce continuamente.

Pergunta

Qual tipo de teste identificou o problema?


Solução

Teste de Resistência.

Também chamado:

Soak Test

ou

Endurance Test.

Esse tipo de problema dificilmente aparece em testes rápidos.


EXERCÍCIO 7

Simulando Black Friday

Cenário

Usuários simultâneos:

09:00 → 1.000

09:01 → 10.000

09:02 → 15.000

09:03 → 1.000

Pergunta

Qual tipo de teste está sendo realizado?


Solução

Teste de Pico.

Objetivo:

Validar explosões repentinas de acesso.

Muito comum em:

  • Black Friday

  • PIX

  • Campanhas

  • Venda de ingressos


EXERCÍCIO 8

Análise de Mainframe

Cenário

Durante o teste:

CPU = 35%

Tempo de Resposta = 8 segundos

Pergunta

A CPU é o problema?


Solução

Não necessariamente.

Esse é um erro clássico.

Mesmo com CPU baixa podem existir:

  • Locks DB2

  • Espera de I/O

  • MQ congestionado

  • SQL ruim

  • Contenção CICS

CPU baixa não significa ambiente saudável.


EXERCÍCIO 9

Virtualização de Serviços

Cenário

O microsserviço precisa chamar:

  • Serviço A

  • Serviço B

  • Mainframe

Mas o Mainframe está indisponível.

Pergunta

Como continuar os testes?


Solução

Utilizando Virtualização.

Criamos respostas simuladas.

Exemplo:

{
  "conta":"12345",
  "saldo":"1500.00"
}

Assim os testes continuam sem depender do ambiente real.


EXERCÍCIO 10

Diagnóstico Completo

Cenário

O Grafana mostra:

CPU = 40%

Memória = 45%

Tempo Médio = 5 segundos

Dynatrace mostra:

API = 100 ms

CICS = 250 ms

DB2 = 4200 ms

Pergunta

Onde você investigaria primeiro?


Solução

DB2.

O banco responde por mais de 80% do tempo total.

Possíveis causas:

  • Full Scan

  • Índice ausente

  • Estatísticas desatualizadas

  • Lock

  • SQL mal otimizado


DESAFIO FINAL DO PADAWAN ☕💣

Imagine a seguinte arquitetura:

Mobile
   ↓
Apache
   ↓
WebSphere
   ↓
API
   ↓
MQ
   ↓
CICS
   ↓
COBOL
   ↓
DB2

Você recebe a reclamação:

"Consultar saldo está demorando 12 segundos."

Descreva:

  1. Quais ferramentas utilizaria?

  2. Quais métricas analisaria?

  3. Quais componentes investigaria primeiro?

  4. Como executaria um teste de carga?

  5. Como validaria a correção?


GABARITO ESPERADO

Ferramentas:

  • JMeter

  • Dynatrace

  • Grafana

  • OMEGAMON

  • RMF

  • SMF

Métricas:

  • CPU

  • TPS

  • Tempo Médio

  • P95

  • P99

  • I/O

  • MQ Depth

  • Tempo DB2

Investigação:

  1. Dynatrace

  2. DB2

  3. CICS

  4. MQ

  5. API

Teste:

  • 5.000 usuários

  • Ramp-up gradual

  • Monitoramento simultâneo

Validação:

Comparar:

Antes = 12 segundos

Depois = meta inferior a 2 segundos


Missão Extra Bellacosa Mainframe

Pegue um programa COBOL real do seu ambiente e responda:

  • Quantos READs ele executa?

  • Quantos WRITEs?

  • Quantos SELECTs DB2?

  • Qual o maior loop?

  • Qual o volume esperado?

  • Como ele se comportaria com 10 milhões de registros?

Se você conseguir responder essas perguntas, já começou a pensar como um profissional de Performance Mainframe e não apenas como um programador COBOL. ☕💣🚀


quarta-feira, 3 de janeiro de 2024

Descubra o que foi/é a Crise do Software.

Do que estou falando? Do caos atrás dos teclados, devido a instabilidade dos primeiros anos da computação com softwares imprecisos e os gastos milionários em CPDS. Esse termo foi cunhado na década de 70 do século passado e até hoje motiva muita discussão entre acadêmicos e profissionais.
Leia na InTEGRA

terça-feira, 2 de janeiro de 2024

☕💣🔥 O DIA EM QUE 10.000 USUÁRIOS DERRUBARAM UM COBOL QUE FUNCIONAVA PERFEITAMENTE — O GUIA DEFINITIVO DE TESTES DE PERFORMANCE PARA O PADAWAN DO MAINFRAME

Bellacosa Mainframe e a performance em mainframe


☕💣🔥 O DIA EM QUE 10.000 USUÁRIOS DERRUBARAM UM COBOL QUE FUNCIONAVA PERFEITAMENTE — O GUIA DEFINITIVO DE TESTES DE PERFORMANCE PARA O PADAWAN DO MAINFRAME

Existem algumas frases que assustam qualquer profissional experiente de Mainframe.

Uma delas é:

"Pode colocar em produção. Já testamos tudo."

A segunda é:

"Funcionou na minha máquina."

E a terceira, talvez a mais perigosa de todas:

"Performance a gente vê depois."

Se você é um jovem Padawan do COBOL, provavelmente acredita que o trabalho do programador termina quando o programa compila sem erros, passa nos testes funcionais e devolve o resultado correto.

Mas existe um mundo oculto além da lógica.

Um universo onde programas corretos derrubam bancos.

Onde APIs perfeitamente desenvolvidas travam durante a Black Friday.

Onde um SELECT aparentemente inocente consegue transformar uma aplicação inteira em um incêndio corporativo.

Esse universo chama-se Performance.

E hoje vamos conversar sobre um assunto que separa programadores comuns dos profissionais que sobrevivem décadas trabalhando em ambientes críticos.

Vamos falar sobre Testes de Performance.


A PRIMEIRA GRANDE LIÇÃO

Imagine que você criou um programa COBOL chamado CONSULTA-SALDO.

O programa recebe:

  • Agência

  • Conta

Consulta o DB2.

Retorna o saldo.

Você testa.

Funciona.

Seu colega testa.

Funciona.

O analista testa.

Funciona.

O gerente testa.

Funciona.

Todo mundo comemora.

O programa sobe para produção.

Cinco minutos depois:

O Internet Banking trava.

O aplicativo móvel trava.

O atendimento telefônico trava.

O gerente da agência liga desesperado.

E você pensa:

"Mas aqui funcionava..."

Sim.

Funcionava.

Para um usuário.

Produção não possui um usuário.

Produção possui milhares.

Essa é a primeira lição da performance.

Um sistema que funciona para uma pessoa não necessariamente funciona para dez mil.


O QUE É UM TESTE DE PERFORMANCE?

Muitos iniciantes acreditam que teste de performance significa medir velocidade.

Não é apenas isso.

Teste de performance é a arte de descobrir como um sistema se comporta quando submetido ao mundo real.

Queremos responder perguntas como:

  • Quantos usuários suporta?

  • Qual o tempo de resposta?

  • Onde está o gargalo?

  • Quanto de CPU consome?

  • Quanto de memória utiliza?

  • Quantas transações por segundo processa?

Na prática estamos tentando descobrir o limite antes que o cliente descubra primeiro.

Porque quando o cliente descobre primeiro, normalmente já existe uma crise instalada.


TESTES FUNCIONAIS X TESTES NÃO FUNCIONAIS

O material apresentado faz uma separação extremamente importante.

Testes funcionais verificam:

"O sistema faz o que deveria fazer?"

Exemplo:

Você informa uma conta.

O sistema retorna o saldo correto.

Teste aprovado.

Mas existe outra pergunta.

"O sistema continua fazendo isso quando dez mil usuários acessam simultaneamente?"

Essa pergunta pertence ao mundo dos testes não funcionais.

E é exatamente aqui que entra a performance.


O EXEMPLO DO AUTOMÓVEL

Imagine um carro.

Você gira a chave.

O motor liga.

Teste funcional aprovado.

Mas ainda faltam várias perguntas:

  • Qual a velocidade máxima?

  • Quanto consome?

  • Quanto suporta de carga?

  • Como se comporta em uma subida?

  • Como reage após cinco horas de viagem?

Essas perguntas representam os testes não funcionais.

O mesmo vale para sistemas.


O QUE REALMENTE DERRUBA SISTEMAS?

O Padawan normalmente pensa:

"Se estiver lento é porque falta CPU."

Nem sempre.

Na verdade, CPU costuma ser apenas um dos suspeitos.

Os verdadeiros vilões geralmente são:

  • SQL mal escrito

  • Índices ausentes

  • Locks excessivos

  • Filas MQ congestionadas

  • Chamada excessiva a serviços

  • Pool JDBC esgotado

  • Recursos compartilhados

Em outras palavras:

O problema normalmente não está onde você imagina.


TESTE DE CARGA

Este é o mais conhecido.

O objetivo é reproduzir o uso normal esperado.

Imagine:

O banco estima 5.000 usuários simultâneos.

Criamos então um cenário simulando exatamente esse volume.

A pergunta é simples:

"O sistema suporta?"

Se suporta, ótimo.

Se não suporta, ainda temos tempo para corrigir.

Muito melhor descobrir isso no laboratório do que no Jornal Nacional.


TESTE DE ESTRESSE

Aqui a conversa fica interessante.

Em vez de testar o limite esperado, ultrapassamos o limite.

Muito.

Se o ambiente foi projetado para 5.000 usuários:

Testamos 10.000.

15.000.

20.000.

Queremos descobrir:

Como ele falha?

Uma falha controlada é muito melhor que um colapso inesperado.


TESTE DE RESISTÊNCIA

Agora imagine uma maratona.

O sistema suporta 5.000 usuários.

Ótimo.

Mas por quanto tempo?

Uma hora?

Duas?

Dez?

Vinte e quatro?

O teste de resistência mantém carga constante durante longos períodos.

Muitas aplicações parecem saudáveis por trinta minutos.

Depois começam a consumir memória.

Depois mais memória.

Depois ainda mais memória.

Até morrerem lentamente.

É o famoso Memory Leak.


TESTE DE PICO

Imagine a abertura das vendas de um show.

Ou a Black Friday.

Ou o lançamento de um PIX promocional.

O tráfego explode.

O sistema precisa absorver esse impacto.

O teste de pico verifica exatamente isso.

O comportamento durante explosões repentinas.


O MUNDO HÍBRIDO

Antigamente era simples.

Usuário.

Tela.

Mainframe.

Fim.

Hoje não.

Hoje temos:

Aplicativo Mobile

Apache

WebSphere

API Gateway

Microsserviços

MQ

CICS

COBOL

DB2

Percebe o problema?

Se a tela demora cinco segundos, onde está o gargalo?

Pode estar em qualquer ponto da cadeia.

E é por isso que observabilidade se tornou tão importante.


APACHE JMETER

Se existe uma ferramenta que virou símbolo dos testes de carga modernos, essa ferramenta é o Apache JMeter.

Pense nele como um exército virtual.

Você configura usuários fictícios.

Esses usuários começam a executar operações.

Consultar saldo.

Fazer transferência.

Emitir extrato.

Pagar boleto.

E o sistema acredita que são usuários reais.

O JMeter consegue gerar milhares de acessos simultâneos.

É exatamente assim que simulamos produção sem colocar clientes reais em risco.


EXEMPLO PRÁTICO

Suponha uma API:

GET /saldo

Queremos simular:

5.000 usuários.

Criamos:

Thread Group

Usuários: 5000

Ramp-Up: 300 segundos

Loop: infinito

Agora adicionamos:

HTTP Request

Executamos.

Pronto.

Começamos a produzir carga.

Mas isso é apenas metade da história.


POR QUE APENAS GERAR CARGA NÃO BASTA?

Imagine um médico.

Ele mede sua pressão.

Mas ignora:

  • Frequência cardíaca

  • Oxigenação

  • Temperatura

Seria um diagnóstico completo?

Claro que não.

Com performance ocorre a mesma coisa.

Gerar carga é apenas o começo.

Precisamos observar o ambiente inteiro.


DYNATRACE

É aqui que entra o Dynatrace.

Pense nele como uma tomografia computadorizada da aplicação.

Ele acompanha cada requisição.

Cada chamada.

Cada serviço.

Cada banco de dados.

Cada microsserviço.

Cada transação.

Em vez de simplesmente dizer:

"Está lento."

Ele mostra:

"Está lento porque o Serviço X chamou o Serviço Y que executou uma consulta SQL custosa."

Agora existe informação para agir.


O SONHO DE TODO ANALISTA DE PERFORMANCE

Imagine um clique no aplicativo.

Consultar saldo.

Dynatrace exibe:

Frontend = 80 ms

API = 100 ms

Microsserviço = 120 ms

CICS = 800 ms

DB2 = 700 ms

Pronto.

Achamos o culpado.

Não existe mais adivinhação.


GRAFANA

Se Dynatrace é o médico.

Grafana é o painel da UTI.

Ele transforma números em gráficos.

Mostra:

  • CPU

  • Memória

  • Throughput

  • Erros

  • Tempo médio

  • Percentil 95

  • Percentil 99

E permite acompanhar tudo em tempo real.

Uma imagem muitas vezes vale mais que mil relatórios.


O QUE O MAINFRAME ENSINA SOBRE PERFORMANCE?

Muito antes da palavra observabilidade virar moda, o Mainframe já monitorava tudo.

E quando digo tudo, é tudo mesmo.

O z/OS nasceu para ambientes críticos.

Por isso existem ferramentas extremamente sofisticadas.


SMF

System Management Facility.

Registra praticamente tudo.

CPU.

I/O.

Transações.

Consumo.

Execução.

É o grande livro de registros do sistema.


RMF

Resource Measurement Facility.

Analisa comportamento dos recursos.

Ajuda a identificar gargalos.

Mostra utilização de processadores.

Filas.

Memória.

Dispositivos.


OMEGAMON

Uma das ferramentas mais famosas do universo IBM.

Monitora:

  • z/OS

  • CICS

  • DB2

  • MQ

Em tempo real.

Quando algo fica lento, geralmente ele é um dos primeiros lugares onde o especialista procura respostas.


O MAIOR ERRO DOS PROGRAMADORES INICIANTES

O Padawan costuma pensar:

"Meu programa executa rápido."

Mas rápido para quem?

Com qual volume?

Em qual horário?

Contra qual banco?

Com quantos registros?

Essas perguntas mudam tudo.

Um SELECT que retorna dez linhas parece maravilhoso.

O mesmo SELECT retornando dez milhões de linhas pode virar um desastre.


O CASO DO LOOP INOCENTE

Imagine:

PERFORM UNTIL EOF

READ ARQUIVO

PROCESSA

END-PERFORM

Parece simples.

Mas e se o arquivo possuir:

50 milhões de registros?

Agora o cenário muda.

Performance não depende apenas do código.

Depende dos dados.


PERFORMANCE É ARQUITETURA

Muitos acreditam que performance é responsabilidade exclusiva da infraestrutura.

Não é.

Também não é responsabilidade exclusiva do desenvolvedor.

Performance é responsabilidade de todos.

Arquitetura.

Banco.

Infraestrutura.

Rede.

Aplicação.

Integração.

Monitoramento.

Tudo influencia.


A MENTALIDADE DO PROFISSIONAL MADURO

O iniciante pergunta:

"Funciona?"

O profissional experiente pergunta:

"Funciona sob carga?"

O iniciante pergunta:

"Retornou o resultado?"

O profissional experiente pergunta:

"Quanto tempo demorou?"

O iniciante pergunta:

"Passou no teste?"

O profissional experiente pergunta:

"Qual foi o consumo?"

Essa mudança de mentalidade transforma carreiras.


A LIÇÃO FINAL

Ao longo dos anos vi programas COBOL sobreviverem décadas.

Vi sistemas processarem bilhões de transações.

Vi ambientes suportarem eventos gigantescos sem falhar.

E todos tinham algo em comum.

Performance não era tratada como um detalhe.

Era tratada como requisito.

Porque funcionalidades atraem usuários.

Mas é a performance que permite que eles permaneçam utilizando o sistema.

No fim das contas, um programa COBOL não é avaliado apenas pelo que faz.

Ele é avaliado pela velocidade, estabilidade e capacidade com que faz aquilo.

E essa é a diferença entre escrever código e construir sistemas capazes de sobreviver ao mundo real.

Bem-vindo ao próximo nível da sua jornada no Mainframe, jovem Padawan.

Agora você já sabe que compilar é apenas o começo.