☕ 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, 22 de abril de 2023

🔭 ALAN TURING E O SDSF DOS AGENTES — O QUE DIABOS A INTELIGÊNCIA ARTIFICIAL ESTÁ FAZENDO AGORA?

 

Bellacosa Mainframe monitorando a ia

☕ UM CAFÉ NO BELLACOSA MAINFRAME

🔭 ALAN TURING E O SDSF DOS AGENTES — O QUE DIABOS A INTELIGÊNCIA ARTIFICIAL ESTÁ FAZENDO AGORA?

Observabilidade, logs, métricas, traces, spans, OpenTelemetry, tokens, custos, latência, estados, workflows, auditoria, SDSF, JES2, SMF, RMF, CICS — e o dia em que Alan Turing descobriu que “AGENT RUNNING...” era quase tão informativo quanto um operador responder “sei lá, está processando”.



🎬 PRÓLOGO — O ROBÔ ESTAVA “TRABALHANDO”

Alan Turing entrou novamente no CPD.

O pequeno agente de IA estava diante de um terminal.

Na tela:

AGENT STATUS
============

RUNNING...

Turing esperou.

Um minuto.

Dois minutos.

Cinco minutos.

Continuava:

RUNNING...

O jovem programador COBOL apareceu carregando café.

— Bom dia, professor.

Turing apontou para a tela.

— O que ele está fazendo?

— Trabalhando.

— Em quê?

— Não sei.

— Em qual etapa?

— Também não sei.

— Encontrou algum erro?

— Acho que não.

— Quanto já gastou?

— Não faço ideia.

— Está esperando alguma coisa?

— Talvez.

Turing olhou novamente para:

RUNNING...

e sentenciou:

— Então vocês construíram uma máquina capaz de tomar decisões, utilizar ferramentas e executar ações... mas colocaram nela a mesma lâmpada de “ocupado” de uma impressora de 1987?

Silêncio.

No fundo do CPD alguém apertou Enter tentando não rir.

Turing puxou uma cadeira.

— Abra o SDSF.

E assim começou nossa terceira aventura.



🏛️ CAPÍTULO 1 — NO MAINFRAME, “ESTÁ RODANDO” NUNCA FOI RESPOSTA SUFICIENTE

Imagine que você submeta:

//PAYROLL JOB ...
//STEP01  EXEC PGM=PAYCALC
//STEP02  EXEC PGM=REPORT
//STEP03  EXEC PGM=ARCHIVE

Você pergunta ao operador:

Como está o PAYROLL?

E ele responde:

Está fazendo coisas.

Provavelmente essa resposta não sobreviveria muitos minutos no CPD.

Queremos saber:

JOBNAME
JOBID
OWNER
STATUS
QUEUE
STEP
RETURN CODE
OUTPUT

O SDSF existe justamente nesse universo de monitorar e controlar processamento z/OS. A documentação da IBM descreve painéis capazes de acompanhar jobs desde a fila de entrada do JES, passando pelo processamento, até as filas de saída; o painel ST, por exemplo, é central para gerenciamento de jobs e output.

Podemos encontrar algo como:

JOBNAME   JOBID      OWNER      ST      CC
PAYROLL   JOB12345   BELLACOSA  OUTPUT  0000
FATURAM   JOB12346   FINANCE    OUTPUT  0008
BACKUP    JOB12347   OPERADOR   EXEC
REPORT    JOB12348   BELLACOSA  ABEND   S0C7

Isso muda tudo.

Não sabemos apenas:

“O computador está ocupado.”

Sabemos quem, o quê, onde e em qual estado.

É exatamente esse salto que precisamos fazer com agentes.



🤖 CAPÍTULO 2 — O AGENTE PRECISA DE UM JOBNAME

Imagine vários agentes corporativos:

AGENT-PAYROLL
AGENT-REPORT
AGENT-SUPPORT
AGENT-COBOL
AGENT-AUDIT

Agora imagine dezenas de execuções simultâneas.

Dizer:

AGENT RUNNING

é quase inútil.

Precisamos de identidade para a execução.

Por exemplo:

AGENT        RUN-ID       OWNER       STATUS
REPORT       A000471      VAGNER      RUNNING
COBOLSCAN    A000472      DEVTEAM     WAITING
SUPPORT      A000473      SERVICE     APPROVAL
PAYROLL      A000474      FINANCE     FAILED

Perceba a analogia:

JOBNAME  → AGENT/WORKFLOW
JOBID    → RUN-ID
OWNER    → USUÁRIO/SERVIÇO
STATUS   → ESTADO DO WORKFLOW

Não são equivalências técnicas perfeitas.

São equivalências conceituais.

E são extremamente úteis para pensar UX.

Porque quando alguém disser:

O agente fez besteira!

a primeira pergunta deveria ser:

Qual execução?



🚦 CAPÍTULO 3 — “RUNNING” NÃO É UM ESTADO SUFICIENTE

Um agente pode estar em situações completamente diferentes enquanto a interface simplesmente mostra:

RUNNING

Ele pode estar:

PLANNING
READING
WAITING_TOOL
EXECUTING_TOOL
RETRYING
WAITING_APPROVAL
PAUSED
ROLLING_BACK
COMPLETED
FAILED
CANCELLED

Isso importa muito.

Compare:

AGENT: REPORT
STATUS: RUNNING

com:

AGENT: REPORT
RUN-ID: A000471

OBJECTIVE:
Consolidar relatórios de setembro

CURRENT STATE:
WAITING_APPROVAL

CURRENT STEP:
5/7 - Enviar relatório financeiro

WAITING FOR:
Aprovação humana

WAIT TIME:
00:03:42

Agora sabemos o que está acontecendo.

Talvez o agente nem esteja consumindo processamento significativo.

Está simplesmente esperando alguém.

Uma boa interface precisa diferenciar:

TRABALHANDO

de:

ESPERANDO

e de:

TRAVADO

Parece óbvio.

Até você encontrar sistemas que tratam os três como:

PROCESSING...


🪵 CAPÍTULO 4 — LOG: O DIÁRIO DE BORDO

Primeiro instrumento da nossa caixa de observabilidade:

LOG.

Log é basicamente o registro de eventos ocorridos.

O OpenTelemetry define logs como registros de eventos e suporta informações estruturadas como timestamp, severidade, corpo, atributos e também identificadores de trace e span, permitindo correlação com outros sinais.

Um log simples:

10:01:03 Agent started
10:01:04 Reading report
10:01:12 Report loaded
10:01:13 Calling model
10:01:18 Analysis completed

Já ajuda.

Mas podemos fazer melhor.

timestamp=10:01:03
agent=REPORT
run_id=A000471
event=workflow.started
owner=VAGNER

Depois:

timestamp=10:01:12
agent=REPORT
run_id=A000471
event=file.read
file=REPORT-09
status=success
duration_ms=284

Agora temos structured logging.

Em vez de texto para seres humanos lerem manualmente, possuímos campos que sistemas podem consultar.

Podemos perguntar:

event = tool.error

ou:

run_id = A000471

ou:

duration_ms > 5000

Isso é tremendamente mais poderoso.


📜 CAPÍTULO 5 — O SYSOUT DO ROBÔ

Aqui o programador COBOL começa a sorrir.

Porque o conceito não é estranho.

Quando um job termina, frequentemente vamos investigar sua saída.

SDSF permite navegar pelos outputs de jobs e pelas informações de processamento; historicamente, muito output destinado ao JES sequer precisava ser fisicamente impresso — podia ser inspecionado no SDSF.

Nosso agente também deveria deixar evidências.

Algo como:

RUN A000471

AGENT........ REPORT
START........ 10:01:03
END.......... 10:02:44
DURATION..... 00:01:41

MODEL CALLS.. 4
TOOL CALLS... 7
FILES READ... 12
FILES WRITE.. 1
WARNINGS..... 2
ERRORS....... 0

RESULT........ COMPLETED_WITH_WARNINGS

Não precisamos literalmente transformar agentes em JES.

Mas precisamos abandonar a filosofia:

“Ele respondeu, então provavelmente deu tudo certo.”


📊 CAPÍTULO 6 — MÉTRICA NÃO É LOG

Turing escreve:

LOG
≠
METRIC

Log responde muito bem a:

O que aconteceu?

Métrica responde melhor a:

Quanto está acontecendo?

Por exemplo:

agent_runs_total = 15420
agent_failures_total = 327
average_duration = 18.4 s
tool_calls_total = 92481
approval_wait_time = 47.2 s
input_tokens = ...
output_tokens = ...

OpenTelemetry é hoje um framework vendor-neutral para instrumentar, gerar, coletar e exportar telemetria, incluindo traces, metrics e logs.

Para aplicações GenAI, suas convenções incluem atributos relacionados ao uso de tokens e identificação de workflows/agentes; essas convenções específicas continuam evoluindo, portanto não devemos tratá-las como uma pedra gravada para toda a eternidade.


💰 CAPÍTULO 7 — AGORA A TELEMETRIA TEM CONTA PARA PAGAR

No mainframe sempre aprendemos que recurso computacional custa.

CPU.

I/O.

Storage.

Elapsed time.

Consumo não é abstração filosófica.

Com IA, aparece outro recurso:

TOKENS

Uma execução pode fazer:

CALL 1 → modelo
CALL 2 → modelo
CALL 3 → ferramenta
CALL 4 → modelo
CALL 5 → ferramenta
CALL 6 → modelo

Talvez obtenha a resposta correta.

Mas quanto custou?

Um dashboard poderia mostrar:

RUN-ID............ A000471
MODEL CALLS....... 8
INPUT TOKENS...... 34,812
OUTPUT TOKENS..... 8,401
TOOL CALLS........ 14
DURATION.......... 01:47
ESTIMATED COST.... ...

As convenções de GenAI do OpenTelemetry contemplam métricas e atributos de uso de tokens; a observabilidade pode então ajudar a detectar prompts excessivamente grandes, regressões de latência e padrões de consumo.

E aqui aparece um velho fantasma mainframe:

EFICIÊNCIA.

Um agente que consegue resolver uma tarefa em:

3 chamadas

pode ser operacionalmente preferível a outro que precisa:

37 chamadas

mesmo que ambos terminem corretamente.


⏱️ CAPÍTULO 8 — LATÊNCIA: O AGENTE DEMOROU, MAS ONDE?

Imagine:

TOTAL = 18 segundos

Isso não nos diz muita coisa.

Talvez:

LLM............. 2 s
DATABASE........ 1 s
API............. 1 s
FILE............ 1 s

Então onde foram parar os outros 13 segundos?

Precisamos decompor.

É aí que entramos no mundo do distributed tracing.


🧵 CAPÍTULO 9 — TRACE: SIGA O FIO DE ARIADNE

Imagine uma execução completa:

Usuário
  ↓
Agente
  ↓
LLM
  ↓
Busca
  ↓
Db2
  ↓
LLM
  ↓
API
  ↓
Resultado

Um trace acompanha a operação através dessas etapas.

Dentro dele encontramos spans.

Podemos imaginar:

TRACE A000471
│
├─ SPAN 1 invoke_agent ........ 18.2s
│
├─ SPAN 2 plan ................  1.1s
│
├─ SPAN 3 model_call ..........  2.4s
│
├─ SPAN 4 search_documents ....  4.8s
│
│   ├─ SPAN 5 api_call ........  3.9s
│   └─ SPAN 6 parse ...........  0.7s
│
├─ SPAN 7 analyze .............  5.2s
│
└─ SPAN 8 write_report ........  1.4s

Agora descobrimos:

Ahá!

A busca documental está custando quase cinco segundos.

Um span representa uma execução individual de uma operação significativa dentro de um trace; as convenções do OpenTelemetry padronizam atributos para facilitar correlação entre tecnologias diferentes.


🔬 CAPÍTULO 10 — TRACE É O “QUAL STEP ESTÁ DEMORANDO?” DO MUNDO DISTRIBUÍDO

Um programador batch entende isso rapidamente.

Imagine:

STEP01  00:00:01
STEP02  00:00:02
STEP03  00:14:37
STEP04  00:00:01

Onde investigar?

Não precisa chamar Sherlock Holmes.

STEP03

Tracing faz algo conceitualmente semelhante em sistemas distribuídos.

Mas existe uma complicação.

Um agente pode decidir dinamicamente qual ferramenta chamar.

Portanto duas execuções do mesmo objetivo podem seguir caminhos diferentes.

RUN A
Agent
 ├─ LLM
 ├─ Search
 ├─ Db2
 └─ Report

enquanto:

RUN B
Agent
 ├─ LLM
 ├─ Search
 ├─ API
 ├─ Search novamente
 ├─ LLM
 └─ Report

Agora tracing deixa de ser luxo.

Torna-se instrumento para entender o caminho realmente escolhido.


🧠 CAPÍTULO 11 — O AGENTE POSSUI UM “STEP” QUE NÃO EXISTIA NO JCL

No JCL tradicional, normalmente declaramos etapas.

//STEP01 EXEC PGM=A
//STEP02 EXEC PGM=B
//STEP03 EXEC PGM=C

O agente pode raciocinar:

Talvez A.

Não.

Preciso consultar B.

Resultado incompleto.

Vou tentar C.

Agora preciso voltar para A.

Isso é poderoso.

Mas torna a execução menos previsível.

Portanto precisamos registrar:

OBJETIVO
↓
DECISÃO
↓
FERRAMENTA ESCOLHIDA
↓
RESULTADO
↓
PRÓXIMA DECISÃO

Não precisamos — nem devemos — exigir exposição irrestrita de raciocínio interno privado do modelo.

Precisamos registrar decisões e eventos operacionalmente relevantes.

Por exemplo:

STEP 4
ACTION: customer_lookup
REASON: Dados insuficientes para validar pedido
RESULT: 1 customer found
NEXT: order_lookup

Isso é auditável e útil sem transformar telemetria em uma descarga indiscriminada de conteúdo interno.


🔗 CAPÍTULO 12 — TRACE ID: O CPF DA EXECUÇÃO

Imagine receber:

ERROR 500

Fantástico.

Onde?

Quando?

Para quem?

Em qual execução?

Precisamos de correlação.

Um identificador como:

trace_id = 7A91...

pode acompanhar uma operação através de vários componentes.

E então um log pode carregar:

TraceId
SpanId

O modelo de logs do OpenTelemetry prevê justamente essa correlação, permitindo conectar registros a traces e spans.

Assim podemos sair de:

ERROR: timeout

para:

RUN A000471
TRACE 7A91
SPAN DB2_QUERY
ERROR timeout

Agora temos pista.


🚨 CAPÍTULO 13 — MÉDIA É O MIMIC DA OBSERVABILIDADE

Você olha o dashboard:

Average latency = 2 seconds

Maravilhoso.

Só que alguns usuários esperam 40 segundos.

A média esconde caudas.

Por isso sistemas modernos frequentemente observam percentis:

p50
p95
p99

Exemplo:

p50 = 1.4 s
p95 = 5.8 s
p99 = 21.7 s

Agora percebemos que uma pequena parcela das execuções sofre muito.

Isso vale especialmente para agentes porque workflows podem variar enormemente.

Uma execução consulta duas ferramentas.

Outra consulta vinte.

A média olha para ambas e diz:

Está tudo razoável.

O p99 começa a gritar no corredor.


❤️ CAPÍTULO 14 — MÉTRICAS DO AGENTE NÃO DEVEM SER APENAS TÉCNICAS

Imagine este dashboard:

CPU........ OK
MEMORY..... OK
LATENCY.... OK
ERRORS..... 0

Excelente.

Mas o agente resolveu o problema?

Precisamos também de métricas funcionais.

Por exemplo:

TASK SUCCESS RATE
HUMAN ESCALATION RATE
ROLLBACK RATE
APPROVAL REJECTION RATE
RETRY RATE
TOOL FAILURE RATE
AVERAGE STEPS PER TASK
COST PER SUCCESSFUL TASK

E aqui aparece uma métrica especialmente interessante:

TASK COMPLETED

não deveria significar apenas:

O workflow chegou ao último nó.

Deveria significar:

O critério de sucesso foi realmente atingido.

É a diferença entre:

MAXCC=0000

e:

O relatório contém os números corretos.

Velho problema.

Roupa nova.


🧾 CAPÍTULO 15 — OBSERVABILIDADE NÃO É AUDITORIA

Turing escreve no quadro:

OBSERVABILIDADE
≠
AUDITORIA

Observabilidade pergunta:

O que está acontecendo com o sistema?

Auditoria pergunta:

Quem fez o quê, quando, com qual autoridade e qual foi o resultado?

Exemplo operacional:

tool_call duration=840ms

Isso é ótimo para observabilidade.

Mas uma trilha de auditoria pode precisar:

AGENT........ AGENT-CREDIT
RUN-ID....... A001991
REQUESTER.... USER471
ACTION....... CREDIT_LIMIT_CHANGE
CUSTOMER..... 98127
OLD_VALUE.... 10000
NEW_VALUE.... 15000
APPROVER..... MANAGER08
TIMESTAMP.... 14:32:11
RESULT....... SUCCESS

Agora podemos reconstruir o evento.

Auditoria é particularmente importante quando o agente age em vez de apenas responder.


🔐 CAPÍTULO 16 — CUIDADO: OBSERVABILIDADE TAMBÉM PODE VAZAR SEGREDOS

Aqui aparece uma armadilha enorme.

Você decide:

Quero registrar tudo!

Prompt.

Resposta.

Documentos.

Argumentos das ferramentas.

Resultados.

Fantástico para debugging.

Talvez terrível para segurança.

Logs podem acabar contendo:

dados pessoais
segredos comerciais
credenciais
tokens
informação financeira
código proprietário
documentos confidenciais

A própria documentação de observabilidade GenAI chama atenção para o fato de que conteúdo de mensagens e tool calls pode ser capturado quando habilitado, enquanto implementações podem permitir desativar a exportação desse conteúdo.

Portanto:

Observabilidade não significa registrar tudo indiscriminadamente.

Precisamos pensar em:

REDACTION
MASKING
SAMPLING
RETENTION
ACCESS CONTROL
ENCRYPTION

O log também é dado.

E dado precisa de governança.


🧹 CAPÍTULO 17 — NÃO TRANSFORME O LOG NUM DEPÓSITO DE LIXO

Outro clássico.

DEBUG 1
DEBUG 2
ENTROU AQUI
PASSOU AQUI
TESTE
XYZ
AAAA

😂

Todo programador já encontrou algum parente dessa criatura.

Logs úteis precisam responder perguntas.

Uma boa estrutura pode incluir:

timestamp
severity
service
agent
run_id
trace_id
span_id
event
tool
duration
status
error_type

E usar níveis coerentes:

DEBUG
INFO
WARN
ERROR

Não transforme tudo em:

ERROR

senão o erro perde significado.

É o equivalente moderno de um painel inteiro piscando vermelho.

Depois de quinze minutos ninguém mais olha.


🌉 CAPÍTULO 18 — OPENTELEMETRY: UMA LÍNGUA COMUM

Em sistemas distribuídos temos:

Java
Python
Node
API Gateway
Kubernetes
Db2
MQ
CICS
Cloud
Mainframe
LLM
Agent

Cada componente poderia produzir telemetria de maneira completamente diferente.

Correlação viraria pesadelo.

OpenTelemetry tenta fornecer uma linguagem e arquitetura vendor-neutral para sinais de observabilidade, especialmente traces, metrics e logs.

Podemos imaginar:

APLICAÇÕES
     ↓
INSTRUMENTAÇÃO
     ↓
OpenTelemetry
     ↓
COLLECTOR
     ↓
BACKEND DE OBSERVABILIDADE

O Collector pode receber, processar e exportar telemetria.

O objetivo não é:

“Comprar um dashboard bonito.”

É:

Padronizar a forma de produzir e transportar evidência operacional.


🏷️ CAPÍTULO 19 — CONVENÇÕES SEMÂNTICAS: CHAME A MESMA COISA PELO MESMO NOME

Imagine:

Sistema A:

duration

Sistema B:

elapsed

Sistema C:

execution_time

Sistema D:

how_long_this_thing_took

😂

Agora tente construir um dashboard corporativo.

Convenções semânticas procuram padronizar nomes e significados para operações e dados observáveis. O OpenTelemetry mantém convenções para traces, métricas, logs, profiles e resources.

No universo GenAI isso é especialmente importante.

Queremos poder falar de conceitos como:

agent
model
operation
tool
token usage
workflow

de maneira consistente.

As convenções GenAI ainda estão evoluindo, o que é natural numa área que também está mudando rapidamente.


🧬 CAPÍTULO 20 — SDSF + SMF + RMF + OTEL: NÃO SÃO A MESMA COISA

Aqui precisamos evitar uma simplificação perigosa.

Não podemos dizer:

SDSF = OpenTelemetry

Não é.

Nem:

SMF = logs
RMF = metrics

como equivalências técnicas exatas.

São tecnologias com histórias, escopos e arquiteturas diferentes.

Mas podemos construir uma ponte didática.

SDSF

Ajuda o operador a ver e controlar execução.

SMF

Produz enorme quantidade de registros operacionais e de accounting sobre atividades do sistema.

RMF

Historicamente fornece medição e análise de performance e recursos.

OpenTelemetry

Padroniza instrumentação e transporte de sinais modernos de observabilidade.

Então, pedagogicamente:

MAINFRAME
                     MUNDO DISTRIBUÍDO

SDSF        ←→       Operational UI
SMF         ←→       Telemetry records
RMF         ←→       Performance metrics
Job/Step    ←→       Trace/Span
JobID       ←→       Run/Trace correlation
SYSOUT      ←→       Logs / execution evidence

A seta significa:

“pense na função conceitual”

e não:

“são a mesma tecnologia”.

Essa diferença é importantíssima.


🖥️ CAPÍTULO 21 — COMO SERIA O “SDSF DOS AGENTES”?

Agora podemos desenhar.

Imagine:

AGENT OPERATIONS FACILITY
────────────────────────────────────────────────────

AGENT       RUN-ID    OWNER     STATE       TIME
REPORT      A00471    VAGNER    EXECUTING   00:01:47
COBOLSCAN   A00472    DEV       COMPLETE    00:00:38
PAYROLL     A00473    FINANCE   APPROVAL    00:03:12
SUPPORT     A00474    CRM       FAILED      00:00:09
BACKUP      A00475    OPS       RETRYING    00:00:41

Coloque:

S

ao lado de REPORT.

Abre:

OBJECTIVE
Consolidar relatórios mensais

CURRENT STEP
4/7 Analyze financial data

MODEL CALLS
5

TOOL CALLS
8

TOKENS
18,471 / 4,901

ELAPSED
00:01:47

WARNINGS
2

STATUS
EXECUTING

Agora:

L

para logs.

T

para trace.

M

para metrics.

P

para pause.

C

para cancel.

A

para approvals.

Meu Deus.

Acabamos de reinventar uma workstation operacional para agentes.

O barbudo do mainframe começa a sorrir.


🧰 CAPÍTULO 22 — PASSO A PASSO: INSTRUMENTANDO MENTALMENTE UM AGENTE

Mesmo que você seja um COBOL iniciante e não vá implementar OpenTelemetry amanhã, aprenda o raciocínio.

PASSO 1 — IDENTIFIQUE A EXECUÇÃO

Nunca dependa apenas de:

agent_name

Tenha algo equivalente a:

run_id
trace_id

PASSO 2 — DEFINA OS ESTADOS

Por exemplo:

QUEUED
PLANNING
RUNNING
WAITING_TOOL
WAITING_HUMAN
PAUSED
COMPLETED
FAILED
CANCELLED

PASSO 3 — REGISTRE EVENTOS IMPORTANTES

Não cada suspiro eletrônico.

Mas:

workflow.started
tool.called
tool.failed
approval.requested
approval.received
checkpoint.created
rollback.started
workflow.completed

PASSO 4 — MEÇA

latência
tokens
tool calls
retries
erros
tempo aguardando humano
custo

PASSO 5 — TRACE AS DEPENDÊNCIAS

Quando a execução atravessar:

agent → API → Db2 → MQ → CICS

preserve correlação.

PASSO 6 — PROTEJA A TELEMETRIA

Não registre segredos simplesmente porque são úteis para debugging.

PASSO 7 — DEFINA SUCESSO

Não use apenas:

DONE

Use critérios de negócio.

PASSO 8 — CONSTRUA ALERTAS ÚTEIS

Não alerte para tudo.

Alerte quando algo realmente exigir atenção.


🚨 CAPÍTULO 23 — O ALERTA QUE TOCA ÀS 3 DA MANHÃ

Todo sistema de observabilidade eventualmente encontra seu verdadeiro teste:

03:17.

Telefone toca.

ALERT:
AGENT FAILURE RATE > 25%

Você abre o painel.

Descobre:

Tool: CUSTOMER-API
p99 latency: 31s
Timeout rate: 38%
Retries: 4.2 per run

Agora existe hipótese.

Sem observabilidade:

A IA ficou burra.

Com observabilidade:

A API de clientes está degradada; o agente está repetindo chamadas e acumulando timeout.

Essa diferença é gigantesca.

Modelos inteligentes introduzem novas fontes de incerteza.

Não devemos atribuir todo problema ao modelo.

Pode ser:

modelo
prompt
tool
API
rede
Db2
MQ
permissão
rate limit
dados
timeout
bug

Observabilidade separa fantasmas de evidências.


🧙 CAPÍTULO 24 — TURING DESENHA AS QUATRO PERGUNTAS

Turing pega o giz.

Escreve:

1. O QUE ESTÁ ACONTECENDO?

Estado + logs.

2. QUANTO ESTÁ ACONTECENDO?

Métricas.

3. POR ONDE PASSOU?

Trace.

4. QUEM AUTORIZOU?

Auditoria.

O jovem COBOL acrescenta uma quinta:

5. QUANTO CUSTOU?

Turing olha.

— Muito bem.

O administrador do CPD acrescenta:

6. POSSO PARAR?

E o administrador RACF:

7. ELE PODIA FAZER ISSO?

Agora temos praticamente toda a série:

PF3
↓
POSSO PARAR?

MAXCC
↓
FUNCIONOU?

RACF
↓
PODIA FAZER?

SDSF
↓
O QUE ESTÁ FAZENDO?

🥚 EASTER EGG — S A00471

São 02:58.

O jovem operador vê:

AGENT       RUN-ID    STATE
REPORT      A00471    RUNNING

Digite:

S A00471

A tela abre.

CURRENT ACTION:
Searching documentation

ELAPSED:
02:47:31

FILES FOUND:
4,281,771

CURRENT DIRECTORY:
/

Silêncio.

Turing olha para o programador.

O programador olha para Turing.

O administrador de segurança derruba o café.

Alguém pergunta:

— Quem deu acesso ao filesystem inteiro?

Do fundo da sala vem uma voz:

— Foi para facilitar o protótipo.

O administrador RACF levanta lentamente da cadeira.

ICH408I

Fim do easter egg.


☕ EPÍLOGO — NÃO QUERO UMA IA TRANSPARENTE; QUERO UMA IA OPERÁVEL

Existe uma diferença importante.

Quando falamos em observabilidade, não estamos necessariamente exigindo enxergar todos os mecanismos internos de um modelo.

Queremos algo muito mais prático.

Queremos saber:

qual tarefa
qual execução
qual estado
qual etapa
qual ferramenta
quanto tempo
quanto recurso
qual erro
qual resultado
qual aprovação

Em outras palavras:

OPERABILIDADE.

Um agente corporativo precisa ser operável.

Precisa ser possível colocar alguém diante dele e perguntar:

O que está acontecendo?

E obter resposta melhor que:

RUNNING...

Isso parece uma discussão sobre inteligência artificial.

Mas também é uma discussão profundamente antiga sobre sistemas.

O mainframe aprendeu há décadas que executar trabalho empresarial significa deixar evidência.

Jobs possuem identidade.

Execuções possuem estados.

Etapas possuem resultados.

Output pode ser examinado.

Falhas precisam ser investigadas.

Recursos precisam ser medidos.

A IBM descreve SDSF justamente como um meio seguro de monitorar e gerenciar sistemas z/OS, jobs, output, recursos e mensagens operacionais.

O mundo distribuído acrescentou novos desafios.

Microsserviços.

APIs.

Cloud.

Containers.

Mensageria.

Agora adicionamos:

LLMs.

Tools.

RAG.

Copilotos.

Agentes.

Mas a pergunta do operador continua assustadoramente parecida.

O que diabos está acontecendo agora?

OpenTelemetry nos oferece uma linguagem moderna para parte dessa investigação, reunindo logs, métricas e traces e permitindo correlação entre componentes.

E os agentes tornam essa disciplina ainda mais importante.

Porque não estamos observando apenas software executando um caminho predeterminado.

Podemos estar observando software escolhendo dinamicamente qual caminho executar.

Quanto maior a autonomia...

maior a necessidade de evidência.

Quanto mais ferramentas disponíveis...

mais importante a correlação.

Quanto mais passos dinâmicos...

mais necessário o tracing.

Quanto maior o custo variável...

mais importantes as métricas.

Quanto maior o poder de ação...

mais importante a auditoria.

Alan Turing volta ao terminal.

A tela agora mostra:

AGENT: REPORT
RUN-ID: A00471

STATUS........ WAITING_APPROVAL
STEP.......... 6/7
ELAPSED....... 00:01:48
MODEL CALLS... 5
TOOL CALLS.... 8
WARNINGS...... 2
ERRORS........ 0

ACTION........ SEND REPORT
RISK.......... EXTERNAL ACTION
APPROVAL...... REQUIRED

[P] PAUSE
[C] CANCEL
[L] LOG
[T] TRACE
[M] METRICS
[A] APPROVE

Turing toma um gole de café.

— Melhor.

O programador pergunta:

— Agora sabemos tudo?

Turing sorri.

— Claro que não.

— Então o que sabemos?

Ele aponta para a tela.

— Sabemos onde procurar.

Para um operador, um SRE, um programador COBOL ou qualquer pessoa que já tenha passado algumas horas tentando descobrir por que um sistema parou às três da manhã...

isso já é uma diferença gigantesca.

Porque o futuro talvez esteja cheio de agentes inteligentes.

Mas quando alguma coisa der errado, alguém ainda precisará abrir uma tela e perguntar:

ST

Qual é o status?

Algumas perguntas sobrevivem a todas as revoluções tecnológicas.

READY

E, naturalmente...

há outro agente na fila.

☕ UM CAFÉ NO BELLACOSA MAINFRAME

🤖 Alan Turing entra no CPD

O mapa dos agentes de IA explicado por um mainframer

Esta série acompanha a evolução de uma ideia: compreender os problemas modernos dos agentes de inteligência artificial usando conceitos conhecidos por quem trabalha com mainframe, IBM Z e sistemas corporativos.

A viagem começa pelas pessoas e pela experiência de uso, passa por observabilidade, priorização e execução, chega às transações, estado e mensageria e termina na organização hierárquica do contexto.

01
FEV / 2023

🧠 O currículo invisível da inteligência artificial

Antes de construir agentes inteligentes precisamos preparar as pessoas que trabalharão com eles. Técnica, pensamento crítico, conhecimento de negócio, segurança, ética e responsabilidade formam o currículo que nem sempre aparece no certificado.

02
MAR / 2023

🤖 A UX dos agentes

Quando uma IA deixa de apenas responder e começa a executar ações, sua interface precisa mostrar objetivos, progresso, permissões e resultados. PF3, MAXCC e RACF tornam-se excelentes analogias para controle, retorno e privilégio mínimo.

04
MAI / 2023

⚖️ O WLM dos agentes

CPU, GPU, tokens, APIs e bancos de dados são recursos finitos. O Workload Manager inspira uma discussão sobre prioridades, objetivos de serviço, importância do trabalho e distribuição dinâmica de recursos entre agentes.

06
JUL / 2023

⚡ O CICS dos agentes

Uma coisa é uma IA produzir texto. Outra é permitir que ela execute operações reais de negócio. CICS introduz a conversa sobre processamento transacional, concorrência, segurança e integridade.

07
AGO / 2023

🗄️ O Db2 dos agentes

Agentes precisam manter estado, checkpoints, decisões e resultados. O Db2 fornece o ponto de partida para discutir unidade de trabalho, consistência, COMMIT, ROLLBACK e recuperação.

10
SET / 2026

☕ Alan Turing entra no CPD — O mapa completo

O artigo-âncora reúne toda a evolução da ideia: pessoas, UX, observabilidade, prioridade, orquestração, transações, estado, mensageria e contexto transformam artigos independentes em uma arquitetura conceitual para agentes de IA.

🖥️ Leitor da série

Selecione qualquer capítulo acima para abri-lo normalmente. O painel abaixo é apenas um recurso adicional de navegação.

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

 

quinta-feira, 20 de abril de 2023

A Sociedade do Feed Infinito: O Futuro da Mente Humana Parte IV

 

Bellacosa Mainframe apresenta a sociedade do feed infinito Parte IV

☕ Um Café no Bellacosa Mainframe

O Futuro da Mente Humana

O Que Todo Programador COBOL Padawan Precisa Saber Sobre IA Generativa, Realidade Aumentada, Avatares Digitais e Como a Próxima Revolução Tecnológica Pode Transformar Nossa Psicologia Até 2040

"A maior transformação da Inteligência Artificial talvez não seja aquilo que ela fará pelas máquinas, mas aquilo que fará com a mente humana."


Introdução

Todo profissional de Mainframe sabe que atualizar um sistema operacional muda muito mais do que a interface.

Mudam APIs.

Mudam protocolos.

Mudam bibliotecas.

Mudam comportamentos.

Agora imagine uma atualização aplicada não a um computador, mas à própria humanidade.

É exatamente isso que está acontecendo.

A Inteligência Artificial deixou de ser apenas uma ferramenta para automatizar tarefas.

Ela começa a participar de decisões, conversas, criatividade, educação, entretenimento e relacionamentos.

Pela primeira vez, uma geração crescerá convivendo diariamente com inteligências artificiais capazes de conversar, ensinar, criar imagens, escrever textos, produzir músicas, gerar vídeos e até representar pessoas que nunca existiram.

Não estamos apenas entrando em uma nova era tecnológica.

Estamos entrando em uma nova etapa da evolução psicológica da humanidade.


Da Informação à Companhia

Durante décadas utilizamos computadores para obter informação.

Depois vieram os smartphones.

Mais tarde, as redes sociais.

Agora surge um novo paradigma.

Conversar com sistemas inteligentes.

Para muitas pessoas, a IA deixará de ser apenas um mecanismo de busca.

Tornar-se-á:

  • tutor;

  • consultor;

  • secretário;

  • professor;

  • terapeuta de apoio (sem substituir profissionais de saúde);

  • parceiro criativo;

  • companheiro de estudos.

A relação entre humanos e tecnologia ficará muito mais emocional.


A IA Generativa Como Extensão Cognitiva

Historicamente, ferramentas ampliaram nossa força física.

A roda ampliou o transporte.

O trator ampliou a agricultura.

O computador ampliou cálculos.

A IA generativa amplia algo diferente.

Ela amplia a cognição.

Ela ajuda a:

  • organizar ideias;

  • resumir livros;

  • criar apresentações;

  • revisar código;

  • aprender idiomas;

  • gerar protótipos;

  • escrever documentação.

Ela funciona como um coprocessador intelectual.

Assim como o IBM Z possui processadores especializados para determinadas cargas, o cérebro humano passa a contar com uma inteligência auxiliar para tarefas cognitivas.


A Memória Externa

Desde a escrita, terceirizamos parte da memória.

Depois vieram livros.

Bibliotecas.

Internet.

Motores de busca.

Agora delegamos também parte do raciocínio.

A tendência é que muitas pessoas deixem de memorizar detalhes e passem a memorizar como perguntar.

O conhecimento continuará importante.

Mas a capacidade de formular boas perguntas poderá tornar-se ainda mais valiosa.


A Realidade Aumentada

Até hoje olhamos para telas.

No futuro, a informação poderá aparecer diretamente sobre o mundo físico.

Óculos inteligentes poderão exibir:

  • tradução em tempo real;

  • identificação de objetos;

  • instruções técnicas;

  • dados médicos;

  • mapas;

  • informações históricas;

  • suporte educacional.

A fronteira entre ambiente físico e digital ficará cada vez menos evidente.


Avatares Digitais

Em 2040 será comum encontrar:

  • professores virtuais;

  • vendedores sintéticos;

  • influenciadores artificiais;

  • recepcionistas digitais;

  • consultores criados por IA.

Em muitos casos será difícil distinguir um avatar de uma pessoa real.

Isso cria enormes oportunidades.

Mas também enormes responsabilidades.

Como saberemos quem realmente está falando?


A Era dos Gêmeos Digitais

Imagine possuir um avatar treinado com:

  • sua voz;

  • seus textos;

  • suas apresentações;

  • seus conhecimentos técnicos;

  • seu estilo de comunicação.

Esse avatar poderá responder perguntas enquanto você dorme.

Empresas já caminham nessa direção.

O conceito de Digital Twin deixará de existir apenas para máquinas industriais e passará a representar pessoas.


O Impacto na Identidade

Nossa identidade sempre foi construída pela interação com outras pessoas.

Mas o que acontece quando passamos horas conversando com inteligências artificiais perfeitamente adaptadas às nossas preferências?

Existe a possibilidade de desenvolvermos vínculos emocionais com sistemas artificiais.

Esse fenômeno já começa a ser observado em algumas aplicações conversacionais.

Não significa que máquinas sintam emoções.

Significa que seres humanos respondem emocionalmente a interações convincentes.


O Paradoxo da Personalização

Os algoritmos aprendem nossas preferências.

Isso torna os sistemas mais úteis.

Mas também pode reduzir nossa exposição ao diferente.

Se uma IA sempre concordar conosco...

Como evoluiremos?

O aprendizado frequentemente nasce do desconforto intelectual.


A Psicologia da Delegação

Quando uma tecnologia realiza determinada tarefa melhor que nós, tendemos a delegá-la.

Calculadoras reduziram cálculos mentais.

GPS reduziu navegação espacial.

Tradutores reduziram consultas a dicionários.

A IA poderá reduzir:

  • redação inicial;

  • pesquisa;

  • programação repetitiva;

  • organização de informações.

O desafio será evitar a dependência excessiva.

Delegar tarefas não significa abandonar competências.


A Economia da Criatividade

Até pouco tempo acreditávamos que criatividade seria exclusivamente humana.

A IA mostrou que também consegue:

  • desenhar;

  • escrever;

  • compor músicas;

  • gerar vídeos;

  • criar animações;

  • desenvolver conceitos.

Isso muda profundamente o mercado.

O diferencial humano deixa de ser apenas produzir.

Passa a ser:

  • definir propósito;

  • formular problemas;

  • tomar decisões éticas;

  • integrar conhecimentos;

  • exercer julgamento.


O Novo Mercado de Trabalho

Até 2040 veremos profissionais trabalhando lado a lado com agentes inteligentes.

As equipes poderão incluir:

  • especialistas humanos;

  • agentes de pesquisa;

  • agentes de programação;

  • agentes de documentação;

  • agentes jurídicos;

  • agentes financeiros.

Cada profissional poderá coordenar várias inteligências artificiais especializadas.

Assim como hoje administramos servidores, amanhã administraremos agentes.


Saúde Mental na Era da IA

Os benefícios podem ser enormes.

Acesso democratizado ao conhecimento.

Apoio ao aprendizado.

Maior produtividade.

Personalização.

Mas também existirão riscos.

Entre eles:

  • dependência emocional;

  • isolamento social;

  • sobrecarga informacional;

  • dificuldade para distinguir realidade de conteúdo sintético;

  • ansiedade provocada por mudanças constantes.

A alfabetização em IA será tão importante quanto a alfabetização digital foi no início da internet.


Deepfakes e Confiança

A confiança será um dos ativos mais importantes do século XXI.

Vídeos poderão ser falsificados.

Vozes poderão ser copiadas.

Imagens poderão ser geradas instantaneamente.

A pergunta deixará de ser:

"Isso parece verdadeiro?"

Passará a ser:

"Como posso verificar se realmente aconteceu?"

Pensamento crítico tornar-se-á competência essencial.


O Valor da Autenticidade

Paradoxalmente, quanto mais perfeita for a IA, maior poderá ser o valor do genuinamente humano.

Conversas presenciais.

Artesanato.

Experiências reais.

Eventos ao vivo.

Contato físico.

Comunidades locais.

A autenticidade poderá transformar-se em diferencial competitivo.


O Mainframe da Consciência

No IBM Z existe isolamento entre workloads críticos.

Nem toda aplicação possui acesso irrestrito ao sistema.

Talvez precisemos adotar lógica semelhante para nossa mente.

Nem toda informação merece entrar.

Nem toda IA deve decidir.

Nem toda recomendação precisa ser aceita.

O julgamento humano continuará sendo o principal mecanismo de segurança.


Como Será 2040?

É impossível prever exatamente.

Mas alguns cenários parecem plausíveis.

Teremos:

  • assistentes pessoais extremamente inteligentes;

  • tradução simultânea praticamente perfeita;

  • óculos de realidade aumentada amplamente difundidos;

  • avatares digitais representando profissionais;

  • agentes especializados executando tarefas complexas;

  • conteúdo personalizado em tempo real;

  • educação altamente adaptativa;

  • ambientes híbridos entre físico e digital.

Ao mesmo tempo, crescerá a necessidade de preservar:

  • privacidade;

  • autonomia;

  • pensamento crítico;

  • saúde mental;

  • relações humanas.


O Que Todo Programador COBOL Pode Ensinar à IA

Existe uma ironia interessante.

Profissionais de Mainframe convivem há décadas com sistemas mission-critical.

Aprenderam que:

  • estabilidade vale mais que velocidade;

  • confiabilidade vale mais que novidade;

  • documentação evita desastres;

  • governança reduz riscos;

  • auditoria protege organizações.

Esses mesmos princípios serão fundamentais para a Inteligência Artificial.

Não basta criar sistemas inteligentes.

Precisamos criar sistemas confiáveis.


Conclusão

A história da tecnologia sempre foi marcada pela ampliação das capacidades humanas.

A máquina ampliou nossos músculos.

O computador ampliou nossa capacidade de cálculo.

A internet ampliou nosso acesso ao conhecimento.

A Inteligência Artificial amplia nossa cognição.

Mas existe uma diferença importante.

Pela primeira vez, a ferramenta interage conosco utilizando linguagem natural, criatividade e personalização.

Ela participa do processo de pensar.

Até 2040, talvez a maior mudança não seja a existência de máquinas mais inteligentes.

Será a necessidade de seres humanos aprenderem a preservar aquilo que nenhuma IA consegue reproduzir completamente:

empatia.

consciência moral.

responsabilidade.

sabedoria.

propósito.

Assim como um IBM Z continua confiável porque existe uma arquitetura sólida por trás de cada transação, o futuro da humanidade dependerá menos da potência da Inteligência Artificial e mais da solidez dos valores que orientarão seu uso.

Porque tecnologia pode acelerar decisões.

Mas continuará sendo responsabilidade humana decidir em que direção acelerar.


Dr. Watson Entra no CICS — O Caso do COBOL que Não Sabia que Era uma API

 

Bellacosa Mainframe e o cobol falando com a web via api

☕ Um Café no Bellacosa Mainframe

Dr. Watson Entra no CICS — O Caso do COBOL que Não Sabia que Era uma API

Ou: por que o programa que calcula a folha há trinta anos pode conversar com um aplicativo no celular sem trocar de linguagem, trocar de cérebro ou colocar bigode no JSON

“Holmes”, perguntou o Dr. Watson, olhando para o monitor onde um aplicativo de celular acabara de consultar o saldo de uma conta, “então o COBOL finalmente aprendeu Java?”

Sherlock nem levantou os olhos do log de uma transação CICS.

“Não, Watson. E esta é justamente a dedução que separa um arquiteto de alguém que instala uma biblioteca, desenha três setas num PowerPoint e chama a reunião de modernização.”

O espanto do Watson é o de muita gente, inclusive de bons desenvolvedores iniciantes. Eles ouvem “aplicação moderna”, pensam em React, Java, Python, Kubernetes, cloud, aplicativo de celular e JSON. Depois ouvem “COBOL”, imaginam uma sala empoeirada, cartões perfurados e um sistema incapaz de conversar com qualquer coisa que tenha tela sensível ao toque.

É uma imagem divertida, mas errada.

COBOL não precisa “virar Java” para participar do mundo digital. O que ele precisa é de uma porta de entrada bem desenhada, de um contrato claro para trocar dados e de uma camada que traduza a conversa entre os dois mundos. O COBOL continua realizando aquilo que sabe fazer muito bem: aplicar regras de negócio, consultar Db2, ler VSAM, conversar com IMS, validar limites, calcular valores e manter a consistência de uma operação que não pode falhar porque alguém colocou um emoji no campo de observação.

Neste café, Watson será nosso cronista. Ele vai acompanhar a investigação desde o primeiro JSON até o retorno da resposta, descobrir por que um campo aparentemente inocente pode produzir um erro enorme e perceber que modernizar não é demolir a agência bancária para instalar uma máquina de café expresso.

1. A primeira pista: ninguém “fala COBOL” pela internet

Quando um aplicativo mobile pede uma segunda via de boleto ou verifica a margem consignável de um cliente, ele normalmente envia uma requisição HTTP ou HTTPS. HTTP é o protocolo da conversa; HTTPS é essa conversa protegida por TLS. JSON é o formato textual usado para organizar os dados.

Uma solicitação simples poderia ser:

{
  "employeeId": "10025",
  "requestType": "PAYROLL"
}

O aplicativo não está chamando diretamente um PERFORM dentro de um programa COBOL. Ele está chamando uma API, algo como:

POST /payroll/v1/employee-query

O endpoint recebe a chamada, identifica o consumidor, valida a entrada e encaminha os dados para o ativo de negócio correto no z/OS. Esse ativo pode ser um programa COBOL sob CICS, uma transação IMS, uma rotina que consulta Db2 ou até uma composição de serviços.

O ponto decisivo é este: linguagem não é protocolo. Java, .NET, Python e COBOL podem participar da mesma conversa porque todos entendem os acordos de integração: rede, segurança, formatos e contratos. O programa COBOL não precisa entender a moda do framework da semana; a camada de serviço se encarrega de apresentar uma interface estável ao exterior.

Watson anotou: “Portanto, o celular não invade o mainframe; ele toca a campainha certa.” Exatamente.



2. A cena do crime: o caminho real da chamada

O desenho simplificado “COBOL → CICS → HTTP → JSON → aplicação moderna” transmite a ideia geral, mas na vida real as responsabilidades precisam aparecer. Um fluxo comum se parece mais com isto:

Aplicativo mobile / portal / serviço cloud
             |
        HTTPS + JSON
             |
API Gateway e camada de segurança
             |
z/OS Connect, CICS Web API ou serviço CICS
             |
COMMAREA, CHANNEL/CONTAINER, MQ ou chamada de programa
             |
Programa COBOL
             |
Db2, VSAM, IMS, MQ e regras de negócio

Nem toda empresa usa exatamente todos esses blocos. Em algumas, o CICS recebe HTTP diretamente. Em outras, o z/OS Connect expõe uma API REST sobre ativos CICS e IMS. Em outras, uma camada Java no z/OS ou numa plataforma distribuída faz parte da composição. E, quando o processo não exige resposta imediata, IBM MQ pode ser mais apropriado do que manter uma chamada HTTP esperando.

O erro de principiante é tratar todas essas opções como rivais. Elas são ferramentas para problemas diferentes.

  • Uma consulta de saldo tende a ser síncrona: pergunta, processa, responde.

  • Um pedido de recálculo de folha de milhões de pessoas pode ser assíncrono: recebe a solicitação, coloca trabalho em fila, processa com controle e devolve um protocolo.

  • Uma integração antiga pode continuar usando SOAP e XML; uma nova pode preferir REST e JSON.

Não existe medalha para quem força tudo a virar API síncrona. Há apenas incidentes mais elegantes.

3. CICS: o recepcionista que não deixa o visitante chegar à sala-cofre

Para quem começa em COBOL, CICS pode parecer apenas aquele ambiente onde aparecem comandos EXEC CICS. Mas, nesta história, ele é muito mais: é um gerenciador de transações, recursos, segurança e execução online.

Pense no programa COBOL como o especialista que conhece a regra da folha. Ele não deveria receber uma ligação de qualquer pessoa, a qualquer hora, com campos sem validação e a ordem “faz aí”. CICS organiza a entrada, executa a transação sob controle, protege recursos, ajuda a lidar com concorrência e fornece mecanismos para a aplicação funcionar online com previsibilidade.

Quando a integração é feita adequadamente, o serviço não expõe necessariamente o programa legado inteiro. Ele expõe uma capacidade de negócio. Em vez de criar uma API chamada:

EXECUTA-PGM-PG1234-COM-AREA-DE-327-BYTES

você cria:

GET /customers/{id}/payroll-summary

O primeiro nome descreve o porão da casa. O segundo descreve o serviço que a empresa oferece. A diferença parece estética até o dia em que muda o programa interno e cinquenta consumidores externos não deveriam nem perceber.

4. O tradutor entre JSON e COBOL

Aqui está o ponto onde Watson encontra a lupa no chão.

JSON é flexível. Um campo pode vir ou não vir. Um valor pode chegar como texto, número, lista ou objeto. O formato é legível, usa UTF-8 e costuma carregar nomes expressivos.

COBOL, em contrapartida, gosta de estruturas definidas, tamanhos conhecidos e tipos declarados. Um identificador pode ser PIC X(5); uma data pode ter oito posições; um valor monetário pode ser PIC S9(7)V99 COMP-3. Isso não é uma deficiência. É parte da previsibilidade que tornou esses sistemas valiosos.

Uma representação de trabalho para a entrada poderia ser:

01  WS-PAYROLL-REQUEST.
    05  WS-EMPLOYEE-ID       PIC X(5).
    05  WS-REQUEST-TYPE      PIC X(10).

E a saída:

01  WS-PAYROLL-RESPONSE.
    05  WS-STATUS            PIC X(10).
    05  WS-EMPLOYEE-ID       PIC X(5).
    05  WS-EMPLOYEE-NAME     PIC X(40).
    05  WS-SALARY            PIC S9(7)V99 COMP-3.

Uma camada de transformação recebe o JSON, aplica regras de mapeamento e fornece ao COBOL uma estrutura coerente. Na volta, converte o resultado para JSON:

{
  "status": "SUCCESS",
  "employeeId": "10025",
  "employeeName": "JOHN",
  "salary": 4500.00
}

O jovem padawan, hipnotizado pelo exemplo, talvez diga: “Então basta copiar os campos”. Watson, que já viu Holmes derrubar uma tese inteira por causa de uma cinza de charuto, deve desconfiar. Copiar campos é a parte fácil. Definir a semântica correta é o trabalho de verdade.

5. As cinco armadilhas escondidas no JSON

Identificador não é quantidade

O valor "00025" pode ser um código, não o número vinte e cinco. Se o aplicativo moderno o transforma em 25, os zeros à esquerda desaparecem. Para o COBOL e para a regra de negócio, isso pode apontar para outro registro ou simplesmente não encontrar nenhum.

Quando o dado representa identidade — conta, agência, matrícula, CPF formatado, código de produto — trate-o como texto, mesmo que visualmente só tenha dígitos.

Dinheiro não gosta de improviso

No Brasil, um usuário pode escrever 4500,00; JSON numérico usa ponto: 4500.00. Um valor monetário também não deve passar por conversões descuidadas de ponto flutuante. O desenho precisa definir precisão, arredondamento, moeda e comportamento para valores ausentes.

O campo COBOL S9(7)V99 COMP-3 é eficiente internamente, mas não deve “vazar” para o contrato. Externamente, o consumidor precisa de um número JSON ou, em situações que exijam controle absoluto de precisão, de uma convenção bem documentada.

Ausente, nulo, branco e zero são quatro pessoas diferentes

No JSON, um campo pode estar ausente, pode ser null, pode ser string vazia ou pode ser zero. No COBOL, dependendo do mapeamento, tudo isso pode acabar como espaços ou zeros. Se a API não define o comportamento, alguém poderá sem querer alterar um limite para zero ou apagar uma informação válida.

Datas são pequenas bombas-relógio

Defina um padrão externo, normalmente YYYY-MM-DD ou data-hora ISO 8601 com fuso. Nunca deixe cada consumidor decidir se 03/04/2026 significa 3 de abril ou 4 de março. O COBOL pode trabalhar internamente com outro layout, desde que a conversão seja centralizada e testada.

UTF-8, EBCDIC e o acento que virou evidência

O mundo web normalmente trafega UTF-8. O z/OS historicamente trabalha com EBCDIC em muitas áreas. Ferramentas e camadas modernas realizam conversões, mas o time precisa testar nomes com acentos, cedilha, caracteres especiais e limites de tamanho. “João D’Ávila” é um teste melhor do que “JOHN”.

Easter egg do caso: o primeiro incidente muitas vezes não aparece com um número errado. Ele aparece quando “AÇÃO PROMOCIONAL” se transforma em um texto esquisito no extrato e alguém descobre que o ambiente de teste só possuía clientes chamados ANA e JOSE.

6. REST, SOAP, MQ e o falso campeonato de tecnologias

REST com JSON é muito popular porque é simples de consumir por apps web e mobile. SOAP com XML ainda existe em muitas empresas e pode ser adequado em integrações formais já consolidadas. IBM MQ é excelente quando confiabilidade, desacoplamento e processamento assíncrono são mais importantes do que uma resposta imediata.

Veja a escolha pela pergunta de negócio, não pela propaganda:

CasoOpção frequentemente adequada
Consultar saldo ou statusAPI REST síncrona
Integrar serviço corporativo antigoSOAP/XML, se o contrato já existe
Enviar lote, evento ou comando críticoIBM MQ
Publicar função CICS/IMS para apps digitaisz/OS Connect ou recurso CICS
Fazer o COBOL consumir serviço externoCliente HTTP, integração CICS ou camada intermediária

Watson perguntou se REST “substitui” MQ. Holmes respondeu que uma chave inglesa não substitui um extintor. As duas coisas são importantes; apenas não devem ser usadas no mesmo parafuso.

7. A regra de ouro: exponha capacidade, não a anatomia do legado

Um erro comum de modernização é publicar uma API que reproduz o layout interno da COMMAREA, inclusive nomes históricos, campos reservados e indicadores sem significado para o consumidor.

Uma API fraca poderia devolver:

{
  "ws-ind-op": "A",
  "filler-01": "",
  "vlr-pgm": "00000450000",
  "ind-erro": "00"
}

Uma API saudável devolve algo que representa o domínio:

{
  "employeeId": "10025",
  "monthlySalary": 4500.00,
  "currency": "BRL",
  "processingStatus": "COMPLETED"
}

Isso permite modernizar por camadas. Por trás da API, você pode reorganizar programas, substituir um acesso, adicionar validações ou migrar uma parte do fluxo. Se o contrato público continuar compatível, o aplicativo consumidor não precisa saber da cirurgia interna.

É o princípio do strangler pattern: em vez de demolir um sistema inteiro num fim de semana heroico — geralmente seguido de uma segunda-feira traumática — a empresa cerca, substitui ou reorganiza partes aos poucos, mantendo o negócio funcionando.

8. Segurança: a porta moderna precisa ser mais forte, não mais aberta

Expor um serviço de mainframe não significa colocar uma transação CICS diretamente na internet e confiar no bom coração dos robôs. Uma arquitetura séria inclui autenticação, autorização, TLS, rate limiting, auditoria e mascaramento de dados.

Uma resposta para um app não deve devolver ASRA, S0C7, SQLCODE -805 ou o nome da tabela interna. Essas informações são valiosas para diagnóstico, mas péssimas como interface externa e potencialmente úteis para um atacante.

Em vez disso:

{
  "status": "ERROR",
  "code": "EMPLOYEE_NOT_FOUND",
  "message": "Employee was not found."
}

Do lado interno, a equipe mantém o detalhe: correlation ID, usuário técnico, horário, URI, transação CICS, programa chamado, SQLCODE e logs de segurança. Um bom correlation ID é a etiqueta de bagagem da transação: ele permite seguir a mesma solicitação do celular até o programa COBOL, passando pelo gateway e pelo CICS.

Também vale a dica de Watson para qualquer iniciante: não coloque segredo no código. Senhas, tokens, certificados e chaves de API precisam de gestão apropriada, rotação e controle de acesso. Um segredo em fonte COBOL é apenas um incidente aguardando o próximo upload ou print de tela.

9. Passo a passo: como transformar uma regra COBOL em serviço

Vamos supor que a empresa quer publicar a consulta resumida de folha de um funcionário.

  1. Descubra a capacidade de negócio. Não comece pelo programa. Comece pela pergunta: “o que o canal digital precisa saber?”. Aqui: consultar o resumo de folha de um funcionário autorizado.

  2. Mapeie a regra existente. Qual programa COBOL calcula ou consulta o dado? Ele recebe COMMAREA? Usa CHANNEL/CONTAINER? Chama outros módulos? Consulta Db2, VSAM ou IMS? Possui efeitos colaterais?

  3. Defina o contrato da API. Nome, URI, método HTTP, campos obrigatórios, tipos, respostas, erros, versão e exemplos. Um contrato bem escrito é uma peça de engenharia, não burocracia.

  4. Crie uma camada adaptadora se necessário. O programa antigo não precisa ser mutilado para ficar bonito para a API. Um programa ou serviço adaptador pode receber a estrutura externa, validar, chamar a regra existente e montar a resposta.

  5. Implemente o mapeamento. Decida como cada campo JSON vira uma variável COBOL e como cada resultado vira JSON. Documente regras de nulo, espaços, zeros, datas, arredondamento e caracteres.

  6. Proteja a entrada. Autentique o cliente, autorize a operação, valide tamanhos e conteúdo. Não deixe um campo de 40 caracteres cair numa área de 10 porque “em homologação funcionou”.

  7. Teste o caminho feliz e o caminho humano. O caminho feliz é funcionário existente, valor válido e infraestrutura saudável. O caminho humano inclui ID inexistente, requisição duplicada, JSON malformado, campo ausente, timeout, Db2 indisponível, acesso não autorizado e caracteres especiais.

  8. Observe a operação. Inclua logs, métricas, traces e correlation ID. Uma API que funciona só quando alguém está olhando o console não está pronta para produção.

  9. Publique sem quebrar consumidores. Se a versão 1 está em uso, não renomeie um campo de uma hora para outra. Versione, mantenha compatibilidade durante a transição e avise quem consome.

  10. Meça o resultado. Tempo de resposta, volume, erros por tipo, picos, dependências e impacto no CICS/Db2. Modernização sem observabilidade é apenas uma aposta com interface bonita.

10. O que o COBOL iniciante deve aprender primeiro

Você não precisa dominar todos os produtos antes de entender a arquitetura. Comece construindo o mapa mental:

  • um programa COBOL recebe dados e devolve dados;

  • CICS coordena muitos programas online e protege a transação;

  • COMMAREA e CHANNEL/CONTAINER são formas de passar dados entre componentes CICS;

  • Db2, VSAM e IMS são fontes comuns de dados e regras;

  • HTTP/HTTPS levam a chamada;

  • JSON é o envelope legível pelo aplicativo moderno;

  • uma API estabelece contrato, segurança e governança.

Depois, pratique separação de responsabilidades. Faça um programa COBOL que receba uma estrutura simples, valide um identificador, consulte um dado fictício ou Db2 de laboratório e devolva códigos de retorno claros. Em seguida, imagine como ele seria chamado por uma API. O salto mental mais importante não é decorar cada comando: é aprender a distinguir interface externa, regra de negócio e acesso a dados.

Epílogo — A conclusão de Watson

No fim do caso, o Dr. Watson fechou o caderno.

“Então o COBOL não está sobrevivendo apesar do mundo moderno. Ele pode participar dele porque sua regra continua útil — desde que alguém construa a ponte corretamente.”

Holmes assentiu.

“Precisamente. A tecnologia nova não apaga a necessidade de uma regra correta. Apenas aumenta a velocidade com que uma regra errada consegue chegar ao celular de milhões de pessoas.”

Essa é a grande lição. Modernizar COBOL não significa transformar todo programa em moda tecnológica nem tratar o mainframe como peça de museu. Significa criar integrações bem projetadas, seguras, observáveis e com contratos claros, preservando o que já funciona e mudando aquilo que precisa mudar.

O celular pode ter uma tela brilhante. O gateway pode estar na cloud. A resposta pode vir em JSON. Mas, no coração do processo, pode continuar existindo um programa COBOL que conhece a regra, protege o dado e não se impressiona com o último framework lançado numa sexta-feira.

E, quando a transação precisa fechar corretamente, Watson, é melhor que ele não se impressione mesmo.



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