| Bellacosa Mainframe e o laboratorio pratico em IBM Z Resiliency |
☕ O Holocron da IBM Z Resiliency
Este material foi desenvolvido para ajudar o programador COBOL Padawan a compreender que, no universo IBM Z Mainframe, escrever código é apenas parte da construção de sistemas críticos. O objetivo é apresentar os conceitos de IBM Z Resiliency de forma progressiva, combinando teoria, exemplos práticos e 20 laboratórios que mostram como desenvolver aplicações mais confiáveis, disponíveis e preparadas para falhas.
A metodologia adota uma abordagem "do básico ao avançado", na qual cada laboratório amplia os conhecimentos sobre RAS (Reliability, Availability and Serviceability), High Availability, Disaster Recovery, Parallel Sysplex, GDPS, Db2, CICS e boas práticas de desenvolvimento para ambientes corporativos.
No dia a dia, o desenvolvedor aprenderá a implementar tratamentos de erro, checkpoints, commits, rollback, logs, estratégias de retry, idempotência e recuperação automática, compreendendo como seu código influencia diretamente a continuidade dos negócios. Mais do que programar, o profissional passa a entender a infraestrutura que sustenta aplicações bancárias, governamentais e de grandes empresas.
As boas práticas incluem escrever código limpo, tratar exceções adequadamente, monitorar desempenho, documentar processos, eliminar pontos únicos de falha, colaborar com Sysprogs e DBAs e adotar ferramentas modernas como Git, Zowe, DevOps, APIs REST e Inteligência Artificial. Dessa forma, o Padawan evolui para um desenvolvedor capaz de criar soluções resilientes, escaláveis e preparadas para os desafios do IBM Z moderno.
20 Laboratórios Práticos para um Padawan COBOL
Do "Meu Programa Funciona" até "Meu Sistema Nunca Para"
Objetivo: ensinar um desenvolvedor COBOL a pensar como um engenheiro de sistemas críticos, entendendo que escrever código é apenas uma parte da construção de aplicações resilientes no IBM Z.
LAB 1 — Descobrindo os Pontos Únicos de Falha (SPoF)
Objetivo
Entender por que um único componente pode derrubar um sistema inteiro.
Cenário
Você possui:
1 servidor
1 disco
1 banco Db2
1 aplicação COBOL
Desenhe toda a arquitetura.
Agora marque todos os componentes que, caso parem, derrubam o sistema.
Solução
Perceba que praticamente tudo é um SPOF.
Aprendizado
Antes de eliminar falhas, é preciso encontrá-las.
💡 Dica: faça isso também com aplicações.
LAB 2 — Medindo o Custo do Downtime
Objetivo
Entender por que disponibilidade vale dinheiro.
Exercício
Imagine:
Banco realiza 15.000 transações/segundo
Receita média R$ 0,12 por transação
Calcule perdas para:
1 minuto
10 minutos
1 hora
Solução
O prejuízo cresce rapidamente e ainda não inclui imagem, multas ou clientes perdidos.
💡 Truque: disponibilidade é uma decisão financeira, não apenas técnica.
LAB 3 — O Primeiro COMMIT
Objetivo
Entender recuperação transacional.
Exercício
Atualize 1 milhão de registros.
Versão A
Sem COMMIT.
Versão B
COMMIT a cada 5.000 registros.
Solução
Simule uma interrupção.
Qual versão reinicia mais rápido?
LAB 4 — Criando Checkpoints
Objetivo:
Implementar restart.
Crie:
arquivo CHECKPOINT
posição do último registro
Simule queda.
Continue do ponto salvo.
💡 Essa técnica é usada há décadas em grandes batchs.
LAB 5 — Simulando Deadlock
Utilize duas sessões Db2.
Sessão A
Atualiza CLIENTE.
Sessão B
Atualiza CONTA.
Depois inverta.
Observe:
SQLCODE
timeout
deadlock
Solução
Aprenda ordem consistente de atualização.
LAB 6 — Tratando SQLCODE Corretamente
Crie um programa que trate:
+100
-803
-911
-913
Não apenas DISPLAY.
Faça:
rollback
log
retorno correto
LAB 7 — Criando Logs Inteligentes
Todo programa deve registrar:
data
hora
usuário
JOBNAME
programa
chave
SQLCODE
mensagem
Depois analise o log.
Descubra o erro sem recompilar.
LAB 8 — O Primeiro Retry
Imagine:
Db2 indisponível por poucos segundos.
Implemente:
Tentativa 1
Espera 2 segundos
Tentativa 2
Espera 5 segundos
Tentativa 3
Depois aborte.
Essa estratégia evita falhas temporárias.
LAB 9 — Descobrindo Gargalos
Utilize:
EXPLAIN
RUNSTATS
índices
Compare:
SELECT eficiente
vs
TABLESPACE SCAN
Descubra quanto CPU pode ser economizada.
LAB 10 — Idempotência
Crie um pagamento.
Execute duas vezes.
O dinheiro pode ser debitado novamente?
Se sim,
o programa não é resiliente.
LAB 11 — Introdução ao WLM
Converse com um Sysprog.
Pergunte:
Service Class
Importance
Velocity
Descubra onde seu batch roda.
Poucos desenvolvedores conhecem isso.
LAB 12 — Conhecendo o Parallel Sysplex
Pesquise:
Coupling Facility
Data Sharing
Sysplex Distributor
Desenhe:
LPAR A
LPAR B
LPAR C
CF
Explique como seu programa continua disponível.
LAB 13 — Explorando o CICS
Descubra:
O que acontece quando uma região CICS cai?
Quem reinicia?
Como outra região assume?
Pesquise:
TOR
AOR
DOR
FOR
LAB 14 — Simulando Recovery
Imagine:
Servidor caiu.
Liste passo a passo.
quem liga?
quem recupera?
quem valida?
quem autoriza?
Perceba quantas equipes participam.
LAB 15 — Conhecendo o GDPS
Estude:
Metro Mirror
Global Mirror
HyperSwap
Depois responda:
Como um banco continua funcionando após perder um datacenter inteiro?
LAB 16 — Health Check
Aprenda:
IBM Health Checker
Descubra:
parâmetros incorretos
riscos
alertas
Muitos problemas são encontrados antes da falha.
LAB 17 — Observabilidade
Monte um mini dashboard.
Colete:
CPU
I/O
Tempo SQL
Tempo CICS
Batch
Analise tendências.
Não espere a reclamação do usuário.
LAB 18 — Engenharia do Erro
Pegue um programa antigo.
Liste:
IF sem ELSE
SQLCODE ignorado
FILE STATUS ignorado
GO TO excessivo
PERFORM infinito
Corrija.
Compare antes/depois.
LAB 19 — Arquitetura Resiliente
Desenhe uma arquitetura moderna contendo:
IBM Z
↓
Parallel Sysplex
↓
Db2 Data Sharing
↓
MQ
↓
CICS
↓
z/OS Connect
↓
API REST
↓
Aplicativo Mobile
Agora marque:
Onde existe redundância?
Onde ainda há SPOF?
LAB 20 — O Projeto Final do Mestre Padawan
Construa um mini sistema bancário.
Funcionalidades
✔ Cadastro
✔ Consulta
✔ Depósito
✔ Saque
✔ Transferência
Implemente:
tratamento de erros
rollback
commit
logs
checkpoint
restart
retry
validações
auditoria
mensagens MQ (simuladas ou documentadas)
documentação operacional
diagrama de arquitetura
plano de recuperação em caso de falha
Depois responda:
Quanto tempo o sistema leva para voltar após uma falha?
Existe risco de perda de dados?
Há pontos únicos de falha?
Como o operador identifica problemas?
Como um Sysprog ajudaria a resolver um incidente?
Missões Extras (XP para Padawans)
Bronze
Aprender SDSF
Ler SYSOUT
Entender ABENDs comuns (S0C7, S0C4, S806)
Navegar no ISPF
Prata
Aprender SMF
Conhecer RMF
Ler EXPLAIN do Db2
Entender WLM
Ouro
Estudar Parallel Sysplex
Coupling Facility
Db2 Data Sharing
ARM
SFM
IBM Health Checker
Platina
GDPS
Metro Mirror
Global Mirror
HyperSwap
Continuous Availability
Zero Data Loss
Mestre Jedi do Mainframe
z/OS Connect
APIs REST
Git e GitHub
Zowe CLI
VS Code
DevOps
OpenTelemetry
Observabilidade
Ansible
Inteligência Artificial aplicada ao COBOL
Engenharia de Resiliência
Conselho Final do Mestre
Um programador COBOL iniciante acredita que seu trabalho termina quando o compilador retorna RC=0. Um profissional experiente sabe que esse é apenas o começo. A verdadeira excelência está em construir aplicações que possam ser interrompidas, reiniciadas, recuperadas, monitoradas, auditadas e evoluídas sem comprometer o negócio.
Quando você domina resiliência, deixa de ser apenas um programador de COBOL. Você se torna um engenheiro de sistemas críticos, capaz de desenvolver soluções que sustentam bancos, seguradoras, bolsas de valores e governos. Essa é a diferença entre dizer "Meu programa funciona" e afirmar com confiança "Meu sistema nunca para."