☕ 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

sábado, 6 de maio de 2023

⚔️ LISBETH E A FORJA DOS 50 INCIDENTES — QUANDO O COBOL DESCOBRIU QUE PRODUÇÃO NÃO CAI, ELA DEIXA PISTAS

 

Bellacosa Mainframe e os incidentesque derrubam o sistema

☕ Um Café no Bellacosa Mainframe

⚔️ LISBETH E A FORJA DOS 50 INCIDENTES — QUANDO O COBOL DESCOBRIU QUE PRODUÇÃO NÃO CAI, ELA DEIXA PISTAS

Linux, CPU, memória, storage, DNS, firewall, load balancer, cloud, Docker, Kubernetes, Terraform, Db2, CICS, WLM, SMF, RMF — e o dia em que Lisbeth descobriu que reiniciar o servidor não era troubleshooting, era bater na espada com um martelo e torcer para ela ficar reta.



🎬 PRÓLOGO — BEM-VINDO À FORJA, PROGRAMADOR COBOL

Imagine a cena.

Você acabou de entrar na equipe de desenvolvimento mainframe. Aprendeu um pouco de COBOL, descobriu que PIC X(10) não é uma fotografia com dez pixels, conseguiu sobreviver ao primeiro JCL e já sabe que apagar uma linha de //DD aleatoriamente porque “parecia não servir para nada” pode ser uma maneira bastante eficiente de conhecer pessoalmente o pessoal da Produção.

São 03:17 da madrugada.

Sim, padawan. Esse horário ainda vai aparecer novamente.

Seu telefone toca.

— Produção está fora!

Você pergunta:

— O que caiu?

A resposta:

Tudo!

Pronto.

Você acaba de conhecer uma das mensagens de erro menos úteis da história da computação.

Em Aincrad, provavelmente alguém gritaria que um boss apareceu no andar. No nosso mundo, “tudo caiu” pode significar desde um servidor realmente indisponível até uma única transação CICS respondendo em oito segundos.

É nesse momento que entra nossa tutora:

Lisbeth — Rika Shinozaki, de Sword Art Online.

E não escolhi Lisbeth por acaso.

Kirito pode chegar com aquela cara de protagonista e querer resolver tudo no braço, mas Lisbeth trabalha de outra maneira. Antes de fabricar uma arma, ela precisa entender material, resistência, objetivo, comportamento e condições de uso.

Troubleshooting profissional funciona exatamente assim.

Você não olha para uma espada quebrada e começa a martelar.

E não olha para uma aplicação quebrada e começa a reiniciar coisas.

Primeiro observe. Depois obtenha evidências. Só então altere o ambiente.

Bem-vindo à forja.



🔥 CAPÍTULO 1 — “O SISTEMA CAIU” NÃO É UM DIAGNÓSTICO

A primeira coisa que precisamos destruir é uma ideia muito comum entre iniciantes:

outage não significa necessariamente que o computador desligou.

Existem pelo menos dois cenários fundamentais.

Full Outage

O serviço realmente está indisponível:

USUÁRIO
   |
   X
SERVIÇO

Ninguém consegue utilizá-lo.

Agora temos o segundo cenário.

Partial Degradation

USUÁRIO
   |
   +---- transação A → 0,3 segundo
   +---- transação B → 0,4 segundo
   +---- transação C → 9 segundos
   +---- transação D → TIMEOUT
   +---- transação E → 0,5 segundo

O serviço tecnicamente continua funcionando.

Mas tente explicar isso ao cliente cuja compra ficou parada durante nove segundos.

No mainframe podemos ter:

z/OS       UP
CICS       UP
Db2        UP
MQ         UP
TCP/IP     UP
JES2       UP

E mesmo assim:

Response Time ↑
Db2 Lock Wait ↑
MQ Queue Depth ↑
CPU ↑
Timeouts ↑

Tudo está UP.

E tudo está ruim.

Essa distinção é fundamental porque estado operacional e qualidade do serviço são coisas diferentes.

Lisbeth provavelmente diria:

“A espada continua inteira. Isso não significa que ainda esteja boa para lutar.”



💥 CAPÍTULO 2 — BLAST RADIUS: O RATO PEQUENO QUE DERRUBOU O CASTELO

Outro conceito importantíssimo é blast radius: a extensão do impacto causado por uma falha.

Imagine:

                    DNS
                     |
        +------------+------------+
        |            |            |
     SISTEMA A    SISTEMA B    SISTEMA C
        |            |            |
       Db2           MQ          API

DNS parece apenas um componente.

Mas dezenas ou centenas de serviços podem depender dele.

Se ele falha, aparentemente temos:

Sistema A caiu
Sistema B caiu
Sistema C caiu
API caiu
MQ não conecta
Aplicação web caiu

O iniciante enxerga seis incidentes.

O engenheiro experiente pergunta:

O que todos os afetados têm em comum?

Essa talvez seja uma das perguntas mais poderosas de um War Room.

No mainframe, pense em RACF.

Uma alteração incorreta pode atingir:

            RACF
              |
     +--------+--------+
     |        |        |
    CICS     MQ       Batch
     |        |        |
    Db2      API      Dataset

Você pode passar duas horas investigando CICS, Db2 e MQ separadamente.

Ou descobrir em dez minutos que todos começaram a apresentar problemas depois de uma mudança de autorização.

O tamanho da alteração não determina o tamanho do desastre.

Uma linha pode derrubar uma arquitetura inteira.



🔎 CAPÍTULO 3 — LISBETH ENSINA O MÉTODO CIENTÍFICO DO WAR ROOM

A coleção de incidentes apresentada nesta conversa possui um tesouro escondido:

OBSERVE
   ↓
EVIDENCE
   ↓
HYPOTHESIS
   ↓
TEST
   ↓
FIX
   ↓
VERIFY

Eu acrescentaria:

LEARN
   ↓
PREVENT

Esse fluxo separa troubleshooting de superstição tecnológica.

O método ruim é:

Aplicação lenta
      ↓
RESTART
      ↓
Voltou?

O clássico:

“Reinicia para ver.”

Às vezes funciona.

E justamente por funcionar ocasionalmente tornou-se um dos hábitos mais perigosos da informática.

Imagine uma região CICS apresentando degradação porque existe contenção em determinado recurso.

Alguém faz recycle.

O problema desaparece.

Todos comemoram.

Mas também desapareceram parte das condições que permitiriam entender o incidente.

Quatro dias depois:

03:17.

Telefone toca.

— Caiu novamente.

Parabéns.

Você não resolveu o incidente anterior.

Apenas zerou o tabuleiro.



🧭 CAPÍTULO 4 — AS QUATRO PERGUNTAS DE LISBETH

Antes de tocar no ambiente, acrescente quatro dimensões:

TIME
CHANGE
SCOPE
CORRELATION

TIME — quando começou?

14:03?

Ontem?

Gradualmente?

Somente durante o batch?

CHANGE — o que mudou?

Deploy?

Configuração?

Firewall?

Certificado?

Carga?

SCOPE — quem está afetado?

Um usuário?

Todos?

Uma região?

Um CICS?

Uma LPAR?

Uma API?

CORRELATION — o que os afetados compartilham?

Db2?

MQ?

DNS?

Storage?

RACF?

Rede?

Essa combinação reduz brutalmente o universo de possibilidades.


🖥️ CAPÍTULO 5 — CPU EM 100% NÃO SIGNIFICA “COMPRE CPU”

Nos incidentes Linux, uma das primeiras situações é CPU Saturation.

Você encontra:

CPU = 99%

O iniciante conclui:

“Falta CPU.”

Calma.

CPU alta é uma evidência, não necessariamente a causa raiz.

Pode existir:

loop infinito
processo runaway
query problemática
retry storm
carga inesperada
job agendado
algoritmo ruim

No Linux, comandos como:

top
ps aux --sort=-%cpu
uptime

ajudam na investigação.

No mainframe mudamos as ferramentas:

RMF
SMF
WLM
SDSF

Mas mantemos a pergunta:

Quem está consumindo recurso e por quê?

Essa diferença é enorme.

Capacity Planning não é simplesmente olhar para CPU e comprar capacidade.

É entender comportamento do workload.


🧠 CAPÍTULO 6 — O OOM KILLER: QUANDO O SISTEMA OPERACIONAL EXECUTA O PRISIONEIRO

Agora memória.

Linux começa a ficar sem RAM.

Um processo desaparece.

A aplicação registra:

Process terminated

Você conclui:

“A aplicação crashou.”

Talvez não.

Ela pode ter sido vítima do OOM Killer — Out Of Memory Killer.

Simplificando:

RAM acaba
   ↓
kernel precisa sobreviver
   ↓
escolhe processo
   ↓
mata processo

Isso introduz uma distinção preciosa:

PROCESSO MORREU

não significa necessariamente:

PROCESSO SE MATOU

Ele pode ter sido morto externamente.

Esse raciocínio vale para qualquer investigação: sempre procure saber quem iniciou a ação observada.


💾 CAPÍTULO 7 — “NO SPACE LEFT” QUANDO AINDA EXISTE ESPAÇO

Aqui encontramos uma das curiosidades mais deliciosas da série.

Você executa:

df -h

e existe espaço.

Mesmo assim:

No space left on device

Como?

Inodes.

Um filesystem não precisa apenas de bytes para armazenar conteúdo. Ele também precisa manter estruturas que representam arquivos.

Portanto podemos ter:

ESPAÇO       55% utilizado
INODES      100% utilizados

Resultado:

não conseguimos criar novos arquivos.

Um milhão de pequenos arquivos pode esgotar inodes sem esgotar a capacidade em bytes.

Para o programador COBOL, existe uma bela lição conceitual aqui:

capacidade física não é necessariamente capacidade utilizável.

No z/OS, obviamente não estamos falando de inodes para datasets tradicionais, mas podemos encontrar outras restrições envolvendo:

PRIMARY
SECONDARY
EXTENTS
VOLUME
SMS
DATACLAS
STORCLAS
VTOC
CATALOG

Ter DASD disponível em algum lugar não garante que determinado dataset consiga crescer daquela maneira naquele momento.


🌐 CAPÍTULO 8 — “A REDE CAIU” É O PRIMO DO “PROGRAMA DEU ERRO”

Outro clássico.

Usuário não consegue acessar.

Conclusão instantânea:

“Rede.”

Não.

Construa a espada peça por peça:

DNS
 ↓
ROUTE
 ↓
FIREWALL
 ↓
PORT
 ↓
PROCESS
 ↓
APPLICATION

Pergunte:

Até onde funciona?

Essa mudança de pergunta é fantástica.

Em vez de investigar todo o universo, encontramos a fronteira entre:

FUNCIONA | NÃO FUNCIONA

📖 CAPÍTULO 9 — DNS: O CATÁLOGO TELEFÔNICO QUE TODO MUNDO ESQUECE ATÉ QUE QUEBRE

Você conhece:

api.bellacosa.com

A máquina precisa descobrir algo como:

192.0.2.123

Se a resolução falha, talvez o servidor esteja perfeitamente saudável.

Aplicação funcionando.

Banco funcionando.

Rede funcionando.

Mas o usuário não sabe para onde ir.

Ferramentas Linux incluem:

dig
nslookup

É por isso que problemas de DNS frequentemente parecem problemas de aplicação.

O sintoma aparece longe da causa.


🛣️ CAPÍTULO 10 — ROUTING: O CASTELO EXISTE, MAS NÃO EXISTE ESTRADA

Agora temos endereço.

Isso não significa que conseguimos chegar até ele.

SOURCE
   ↓
ROUTER A
   ↓
ROUTER B
   X
ROUTER C
   ↓
DESTINATION

Uma rota errada pode tornar um servidor perfeitamente saudável inacessível.

A lição:

existência não implica alcançabilidade.

Parece filosofia de boteco.

Mas também é engenharia de redes.


🔥 CAPÍTULO 11 — FIREWALL: EU SEI QUE VOCÊ EXISTE, MAS VOCÊ NÃO ENTRA

Agora:

DNS       OK
ROUTE     OK
HOST      OK
SERVICE   OK
FIREWALL  BLOCK

Do ponto de vista do servidor:

“Estou funcionando.”

Do ponto de vista do cliente:

“Está tudo morto.”

Essa diferença entre saúde interna e experiência externa é uma das maiores mensagens da coleção inteira.

Monitorar apenas componentes não basta.

Precisamos monitorar serviços.


🚪 CAPÍTULO 12 — REFUSED E TIMEOUT CONTAM HISTÓRIAS DIFERENTES

Três mensagens parecidas podem representar três mundos.

Address already in use

A aplicação tenta ocupar uma porta que já está sendo utilizada.

Connection refused

Você conseguiu chegar ao host, mas não encontrou um serviço aceitando a conexão como esperado.

Timeout

Você esperou e a conversa não terminou adequadamente.

Timeout pode envolver:

route
firewall
packet loss
load balancer
congestionamento
aplicação
dependência

E existe um detalhe delicioso:

o tempo do erro também é evidência.

Falha imediatamente?

Depois de 5 segundos?

Exatamente 30?

Sempre 60?

Um timeout extremamente regular pode apontar para configuração de algum componente intermediário.

Cronômetro também é ferramenta de diagnóstico.


⚖️ CAPÍTULO 13 — O LOAD BALANCER QUE DERRUBOU SERVIDORES SAUDÁVEIS

Imagine três aplicações:

APP1  OK
APP2  OK
APP3  OK

Load balancer executa:

GET /healthz

Mas o endpoint correto é:

GET /health

O resultado?

APP1 UNHEALTHY
APP2 UNHEALTHY
APP3 UNHEALTHY

O balanceador remove todas.

Temos então uma situação digna de Aincrad:

todos os servidores estão funcionando e o serviço está completamente indisponível.

Por quê?

Porque saúde física e saúde lógica são diferentes.


❤️ CAPÍTULO 14 — HEALTH CHECK TAMBÉM PODE SER PERIGOSO

Imagine um /health verificando:

aplicação
Db2
MQ
cache
DNS
API externa
serviço secundário

Uma API pouco importante cai.

Health check retorna FAIL.

Load balancer remove instância.

Todas as instâncias fazem igual.

Resultado:

dependência secundária falha
            ↓
health checks falham
            ↓
instâncias removidas
            ↓
OUTAGE TOTAL

Maravilhoso.

Criamos um mecanismo de alta disponibilidade capaz de aumentar a indisponibilidade.

Por isso health checks precisam ser cuidadosamente projetados.


☁️ CAPÍTULO 15 — “RUNNING” NÃO SIGNIFICA “FUNCIONANDO”

Uma VM aparece no console:

RUNNING

Isso não prova:

SSH OK
OS OK
PROCESS OK
APP OK
DATABASE OK
USER OK

Existem camadas:

Hardware
   ↓
Hypervisor
   ↓
VM
   ↓
Operating System
   ↓
Process
   ↓
Application
   ↓
Dependency
   ↓
Business Transaction

No mainframe:

CEC
 ↓
LPAR
 ↓
z/OS
 ↓
CICS
 ↓
Transaction
 ↓
Db2/MQ
 ↓
Business

CICS UP não significa transação saudável.

JOB ACTIVE não significa trabalho útil sendo realizado.

Guarde esta frase:

Estado não é progresso.


💽 CAPÍTULO 16 — STORAGE TEM PELO MENOS TRÊS MANEIRAS DE MACHUCAR VOCÊ

Storage pode apresentar problemas de:

CAPACITY
AVAILABILITY
PERFORMANCE

Um volume pode estar cheio.

Pode estar inacessível.

Ou pode estar disponível e absurdamente lento.

Esse terceiro caso engana muita gente.

Porque:

STORAGE = ONLINE

não significa:

STORAGE = PERFORMANDO BEM

Entram conceitos como:

IOPS, throughput e latency.

Dois workloads podem movimentar 10 GB e produzir comportamentos completamente diferentes.

Um pode ler grandes blocos sequencialmente.

Outro pode realizar milhões de pequenas operações aleatórias.

Mesmo volume.

Workloads completamente diferentes.

No universo IBM Z pense em:

DASD
I/O response time
cache
channels
EXCP
Db2 buffer pools
synchronous reads

Não pergunte apenas:

“Quanto temos?”

Pergunte também:

“Como estamos usando?”


🗄️ CAPÍTULO 17 — O BANCO FICOU SEM CONEXÕES

Suponha:

MAX CONNECTIONS = 500

A aplicação abre conexões e não libera adequadamente.

100
200
300
400
499
500

Chega a próxima:

💥

A solução rápida:

MAX CONNECTIONS = 1000

Pode aliviar.

Mas se existe vazamento:

500 → 1000 → 2000 → 4000

Você não corrigiu o problema.

Apenas comprou tempo.

Isso é equivalente a aumentar o balde enquanto alguém continua abrindo a torneira.


🌪️ CAPÍTULO 18 — RETRY STORM: QUANDO A RESILIÊNCIA ATACA O SISTEMA

Aqui existe uma consequência fascinante.

Banco fica lento.

Aplicação recebe timeout.

Programador implementou:

IF ERROR
   RETRY
END-IF

Parece sensato.

Até acontecer:

100 requests
    ↓
100 failures
    ↓
100 retries
    ↓
200 requests
    ↓
mais failures
    ↓
mais retries

O sistema debilitado recebe mais carga porque está debilitado.

Surge a retry storm.

Por isso arquiteturas resilientes empregam mecanismos como:

exponential backoff
jitter
circuit breaker
retry budget

Resiliência mal implementada pode produzir indisponibilidade.


🐳 CAPÍTULO 19 — DOCKER: PRIMEIRO DESCUBRA SE MORREU UM OU MORRERAM TODOS

Temos:

Container A FAIL
Container B OK
Container C OK

Suspeitamos de A.

Mas:

Container A FAIL
Container B FAIL
Container C FAIL
Container D FAIL

Pare de investigar cada aplicação individualmente.

Pergunte o que elas compartilham:

HOST
CPU
MEMORY
DISK
NETWORK
DNS
STORAGE

Isso é correlação operacional.

É exatamente a lógica do blast radius reaparecendo.


☸️ CAPÍTULO 20 — CRASHLOOPBACKOFF NÃO É A DOENÇA

Kubernetes mostra:

CrashLoopBackOff

Muita gente trata isso como causa.

Na realidade, é mais próximo de um estado resultante:

START
 ↓
CRASH
 ↓
RESTART
 ↓
CRASH
 ↓
RESTART
 ↓
CRASH
 ↓
BACKOFF

O Kubernetes está dizendo:

“Eu tentei. Morreu. Tentei novamente. Morreu novamente. Agora vou esperar um pouco antes de continuar insistindo.”

A causa pode estar em:

config
secret
dependency
permission
OOM
bug
filesystem
health probe

Portanto:

não conserte o CrashLoopBackOff; descubra por que o processo está crashando.


📦 CAPÍTULO 21 — IMAGEPULLBACKOFF: O AVENTUREIRO NEM ENTROU NA DUNGEON

Outro caso:

Pod
 ↓
precisa da imagem
 ↓
Registry
 X

Possíveis causas:

tag errada
imagem inexistente
credencial inválida
DNS
rede
rate limit
registry indisponível

Aqui a aplicação sequer começou.

Essa observação é fundamental:

descubra em qual estágio do ciclo de vida ocorreu a falha.

Não faz sentido procurar erro de aplicação se a aplicação nunca executou.


⏳ CAPÍTULO 22 — PENDING NÃO SIGNIFICA QUEBRADO

Pod está:

Pending

Pode estar esperando:

CPU
Memory
GPU
PVC
quota
node selector
toleration
scheduler

Isso nos leva novamente à diferença entre:

CAPACIDADE TOTAL

e:

CAPACIDADE UTILIZÁVEL POR AQUELE WORKLOAD

O cluster pode possuir recursos livres e mesmo assim não conseguir posicionar determinado Pod.

Para quem conhece WLM, a filosofia não soa tão alienígena.


🌐 CAPÍTULO 23 — O CAMINHO DO PACOTE NO KUBERNETES

Grave:

USER
 ↓
INGRESS
 ↓
SERVICE
 ↓
ENDPOINT
 ↓
POD

Quando algo falhar, percorra a cadeia.

Pod responde?

Endpoint existe?

Service encontra Endpoint?

Ingress encontra Service?

DNS aponta corretamente?

O método é:

teste cada fronteira.

Não:

“Delete todos os Pods e invoque os deuses de Aincrad.”


🏷️ CAPÍTULO 24 — UMA LETRA PODE DERRUBAR TUDO

Service:

selector:
  app: payment

Pod:

labels:
  app: payments

Um s.

Resultado:

SERVICE     EXISTS
POD         EXISTS
ENDPOINTS   NONE

Tudo existe.

Nada conversa.

Esse é um tipo especialmente interessante de incidente:

os componentes estão corretos individualmente; a relação entre eles está errada.

E sistemas distribuídos são essencialmente coleções de relações.


🏗️ CAPÍTULO 25 — TERRAFORM: AUTOMATIZANDO O SUCESSO E O DESASTRE

Infrastructure as Code traz:

CODE
 ↓
PLAN
 ↓
REVIEW
 ↓
APPLY
 ↓
VERIFY

Fantástico.

Mas automação possui uma característica maravilhosa e assustadora:

computadores conseguem executar erros humanos em velocidade industrial.

Manualmente você pode alterar um servidor errado.

Automação pode alterar 300.

Por isso:

terraform plan

não é decoração.

É uma oportunidade de enxergar o futuro.


☠️ CAPÍTULO 26 — O SINAL -/+ QUE PODE ESTRAGAR SEU CAFÉ

Imagine o Terraform indicando que determinado recurso será destruído e recriado.

Você pensava estar fazendo uma pequena alteração.

Terraform pretende:

DESTROY
   ↓
CREATE

E alguém simplesmente executa:

terraform apply

Lisbeth arrancaria o martelo da sua mão.

Leia o plano.

Principalmente alterações destrutivas.

Peer review em infraestrutura não é burocracia.

É proteção contra blast radius automatizado.


👻 CAPÍTULO 27 — CONFIGURATION DRIFT: O FANTASMA DA INFRAESTRUTURA

Código diz:

ESTADO A

Mas alguém entrou no console manualmente e alterou:

ESTADO B

Agora:

CODE ≠ REALIDADE

Isso é configuration drift.

Depois alguém altera uma inocente linha no Terraform.

O plano aparece gigantesco.

— Mas eu só mudei uma coisa!

Sim.

Só que a realidade já havia se afastado do estado declarado.

Esse conceito possui enorme importância mesmo fora do Terraform.

Ambientes mainframe também sofrem quando:

documentação
configuração
procedimento
produção

deixam de representar a mesma realidade.


🏛️ CAPÍTULO 28 — E O QUE TUDO ISSO TEM A VER COM COBOL?

Quase tudo.

Não devemos criar equivalências técnicas falsas, mas podemos criar analogias mentais úteis:

Mundo modernoUniverso mainframe
Linux hostz/OS / LPAR
ProcessAddress Space
DatabaseDb2 / IMS
StorageDASD / storage subsystem
IAMRACF / SAF
MonitoringRMF / SMF
Workload managementWLM
Application serverCICS / IMS TM, dependendo do contexto
MessagingMQ
NetworkTCP/IP
Logs/eventsSYSLOG, JES, CICS/Db2 traces e logs

O programador COBOL moderno não precisa transformar-se em administrador Kubernetes.

Mas precisa compreender que sua aplicação vive dentro de um ecossistema de dependências.

Seu COBOL pode estar perfeito.

Mesmo assim:

COBOL
 ↓
CICS
 ↓
Db2
 ↓
Storage

Se storage degrada:

Db2 espera
 ↓
CICS espera
 ↓
COBOL espera
 ↓
cliente espera

Quem leva a culpa?

Normalmente:

“O sistema está lento.”


🔬 CAPÍTULO 29 — CORRELAÇÃO NÃO É CAUSA

Deploy:

14:02

Incidente:

14:03

Suspeito?

Muito.

Prova?

Não.

Às 14:03 também poderia ter ocorrido:

certificado expirou
batch iniciou
storage saturou
DNS mudou
dependência caiu

Portanto:

TIMELINE
   ↓
HIPÓTESE

mas:

EVIDÊNCIA
   ↓
CONFIRMAÇÃO

Essa distinção evita duas horas de War Room culpando o último deploy enquanto o verdadeiro culpado está tranquilamente consumindo I/O no andar de baixo da dungeon.


🧰 CAPÍTULO 30 — O CHECKLIST DA FORJA DE LISBETH

Quando receber:

“Produção caiu!”

não saia reiniciando coisas.

Siga algo próximo disto:

  1. Defina o sintoma real. O que exatamente o usuário não consegue fazer?

  2. Determine o impacto. Quantos usuários, aplicações ou regiões foram afetados?

  3. Descubra quando começou. Procure uma timeline precisa.

  4. Verifique mudanças recentes. Deploy, configuração, infraestrutura, segurança, capacidade.

  5. Procure denominadores comuns. DNS, Db2, MQ, storage, RACF, rede etc.

  6. Determine a última camada comprovadamente saudável.

  7. Colete evidências antes de alterar o ambiente.

  8. Crie hipóteses testáveis.

  9. Teste com o menor impacto possível.

  10. Aplique a menor correção segura.

  11. Verifique pela perspectiva do usuário.

  12. Faça RCA e prevenção.

Observe o item 11.

Não basta:

CICS = UP

Teste:

TRANSACTION = OK?

E melhor ainda:

BUSINESS TRANSACTION = OK?

🧙 CAPÍTULO 31 — A EVOLUÇÃO DO PROGRAMADOR COBOL

O iniciante vê:

APPLICATION DOWN

e pensa:

RESTART

O profissional começa a pensar:

Qual aplicação?
Qual usuário?
Desde quando?
Todos?
Alguns?
Qual ambiente?
O que mudou?
Qual dependência?
Qual erro?
Qual latência?
Qual padrão?
Qual componente comum?

E existe uma diferença monumental entre essas duas formas de trabalhar.

A primeira reage.

A segunda investiga.


⚔️ CAPÍTULO 32 — LISBETH FINALMENTE ENTREGA A ESPADA

Depois de Linux, redes, load balancers, cloud, storage, bancos, Docker, Kubernetes e Terraform, talvez pareça que estudamos dezenas de assuntos diferentes.

Mas retire os nomes das tecnologias.

O que sobra?

RESOURCE
CAPACITY
DEPENDENCY
CONNECTIVITY
CONFIGURATION
STATE
CHANGE
OBSERVABILITY

Essa é a verdadeira dungeon.

Tecnologias mudam.

Essas categorias continuam reaparecendo.

O mainframe dos anos 1970, o Linux moderno, um cluster Kubernetes e uma cloud pública parecem mundos diferentes.

Mas todos possuem:

recursos finitos, dependências, configurações, estados, caminhos de comunicação e seres humanos perfeitamente capazes de alterar alguma coisa às 17:59 de sexta-feira.


🕵️ EASTER EGG — O INCIDENTE DAS 03:17

Você chegou até aqui.

Então merece descobrir por que o relógio marcou 03:17 duas vezes.

Imagine que o telefone toca exatamente às 03:17.

Produção está lenta.

CPU aumentou.

Db2 apresenta waits.

CICS começa a acumular transações.

Um jovem engenheiro declara:

“É CPU!”

Lisbeth olha para ele.

Não fala nada.

Você abre a timeline.

Descobre:

03:15  Batch iniciou
03:16  I/O aumentou
03:16  Db2 response time aumentou
03:17  CICS response time aumentou
03:17  CPU aumentou
03:18  usuários começaram a reclamar

Agora temos outra história.

CPU não iniciou o problema.

Ela também reagiu ao workload.

A pista estava na ordem dos acontecimentos.

03:17 não era a causa. Era apenas o momento em que o castelo começou a sentir o terremoto iniciado dois minutos antes.

Esse é o Easter Egg.

Em incidentes complexos:

timeline é quase uma máquina do tempo.


☕ EPÍLOGO — NÃO CONSERTE A ESPADA ANTES DE DESCOBRIR ONDE ELA QUEBROU

Lisbeth não seria uma boa ferreira se simplesmente pegasse qualquer espada quebrada, desse cinco marteladas e gritasse:

“Próximo!”

Um engenheiro de produção também não deveria trabalhar assim.

Quando ocorrer um incidente:

Observe
   ↓
Colete evidências
   ↓
Defina o escopo
   ↓
Monte a timeline
   ↓
Procure correlações
   ↓
Crie hipóteses
   ↓
Teste
   ↓
Corrija
   ↓
Verifique
   ↓
Aprenda
   ↓
Previna

Essa sequência vale para:

Linux
Cloud
Network
Storage
Database
Docker
Kubernetes
Terraform
z/OS
CICS
IMS
Db2
MQ
RACF
WLM

E provavelmente continuará válida quando metade dessas tecnologias já tiver virado questão de arqueologia computacional.

Porque troubleshooting não é decorar comandos.

Não é saber kubectl de cabeça.

Não é decorar comandos de SDSF.

Não é executar terraform apply.

E definitivamente não é saber onde fica o botão Restart.

Troubleshooting é construir uma explicação baseada em evidências para responder:

O que aconteceu, onde aconteceu, quando começou, quem foi afetado, por que aconteceu e como sabemos que realmente corrigimos?

Quando você consegue responder essas perguntas, algo interessante acontece.

Você deixa de ser apenas o programador COBOL que recebeu uma ligação porque “o sistema caiu”.

Você começa a enxergar o sistema inteiro:

USUÁRIO
   ↓
APLICAÇÃO
   ↓
MIDDLEWARE
   ↓
DATABASE
   ↓
NETWORK
   ↓
STORAGE
   ↓
INFRASTRUCTURE

E principalmente as relações entre essas camadas.

É aí que nasce aquela habilidade difícil de colocar num curso ou numa certificação: raciocínio operacional.

O COBOL continua importante.

O JCL continua importante.

CICS, Db2, MQ, RACF, WLM, SMF e RMF continuam importantes.

Mas acima de todas essas ferramentas existe algo ainda mais poderoso:

a capacidade de olhar para cinquenta sintomas e descobrir qual história as evidências estão tentando contar.

Lisbeth coloca a espada recém-forjada sobre o balcão.

Você pergunta:

— Está pronta?

Ela provavelmente responderia:

— Ainda não.

— Mas ela já está inteira!

— Exatamente. Agora precisamos testar.

E essa talvez seja a última e mais importante lição dos 50 incidentes:

o fato de o sistema ter voltado não prova que o incidente terminou.

Primeiro restauramos o serviço.

Depois entendemos a causa.

Depois verificamos.

Depois aprendemos.

E finalmente tentamos impedir que o telefone volte a tocar às 03:17.

Porque em Aincrad morrer significava não voltar.

Em Produção existe algo talvez ainda mais assustador:

o incidente volta na segunda-feira.

Um Café no Bellacosa Mainframe — onde até uma ferreira de Sword Art Online sabe que RESTART não é Root Cause Analysis.

sexta-feira, 5 de maio de 2023

Goblin Slayer — Parte V : A Evolução Cronológica Completa da Franquia Goblin Slayer

 

Bellacosa Mainframe apresenta Goblin Slayer

☕ Um Café no Bellacosa Mainframe

Goblin Slayer — Parte V : A Evolução Cronológica Completa da Franquia Goblin Slayer

Quando um Programador COBOL Descobre que Grandes Sistemas e Grandes Histórias Nunca Nascem Prontos... Eles Evoluem Release Após Release

"Nenhum grande sistema corporativo surgiu completo na versão 1.0. Nenhuma grande obra da literatura também."


Introdução — A Jornada de uma Pequena Web Novel que Conquistou o Mundo

Quando Goblin Slayer estreou no anime em outubro de 2018, muita gente acreditou que aquela era uma criação repentina.

Parecia que Kumo Kagyu havia simplesmente aparecido do nada, lançado uma obra polêmica e desaparecido novamente atrás de seu misterioso pseudônimo.

Mas a realidade foi muito diferente.

Goblin Slayer levou anos para chegar à televisão.

Sua evolução lembra muito o desenvolvimento de um grande software corporativo.

Primeiro surge um protótipo.

Depois uma versão experimental.

Em seguida aparecem melhorias.

Novos módulos.

Novos usuários.

Novas funcionalidades.

Até que um dia o projeto torna-se referência mundial.

A história da franquia Goblin Slayer segue exatamente essa lógica.

Pegue seu café.

Vamos viajar por mais de uma década de evolução.


2013 — O nascimento silencioso

Todo grande projeto começa pequeno.

Por volta de 2013, Kumo Kagyu começa a publicar Goblin Slayer como Web Novel em plataformas japonesas voltadas para escritores independentes.

Na época, esse mercado estava em plena transformação.

A internet havia criado algo revolucionário.

Qualquer pessoa poderia publicar uma história.

Sem editora.

Sem contrato.

Sem marketing.

Sem investimento.

Era praticamente o GitHub da literatura japonesa.

Centenas de autores disponibilizavam capítulos diariamente.

Milhares de leitores avaliavam.

Pouquíssimos sobreviviam.

Goblin Slayer foi um deles.


O laboratório das ideias

Na Web Novel, Kumo Kagyu experimentava conceitos.

Algumas ideias seriam alteradas.

Outras refinadas.

Personagens amadureceriam.

A narrativa ganharia ritmo.

Assim como acontece durante o desenvolvimento de software.

A primeira versão raramente é a definitiva.


2014–2015 — Crescimento orgânico

Durante esse período, Goblin Slayer constrói sua primeira comunidade de leitores.

Não havia propaganda.

Não existia anime.

Não existia mangá.

Tudo acontecia através do famoso "boca a boca" digital.

Um leitor indicava para outro.

Os comentários aumentavam.

As avaliações melhoravam.

Editoras começaram a perceber aquele fenômeno.


15 de fevereiro de 2016 — A primeira grande promoção

Finalmente chega o grande momento.

A editora SB Creative, através do selo GA Bunko, publica oficialmente o Volume 1 da Light Novel Goblin Slayer.

As ilustrações ficam sob responsabilidade de Noboru Kannatsuki.

Essa data muda completamente o destino da obra.

Ela deixa de ser um projeto independente.

Agora torna-se uma franquia profissional.


O casamento perfeito

Uma curiosidade interessante.

Grande parte do sucesso visual de Goblin Slayer também deve ser creditada ao trabalho de Kannatsuki.

Seu traço consegue equilibrar dois extremos.

Personagens extremamente expressivos.

E um mundo brutal.

Poucos ilustradores conseguem criar esse contraste.


Maio de 2016 — O mangá

O sucesso da Light Novel abre rapidamente uma nova porta.

Em 25 de maio de 2016, começa a serialização do mangá desenhado por Kōsuke Kurose.

Agora Goblin Slayer alcançava um público completamente diferente.

Nem todos gostam de Light Novels.

Mas milhões de japoneses acompanham mangás semanalmente.

A franquia começava a acelerar.


O primeiro grande teste

O mangá apresentou um enorme desafio.

Como adaptar cenas extremamente violentas sem perder o propósito narrativo?

Kōsuke Kurose conseguiu um equilíbrio notável.

A violência permanecia presente.

Mas sempre a serviço da construção do mundo.

Nunca como simples espetáculo.


2017 — Nasce Year One

Em 15 de setembro de 2017, inicia-se a publicação do mangá Goblin Slayer: Year One.

Poucos meses depois, em 15 de março de 2018, também chega sua versão em Light Novel.

Esse talvez seja o spin-off mais importante de toda a franquia.

Por quê?

Porque responde uma pergunta que muitos fãs faziam.

Como aquele aventureiro tornou-se tão eficiente?

A resposta não era talento.

Era experiência.


O nascimento do profissional

Year One mostra algo extremamente raro.

Goblin Slayer erra.

Muito.

Ele calcula errado.

Escolhe equipamentos inadequados.

Confia demais.

Confia de menos.

Improvisa.

Sobrevive por pouco.

Cada erro transforma-se numa futura regra.

É exatamente assim que nasce um especialista.


Maio de 2018 — Brand New Day

Em 25 de maio de 2018, surge Goblin Slayer: Brand New Day.

Enquanto a obra principal mantém ritmo intenso, Brand New Day oferece algo diferente.

Respiração.

Cotidiano.

Personagens convivendo.

Conversando.

Vivendo.

É como observar um sistema durante sua operação normal, entre grandes incidentes.


Outubro de 2018 — O mundo descobre Goblin Slayer

7 de outubro de 2018.

Esta talvez seja a data mais importante de toda a franquia.

O estúdio White Fox estreia oficialmente o anime.

São apenas doze episódios.

Mas bastaram poucas horas para a internet explodir.


O episódio que mudou tudo

O primeiro episódio tornou-se um divisor de águas.

Redes sociais.

YouTube.

Fóruns.

Blogs.

Todos discutiam Goblin Slayer.

Alguns criticavam.

Outros elogiavam.

Mas praticamente ninguém permaneceu indiferente.

E existe uma regra antiga do mercado editorial.

Uma obra que provoca debate raramente desaparece rapidamente.


2018 — A franquia amadurece

Nesse momento Goblin Slayer deixa de ser apenas uma Light Novel.

Agora passa a existir simultaneamente em vários formatos.

  • Web Novel

  • Light Novel

  • Mangá

  • Spin-offs

  • Anime

Era oficialmente uma franquia multimídia.


2019 — O universo se expande

Durante 2019, a principal novidade é a reorganização da publicação de Goblin Slayer Side Story II: Dai Katana.

Essa obra retorna aproximadamente dez anos na cronologia.

Ali conhecemos melhor a geração da Sword Maiden.

É interessante porque mostra que o mundo de Goblin Slayer sempre foi muito maior do que acompanhávamos na série principal.

Enquanto nosso protagonista limpava cavernas...

Outros aventureiros enfrentavam ameaças completamente diferentes.


Fevereiro de 2020 — Goblin's Crown

Em 1º de fevereiro de 2020, estreia Goblin Slayer: Goblin's Crown.

Embora muitos o chamem simplesmente de filme...

Na prática ele funciona como continuação direta da primeira temporada.

Assistir à segunda temporada sem conhecer Goblin's Crown significa perder parte importante do desenvolvimento dos personagens.


Um formato inteligente

Ao invés de transformar aquele arco em diversos episódios...

Optou-se por condensá-lo num longa-metragem.

A decisão dividiu opiniões.

Mas permitiu manter excelente ritmo narrativo.


2021–2022 — A expansão silenciosa

Enquanto muitos aguardavam uma terceira adaptação animada...

A franquia continuava crescendo.

Novos volumes da Light Novel eram publicados.

Mangás avançavam.

Spin-offs recebiam novos capítulos.

Em 23 de dezembro de 2022, surge Goblin Slayer: A Day in the Life.

Mais uma obra voltada ao cotidiano.

Mostrando que mesmo num universo brutal ainda existe espaço para amizade.

Humor.

Rotina.

Esperança.


Outubro de 2023 — A Segunda Temporada

Finalmente.

Em 6 de outubro de 2023, estreia Goblin Slayer II.

Agora sob responsabilidade do estúdio LIDENFILMS.

Foram novamente doze episódios.

A troca de estúdio gerou comparações inevitáveis.

Alguns espectadores preferiram White Fox.

Outros elogiaram a nova direção artística.

Mas havia um consenso.

Era ótimo voltar a acompanhar Goblin Slayer.


A evolução da Light Novel

Enquanto o anime caminhava lentamente...

A obra original continuava avançando.

Volume após volume.

Novas aventuras.

Novos personagens.

Novos desafios.

Até alcançar 16 volumes publicados.

Isso significa algo muito importante.

O anime ainda adaptou apenas uma parte relativamente pequena da história criada por Kumo Kagyu.


O universo expandido

Hoje Goblin Slayer possui um ecossistema impressionante.

Série principal

  • Web Novel

  • Light Novel

  • Mangá

  • Anime

  • Filme


Obras paralelas

  • Year One

  • Brand New Day

  • Dai Katana

  • A Day in the Life

Cada uma amplia um aspecto diferente daquele universo.


A engenharia de uma franquia

Observando essa evolução, percebemos algo interessante.

Nada aconteceu por acaso.

Primeiro veio a ideia.

Depois a validação.

Depois a profissionalização.

Depois a expansão.

Depois a internacionalização.

É praticamente o ciclo de vida de um grande software corporativo.

Versão alfa.

Versão beta.

Release.

Atualizações.

Novos módulos.

Integrações.

Melhorias contínuas.


O que ainda pode acontecer?

Como existe bastante material original ainda não adaptado, a franquia possui espaço para novas temporadas, filmes ou OVAs. Até o momento desta homenagem, porém, uma terceira temporada do anime ainda não foi oficialmente anunciada.

Isso significa que Goblin Slayer continua sendo uma história em evolução.

E talvez isso seja a melhor notícia para seus fãs.


O olhar de um programador COBOL

Existe uma curiosa semelhança entre Goblin Slayer e sistemas de missão crítica.

Eles nunca ficam realmente "prontos".

Sempre existe uma melhoria.

Um novo módulo.

Uma atualização.

Uma correção.

Um refinamento.

Grandes sistemas vivem.

Grandes franquias também.


Conclusão — A Obra que Cresceu Como um Mainframe

Quando observamos apenas o anime, parece que Goblin Slayer surgiu repentinamente em 2018.

Mas agora sabemos a verdade.

Sua história começou anos antes.

Foi construída lentamente.

Capítulo após capítulo.

Livro após livro.

Volume após volume.

Exatamente como os grandes sistemas corporativos que sustentam bancos, governos e companhias aéreas.

Ninguém constrói um mainframe em um único dia.

Ninguém cria uma grande saga em uma única noite.

Ambos exigem arquitetura.

Disciplina.

Planejamento.

Melhoria contínua.

E uma enorme dose de paciência.

Talvez seja justamente essa a maior lição da evolução cronológica de Goblin Slayer.

As obras que permanecem por muitos anos raramente nascem perfeitas.

Elas evoluem.

Aprendem.

Adaptam-se.

Sobrevivem.

Assim como seu próprio protagonista.

Assim como os grandes sistemas COBOL.

Assim como todo verdadeiro arquiteto de longo prazo.

Porque, no fim das contas, as melhores histórias — assim como os melhores programas — nunca terminam realmente. Elas continuam sendo escritas a cada nova versão.

Um Café no Bellacosa Mainframe

ARQUIVOS DA GUILDA • CLASSIFICAÇÃO: DARK FANTASY

Goblin Slayer sem Mistérios

O Guia Definitivo da Série Completa

Uma jornada por cronologia, psicologia, biologia, estratégia, engenharia militar, referências culturais, simbolismos e os segredos escondidos de Goblin Slayer.

“Quando um Programador COBOL Descobre que Grandes Obras Também Precisam de um Mapa para Não se Perder na Dungeon.”
Explorar a série
RELATÓRIO DE MISSÃO

Uma série construída como uma campanha de RPG

Goblin Slayer sem Mistérios é uma coleção especial do Bellacosa Mainframe dedicada à análise profunda da obra criada por Kumo Kagyu. Cada capítulo investiga uma camada diferente da franquia, relacionando fantasia sombria, RPG de mesa, estratégia, trauma, sobrevivência, engenharia militar e arquitetura de sistemas.

A coleção foi organizada em ordem cronológica para facilitar a leitura. Você pode começar pela Parte I, seguir capítulo após capítulo ou utilizar os filtros para selecionar assuntos como psicologia, goblins, táticas, história da franquia e cultura otaku.

Todos os títulos abaixo são links HTML reais e permanecem acessíveis mesmo quando o JavaScript estiver desativado. Isso facilita a navegação dos leitores e a descoberta das páginas por mecanismos de busca.

Progresso da campanha 0 de 14 missões visitadas
14 capítulos encontrados
I
Introdução

Goblin Slayer sem Mistérios — Parte I

O ponto de entrada da campanha. Uma análise sobre o herói invisível que não salva o mundo em uma única batalha, mas impede silenciosamente que ele desmorone todos os dias.

Heroísmo Disciplina Mainframe
II
Disciplina

Goblin Slayer sem Mistérios — Parte II

O verdadeiro poder não está na espada, mas na constância de levantar, preparar os equipamentos e executar diariamente o trabalho que quase ninguém deseja assumir.

Rotina Dever Persistência
III
Missão crítica

Goblin Slayer sem Mistérios — Parte III

Nem todo herói enfrenta o Rei Demônio. Alguns garantem que na segunda-feira existirão sistema, salários, luz e uma aldeia inteira ainda de pé.

Disponibilidade Proteção Responsabilidade
IV
Arquitetura

Parte IV — O Arquiteto Invisível de Goblin Slayer

Uma reflexão sobre profissionais que projetam soluções, previnem desastres e permanecem atrás do terminal enquanto o restante do mundo apenas percebe que tudo continua funcionando.

Arquitetura COBOL Prevenção
V
Cronologia

Parte V — A Evolução Cronológica Completa da Franquia

Da publicação original às light novels, mangás, adaptações, spin-offs, filme e temporadas do anime: a evolução de uma história que cresceu release após release.

Web Novel Light Novel Anime
VI
Biologia

Parte VI — A Biologia dos Goblins

Anatomia, comportamento, adaptação, hierarquia e ecologia dos goblins analisados como uma espécie invasora capaz de explorar brechas e evoluir rapidamente.

Ecologia Adaptação Worldbuilding
VII
Referências

Parte VII — As Referências Escondidas de Goblin Slayer

Conan, Berserk, Tolkien, Dungeons & Dragons, Sword World RPG, literatura fantástica, mitologia e cultura pop escondidos entre as linhas da obra de Kumo Kagyu.

RPG Literatura Cultura pop
VIII
Psicologia

Parte VIII — A Psicologia Profunda de Goblin Slayer

Trauma, hipervigilância, isolamento, necessidade de controle, resiliência e reconstrução emocional por meio das relações que lentamente devolvem humanidade ao protagonista.

Trauma Memória Resiliência
IX
Engenharia militar

Parte IX — A Engenharia Militar de Goblin Slayer

Reconhecimento, suprimentos, redundância, controle do terreno, fortificação, retirada e arquitetura operacional transformam batalhas perigosas em vitórias planejadas.

Logística Terreno Contingência
X
Estratégia

Parte X — A Estratégia de Goblin Slayer

Uma análise sobre informação, iniciativa, especialização, probabilidades, redundância e a capacidade de pensar diversos movimentos à frente do adversário.

Planejamento Inteligência Antecipação
XI
100 segredos

Parte XI — Os 100 Segredos de Goblin Slayer

Cem detalhes sobre personagens, mundo, goblins, equipamentos, narrativa, simbolismos, RPG, produção, psicologia e estratégia que podem passar despercebidos até pelos fãs.

Easter eggs Simbolismos Curiosidades
XII
Guia completo

Parte XII — Goblin Slayer sem Mistérios

O mapa da campanha: introdução, sequência recomendada, resumo dos capítulos e orientação para explorar todas as camadas da coleção sem se perder na dungeon.

Índice Mapa Ordem de leitura
FINAL
Síntese definitiva

Por Que Goblin Slayer É uma das Melhores Obras de Dark Fantasy

A conclusão da jornada, reunindo cronologia, psicologia, estratégia, engenharia militar, simbolismos, referências culturais, construção de mundo e impacto na cultura otaku.

Dark Fantasy Síntese Conclusão
BÔNUS
Dossiê militar

A Composição do Exército Goblin em The Fate of an Adventurer

Rei Goblin, estado-maior, Champions, Shamans, arqueiros, infantaria, Riders, logística e cadeia de comando analisados como componentes de uma força militar organizada.

Exército Goblin Hierarquia Ordem de batalha
ROTA RECOMENDADA

Como percorrer esta dungeon

Comece pelas três primeiras partes para compreender a proposta da série. Depois visite o Arquiteto Invisível, conheça a evolução da franquia e aprofunde-se em biologia, referências, psicologia, engenharia militar e estratégia.

  1. 01 Fundamentos do herói invisível
  2. 02 História e evolução da franquia
  3. 03 Biologia e organização dos goblins
  4. 04 Psicologia e simbolismos
  5. 05 Engenharia militar e estratégia
  6. 06 Segredos, guia completo e síntese final
Bellacosa Mainframe Dark Fantasy • Anime • RPG • COBOL • Estratégia

“A vitória não é improviso. É arquitetura.”

sexta-feira, 21 de abril de 2023

Agile sem Mistérios no IBM Z : O Guia Definitivo do Programador COBOL Padawan para Sobreviver ao Mundo Ágil sem Esquecer as Lições da Tela Verd

 

Bellacosa Mainframe agile sem misterios no ibm z

☕ Um Café no Bellacosa Mainframe

Agile sem Mistérios no IBM Z

O Guia Definitivo do Programador COBOL Padawan para Sobreviver ao Mundo Ágil sem Esquecer as Lições da Tela Verde

"Um Jedi não luta contra a mudança. Ele aprende a usá-la a seu favor."

Existe um momento na vida de praticamente todo programador COBOL em que alguém entra na sala e anuncia:

"A partir da próxima semana vamos trabalhar em Agile."

Imediatamente surgem dezenas de pensamentos.

"Mas COBOL não é batch?"

"Como fazer Sprint se meu programa roda quatro horas?"

"Quem inventou Daily Meeting?"

"O Product Owner entende o que é um SQLCODE -904?"

"Como colocar DevOps num ambiente onde existe Change Management, CAB, RACF, CICS, Db2, IMS e três ambientes de homologação?"

Respire.

A boa notícia é que praticamente todos os grandes bancos do planeta trabalham hoje utilizando alguma adaptação de Agile sobre IBM Z.

Na verdade...

Existe uma ironia curiosa.

O mainframe já fazia diversas coisas "ágeis" muito antes do Manifesto Ágil existir.

Vamos descobrir por quê.


A Grande Mentira Sobre Agile

Muitos iniciantes acreditam que Agile significa:

trabalhar rápido.

Não.

Outros acreditam que significa:

fazer reuniões.

Também não.

Outros imaginam:

não existe documentação.

Errado novamente.

Agile significa algo muito mais simples.

Reduzir o custo da mudança.

Essa é a verdadeira definição.

Quanto mais cedo você descobrir um erro...

...mais barato ele fica.


O Mundo Antes do Agile

Imagine desenvolver um sistema bancário em 1988.

O fluxo era mais ou menos assim:

Levantamento

↓

Análise

↓

Especificação

↓

Projeto

↓

Programação

↓

Testes

↓

Homologação

↓

Produção

Tudo parecia organizado.

O problema?

O cliente só via o sistema depois de um ano.

Quando via...

Descobria que queria outra coisa.

Dinheiro perdido.


O Manifesto Ágil

Em 2001, dezessete especialistas reuniram-se nas montanhas de Utah.

Eles perceberam algo curioso.

Os projetos que davam certo...

...quase nunca seguiam o processo enorme definido nos livros.

Então criaram quatro valores famosos.

Pessoas acima de processos.

Software funcionando acima de documentos gigantes.

Colaboração acima de contratos.

Adaptabilidade acima de seguir planos cegamente.

Observe.

Eles nunca disseram que documentação é ruim.

Disseram apenas que ela não pode ser mais importante que entregar valor.


O IBM Z Sempre Foi Mais Ágil do Que Parece

Aqui vem um dos primeiros easter eggs.

Muito antes do Scrum existir...

o operador de produção já fazia ciclos extremamente curtos.

Imagine.

Executa Job

↓

Analisa JESMSGLG

↓

Corrige JCL

↓

Executa novamente

Isso é um loop.

Agile adora loops.


Outro exemplo.

Compile

↓

Linkedit

↓

Teste

↓

Erro

↓

Corrige

↓

Compile novamente

Outro Sprint.

Sem ninguém perceber.


O Backlog no Mainframe

Imagine um banco.

Backlog:

Novo PIX

Nova TED

Mudança no boleto

Correção fiscal

Nova regra do BACEN

Mudança LGPD

Novo relatório

Integração Open Finance

Atualização cambial

Tudo isso entra numa única fila.

Essa fila é o Product Backlog.

Ela muda diariamente.


Quem Decide?

No mundo COBOL existe uma figura curiosa.

O usuário de negócio.

Ele normalmente conhece:

  • contas

  • empréstimos

  • cartões

  • seguros

Mas talvez nunca tenha ouvido falar em:

DSNHLI

SQLCA

RACF

IMS

CICS

VSAM KSDS

É exatamente por isso que existe o Product Owner.

Ele traduz o negócio.

Você traduz tecnologia.


Sprint

Agora imagine um Sprint de duas semanas.

Objetivo:

Permitir PIX Agendado.

Não é:

Modificar programa COBOL.

Observe a diferença.

O Sprint entrega valor.

Não código.


O Trabalho do Padawan COBOL

Durante o Sprint você pode receber tarefas como:

Modificar programa COBOL.

Criar novo COPYBOOK.

Alterar tabela Db2.

Criar PACKAGE.

Executar BIND.

Modificar CICS.

Atualizar MQ.

Criar API via z/OS Connect.

Tudo isso pertence ao mesmo Sprint.


A Daily Meeting

Aqui nasce uma das maiores lendas do Agile.

A Daily NÃO existe para o gerente descobrir quem trabalhou.

Ela serve para sincronizar conhecimento.

Imagine dez desenvolvedores.

Sem Daily.

Todos alteram o mesmo COPYBOOK.

Caos.

Com Daily.

Todos sabem quem está mexendo em quê.


User Story

No Agile quase tudo começa assim.

Como cliente

Quero agendar um PIX

Para realizar pagamentos futuros.

Isso parece simples.

Mas escondido existem dezenas de tarefas.

COBOL.

Db2.

MQ.

Logs.

SMF.

Segurança.

RACF.

Auditoria.

Rollback.

Monitoramento.

Performance.


Definition of Done

Esse conceito salva projetos.

Pronto significa:

Compila?

Sim.

Testado?

Sim.

Code Review?

Sim.

Documentado?

Sim.

Pipeline passou?

Sim.

Deploy aprovado?

Sim.

Agora sim.


Agile no Batch

Muitos acreditam:

"Batch não combina com Agile."

Grande engano.

Imagine um processamento noturno.

Antes:

8 horas

↓

ABEND S0C7

↓

Descobre de manhã.

Hoje:

Testes automatizados.

Validação.

Mock.

Datasets de teste.

Pipeline.

Muito menos risco.


Agile e CICS

Imagine uma transação bancária.

Sprint:

Criar nova tela BMS

↓

Modificar COBOL

↓

Atualizar MAPSET

↓

Testar CEDF

↓

Publicar

Tudo acontece dentro de um Sprint.


Agile e Db2

Outro exemplo.

Nova tabela

↓

DDL

↓

RUNSTATS

↓

BIND PACKAGE

↓

BIND PLAN

↓

Testes

↓

Deploy

Observe.

Não existe "programar".

Existe entregar uma funcionalidade.


Agile e DevOps

Hoje praticamente todo ambiente moderno IBM Z trabalha próximo disso:

Git

↓

Commit

↓

Pipeline

↓

Compile COBOL

↓

DBB

↓

Testes

↓

Code Review

↓

Deploy automático

↓

Validação

↓

Produção

Isso é Agile em estado puro.


O Grande Inimigo

O maior inimigo do Agile não é o waterfall.

É o multitasking.

Imagine.

Você começa:

Projeto A.

Parou.

Projeto B.

Parou.

Projeto C.

Parou.

Projeto D.

No fim...

Nada termina.


O Custo da Mudança

Existe um gráfico famoso.

Quanto mais tarde um erro aparece...

Mais caro fica.

No mainframe isso é ainda mais verdadeiro.

Imagine descobrir em produção:

MOVEs invertidos

↓

Saldo incorreto

↓

Milhões de contas afetadas

Quanto custou?

Muito.


Testes Automatizados

O Padawan moderno aprende rapidamente:

Testar manualmente não escala.

Hoje temos:

ZUnit.

Galasa.

IBM Z Virtual Test Platform.

Frameworks internos.

Tudo isso reduz riscos.


Integração Contínua

O velho fluxo:

sexta-feira

↓

deploy

↓

rezar

Foi substituído por:

Commit

↓

Pipeline

↓

Testes

↓

Deploy

Muito menos adrenalina.


Easter Egg nº 1

Você sabia?

O conceito de Sprint lembra muito os ciclos usados pela NASA durante o Projeto Apollo.

Os engenheiros entregavam pequenas evoluções sucessivas em vez de esperar a conclusão de todo o sistema.

Embora o Scrum moderno tenha outra origem, essa abordagem iterativa já aparecia em grandes projetos décadas antes.


Easter Egg nº 2

O próprio JES2 já trabalha em filas priorizadas.

Jobs possuem classes.

Prioridades.

Filas.

Dependências.

Curiosamente...

Muito parecido com um Backlog.


Easter Egg nº 3

O famoso ciclo

Editar

↓

Compile

↓

Execute

↓

Corrija

Existe desde os primeiros compiladores FORTRAN dos anos 1950.

Agile apenas expandiu essa filosofia para toda a organização.


Curiosidade

O maior Sprint do mundo provavelmente acontece diariamente.

Milhões de transações bancárias.

Bilhões de SQLs.

Milhares de Jobs.

Tudo funcionando continuamente.

O cliente nem percebe.


Dicas do Mestre Bellacosa

Nunca comece programando.

Leia a User Story.

Entenda o problema.


Converse com o usuário.

Cinco minutos de conversa economizam cinco dias de retrabalho.


Faça pequenas alterações.

Grandes mudanças geram grandes ABENDs.


Compile frequentemente.

Esperar três dias para compilar é receita para desastre.


Automatize tudo.

Quanto menos trabalho manual...

Menos erro humano.


Faça Code Review.

Quatro olhos encontram erros que dois ignoram.


Conheça o fluxo inteiro.

Não seja apenas "o programador COBOL".

Entenda:

JCL.

Db2.

MQ.

CICS.

IMS.

RACF.

SMF.

JES2.

Quanto maior sua visão...

Maior seu valor.


Perigos do Agile

Daily infinita

Se durar uma hora...

Não é Daily.


Sprint sem objetivo

"Vamos fazer algumas tarefas."

Isso não é Sprint.


Product Owner ausente

Sem prioridades...

Tudo vira prioridade.


Backlog gigante

Cinco mil histórias.

Ninguém consegue administrar isso.


Dívida técnica

"Depois corrigimos."

Depois nunca chega.


Falta de testes

Agile sem testes automatizados vira loteria.


Deploy manual

Copiar Load Module na mão em pleno século XXI aumenta o risco operacional.


Mudanças durante o Sprint

Se tudo muda todos os dias...

Nada termina.


Vantagens

✔ Feedback constante.

✔ Menor risco.

✔ Cliente participa.

✔ Correções rápidas.

✔ Maior qualidade.

✔ Melhor previsibilidade.

✔ Integração entre equipes.

✔ Evolução contínua.

✔ Entregas frequentes.

✔ Melhor moral da equipe.


Desvantagens

Também existem.

Nem tudo são flores.

Agile pode sofrer quando:

  • a organização não dá autonomia ao time;

  • o Product Owner não consegue priorizar;

  • a equipe é constantemente interrompida por demandas urgentes;

  • a documentação é negligenciada em nome da velocidade;

  • há dependências fortes de sistemas legados sem planejamento adequado.

Além disso, ambientes regulados — comuns no setor financeiro — exigem controles formais de auditoria, segregação de funções e aprovação de mudanças. O desafio não é abandonar essas práticas, mas integrá-las ao fluxo ágil com automação, pipelines e governança.


O Caminho do Programador COBOL Padawan

No universo Bellacosa Mainframe, Agile não é um modismo nem uma desculpa para fazer reuniões. É uma maneira de reduzir riscos, aprender continuamente e entregar valor sem comprometer a estabilidade do IBM Z.

O Padawan que domina apenas COBOL escreve bons programas. O que compreende Agile, DevOps, testes automatizados, observabilidade, integração contínua, arquitetura e o ciclo de vida completo do software torna-se um profissional capaz de dialogar com desenvolvedores distribuídos, arquitetos, analistas de negócio, DBAs, administradores CICS e equipes de operações.

No fim da jornada, a maior lição é simples: o verdadeiro poder do Agile não está nos Sprints, nas Dailies ou nos quadros Kanban. Está na capacidade de transformar conhecimento em melhoria contínua. É exatamente isso que mantém o IBM Z relevante há mais de seis décadas: evoluir constantemente sem abrir mão da confiabilidade.

Como diria um velho Mestre Jedi do datacenter:

"O código pode ser legado. A forma de pensar nunca deve ser."

 

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