terça-feira, 10 de janeiro de 2012

🔥 JCL – Job Control Language: o cérebro silencioso do mainframe em um mundo distribuído

Bellacosa Mainframe apresenta Job Control Language JCL

 


🔥 JCL – Job Control Language: o cérebro silencioso do mainframe em um mundo distribuído



☕ Midnight Lunch no CPD (ou: quando o job ainda manda)

Era hora do midnight lunch. Café requentado, luz fria do CPD, impressora 3211 cuspindo papel contínuo.
O sysprog passa e solta a frase clássica:

“Não é o programa… é o JCL.”

Silêncio respeitoso.
Porque todo mainframer sabe: quem controla o JCL controla o sistema.

Este artigo é sobre JCL (Job Control Language), mas com um tempero moderno:
👉 como o JCL se encaixa — e ainda ensina — no mundo das aplicações distribuídas.


🧠 O que é JCL (para quem já viveu isso, mas nunca parou pra filosofar)

JCL não é linguagem de programação.
JCL é linguagem de orquestração.

Antes de:

  • YAML

  • Pipelines CI/CD

  • Kubernetes

  • Airflow

  • Jenkins

…já existia:

//JOBNAME JOB ... //STEP01 EXEC ... //DD1 DD ...

📌 JCL diz ao sistema:

  • O que rodar

  • Em que ordem

  • Com quais recursos

  • Com quais dados

  • Com quais limites

  • E como reagir a falhas

Ou seja: governança operacional pura.


🕰️ Um pouco de história (porque mainframer não vive sem contexto)

  • Anos 60–70: JCL nasce para controlar jobs batch

  • Anos 80: amadurece com JES2/JES3

  • Anos 90: integra-se com CICS, DB2, MQ

  • Anos 2000+: passa a conviver com Unix, web, cloud

  • Hoje: continua firme, enquanto muita stack moderna muda a cada 6 meses

💡 Curiosidade Bellacosa:
Muita ferramenta “moderna” só redescobriu conceitos que o JCL já fazia bem desde o século passado.


🌐 Aplicações distribuídas explicadas para mainframers

Vamos traduzir para o dialeto JCL.

Uma aplicação distribuída é como um job com vários steps rodando fora do z/OS, em máquinas diferentes, falando por mensagens.

Analogia direta

Mundo DistribuídoMundo JCL
MicroserviceSTEP bem definido
Pipeline CI/CDJob com múltiplos EXEC
SchedulerJES
Retry automáticoRESTART
TimeoutTIME
LogsSYSPRINT / SMF
OrquestraçãoJOB statement

👉 JCL foi um “orquestrador” décadas antes da palavra existir.


🧩 O JOB statement: o “manifest.yaml” do mainframe

No mundo moderno, você descreve tudo em um manifesto.

No mainframe, isso sempre existiu:

//MEUJOB JOB 'BELLACOSA', /* CLASS=A, MSGCLASS=X, TIME=0, REGION=0M, PRTY=15 */

Aqui você define:

  • Prioridade

  • Tempo de CPU

  • Memória

  • Classe de execução

  • Comportamento operacional

💡 Easter Egg:
TIME=0 é o “unlimited resources” do mundo mainframe — usado com responsabilidade, claro 😈


⚙️ Steps, COND e a arte de não rodar o que não precisa

Aplicações distribuídas vivem de fluxos condicionais.
No JCL, isso já existia com classe:

COND=(4,LT)

Tradução:

“Se algo deu muito certo, nem roda isso aqui.”

😂

Brincadeiras à parte:

  • COND evita processamento desnecessário

  • Reduz custo

  • Aumenta previsibilidade

👉 Conceito idêntico a short-circuiting em pipelines modernos.


🔄 START, RESTART e resiliência real

No mundo cloud:

  • “Reprocessa o pipeline”

  • “Rerun from failed stage”

No mainframe, desde sempre:

  • START=STEPX

  • RESTART=STEPX

Isso não é detalhe técnico.
Isso é engenharia de confiabilidade.

💡 Curiosidade:
Muitos sistemas distribuídos ainda sofrem para fazer restart idempotente.
No batch mainframe… isso é requisito básico desde o projeto.


📊 Observabilidade: SMF é o avô do tracing distribuído

Hoje falam em:

  • Logs

  • Metrics

  • Traces

No mainframe:

  • SMF

  • RMF

  • JES logs

  • SYSOUT

📌 O conceito é o mesmo:

“Se eu não consigo medir, eu não consigo operar.”

A diferença?
O mainframe sempre tratou isso como obrigação, não como opcional.


🪜 Passo a passo mental para o mainframer entrar no mundo distribuído

  1. Pense em jobs como pipelines

  2. Pense em steps como microserviços

  3. Pense em JES como scheduler

  4. Pense em SMF como observabilidade

  5. Pense em RESTART como resiliência

  6. Confie: você já sabe mais do que imagina


📚 Guia de estudo recomendado (com cérebro mainframe)

🔹 Conceitos para estudar:

  • APIs REST

  • Message Queues

  • Event-driven architecture

🔹 Faça paralelos:

  • MQ ↔ Kafka

  • JCL ↔ YAML

  • JES ↔ Orquestrador

  • CICS ↔ API Gateway

🔹 Exercício clássico:

“Se isso fosse um job batch, onde ele falharia?”


🏁 Conclusão – El Jefe fecha a conta

O mundo mudou.
As palavras mudaram.
As ferramentas mudaram.

Mas os princípios

  • Orquestração

  • Controle

  • Governança

  • Resiliência

  • Observabilidade

👉 o JCL já fazia tudo isso.

Por isso, quando alguém diz:

“Mainframe é legado”

O mainframer responde, calmamente, entre um café e outro:

“Legado é aquilo que ainda funciona.”

🔥☕

Sem comentários:

Enviar um comentário