☕ 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

quinta-feira, 26 de dezembro de 2024

📮 O CARTEIRO E O POETA — QUANDO UMA POSTMAN COLLECTION APRENDEU A ENTREGAR CARTAS AO MAINFRAME

 

Bellacosa Mainframe apresenta o postman

☕ Um Café no Bellacosa Mainframe

📮 O CARTEIRO E O POETA — QUANDO UMA POSTMAN COLLECTION APRENDEU A ENTREGAR CARTAS AO MAINFRAME

Postman, Collections, HTTP, REST, JSON, variáveis, autenticação, scripts, testes positivos e negativos, contratos, Runner, CI/CD, z/OS Connect, CICS, COBOL, Db2 — e o dia em que um jovem programador descobriu que receber 200 OK não significava que a carta havia chegado à pessoa certa.



Sob a tutela de O Carteiro e o Poeta, porque uma API também vive de mensagens. Algumas precisam chegar rápido. Outras precisam chegar com segurança. Todas precisam chegar ao destinatário correto.



🎬 PRÓLOGO — TODA API TEM UM CARTEIRO

Imagine uma pequena ilha.

Todas as manhãs, o carteiro percorre as mesmas ruas carregando cartas. Ele conhece os caminhos, as casas, os moradores e os horários.

Até que encontra um poeta.

O poeta não quer simplesmente que uma carta seja transportada.

Ele quer que ela seja compreendida.

Essa pequena diferença explica uma parte enorme do que significa testar APIs.

Quando começamos a usar o Postman, normalmente fazemos algo parecido com um carteiro iniciante:

GET /clientes/123

Clicamos em Send.

Recebemos:

200 OK

E comemoramos:

Funcionou!

Calma, jovem padawan do COBOL.

O servidor respondeu. Isso é tudo que sabemos até agora.

Talvez tenhamos pedido o cliente 123 e recebido o cliente 999.

Talvez o JSON esteja incompleto.

Talvez o saldo esteja errado.

Talvez uma pessoa sem autorização tenha conseguido consultar informações que não deveria.

Talvez o backend tenha consultado o Db2 errado.

Talvez o COBOL tenha devolvido um código de negócio indicando falha e alguma camada intermediária tenha convertido tudo em HTTP 200.

O carteiro entregou alguma coisa.

Ainda precisamos descobrir se entregou a carta correta para a pessoa correta.

E é aqui que nossa história realmente começa.



📬 CAPÍTULO 1 — POSTMAN NÃO É APENAS UM BOTÃO SEND

Para quem começa a trabalhar com APIs, Postman parece uma ferramenta para escrever uma URL, selecionar GET ou POST e apertar Send.

Isso seria como dizer que ISPF serve para editar texto.

Tecnicamente não está completamente errado.

Mas estamos ignorando quase todo o universo existente atrás da ferramenta.

Uma requisição HTTP pode possuir:

Método
URL
Headers
Parâmetros
Autenticação
Body
Scripts
Testes
Variáveis

Por exemplo:

POST /orders
Content-Type: application/json
Authorization: Bearer {{token}}

Body:

{
  "customerId": "12345",
  "productId": "A100",
  "quantity": 2
}

O Postman permite construir essa requisição, enviá-la e analisar a resposta.

Mas o salto de maturidade acontece quando paramos de pensar em requests isolados e começamos a pensar em Collections.

Uma Collection não deveria ser apenas uma pasta cheia de requisições.

Ela pode representar um verdadeiro sistema automatizado de testes da API.

E isso muda completamente o jogo.



🗃️ CAPÍTULO 2 — COLLECTION: A BOLSA DO CARTEIRO

Imagine a bolsa do nosso carteiro.

Não faria sentido jogar dentro dela milhares de cartas aleatoriamente.

Ele organiza:

Distrito
 ├── Rua
 │    ├── Número
 │    └── Destinatário

Uma Collection bem construída também precisa possuir estrutura.

Por exemplo:

Orders API
│
├── 01 - Authentication
│
├── 02 - Customers
│   ├── Create Customer
│   ├── Get Customer
│   └── Update Customer
│
├── 03 - Orders
│   ├── Create Order
│   ├── Get Order
│   ├── Update Order
│   └── Cancel Order
│
└── 04 - Negative Tests
    ├── Invalid Token
    ├── Customer Not Found
    ├── Invalid Quantity
    └── Forbidden User

Perceba uma coisa importante.

Estamos começando a transformar a Collection em algo parecido com uma especificação executável.

Ela documenta o sistema.

Ela executa o sistema.

Ela testa o sistema.

Ela pode ser compartilhada.

E posteriormente poderá entrar em um pipeline.

Isso é muito diferente de guardar meia dúzia de URLs.



✉️ CAPÍTULO 3 — PRIMEIRO ENTENDA A CARTA

Antes de criar uma request, precisamos entender o contrato.

Suponha:

POST /orders

Pergunte:

O que devo enviar?

{
  "customerId": "C123",
  "productId": "P987",
  "quantity": 2
}

O que espero receber?

{
  "orderId": "O456",
  "status": "CONFIRMED"
}

Qual status HTTP deveria aparecer?

Talvez:

201 Created

Agora temos uma expectativa.

Entrada:

customerId
productId
quantity

Saída:

orderId
status

Esse conceito deveria soar extremamente familiar para quem programa COBOL.

Pense em:

01 WS-REQUEST.
   05 WS-CUSTOMER-ID PIC X(10).
   05 WS-PRODUCT-ID  PIC X(10).
   05 WS-QUANTITY    PIC 9(03).

01 WS-RESPONSE.
   05 WS-ORDER-ID    PIC X(10).
   05 WS-STATUS      PIC X(10).

Mudou a tecnologia.

O princípio continua parecido:

existe uma estrutura de entrada e existe uma estrutura esperada de saída.

O programador COBOL chama isso de layout.

O desenvolvedor moderno talvez chame de contrato.

O carteiro chama de endereço.

Se qualquer um deles estiver errado, alguém receberá a correspondência errada.



🌐 CAPÍTULO 4 — 200 OK NÃO SIGNIFICA “TUDO CERTO”

Este talvez seja o conceito mais importante de toda a conversa.

Considere:

GET /customers/123

Resposta:

200 OK

Body:

{
  "customerId": "999",
  "name": "Mario"
}

A camada HTTP funcionou perfeitamente.

Mas a aplicação falhou.

Você pediu:

123

e recebeu:

999

Portanto precisamos testar diferentes níveis.

No Postman podemos escrever:

pm.test("HTTP status is 200", function () {
    pm.response.to.have.status(200);
});

Mas podemos continuar:

const customer = pm.response.json();

pm.test("Customer ID is correct", function () {
    pm.expect(customer.customerId).to.eql("123");
});

Agora não estamos apenas perguntando:

O servidor respondeu?

Estamos perguntando:

O servidor respondeu corretamente?

Essa diferença separa um teste superficial de um teste realmente útil.


🧠 CAPÍTULO 5 — O CARTEIRO DESCOBRE AS REGRAS DE NEGÓCIO

Imagine que criamos um pedido.

A resposta é:

{
  "orderId": "4711",
  "status": "REJECTED"
}

E recebemos:

200 OK

O transporte funcionou.

Mas talvez nossa expectativa fosse:

status = CONFIRMED

Portanto:

const order = pm.response.json();

pm.test("Order must be confirmed", function () {
    pm.expect(order.status).to.eql("CONFIRMED");
});

Isso é extremamente importante em sistemas mainframe.

Porque muitas aplicações antigas possuem códigos internos de retorno.

Um programa pode devolver algo conceitualmente semelhante a:

RETURN-CODE = 04
MESSAGE     = CUSTOMER BLOCKED

Enquanto uma camada REST pode responder:

200 OK

Se testarmos somente HTTP, podemos declarar sucesso para uma transação que o negócio considera fracasso.

O teste precisa conhecer o significado da resposta.

O poeta não quer saber apenas se a carta chegou.

Ele quer saber se Beatrice leu o poema certo.


📐 CAPÍTULO 6 — TESTANDO O CONTRATO

Agora podemos subir outro degrau.

Não queremos verificar somente valores.

Também queremos verificar estrutura.

Imagine que nossa API deveria responder:

{
  "orderId": "4711",
  "status": "CONFIRMED",
  "amount": 150.00
}

Mas depois de uma alteração recebemos:

{
  "id": 4711,
  "state": "OK"
}

O serviço respondeu.

Mas o contrato mudou completamente.

Isso pode quebrar consumidores.

Imagine um aplicativo esperando:

response.orderId

e alguém muda para:

response.id

Boom.

Não houve necessariamente ABEND no backend.

Mas houve um ABEND conceitual no consumidor.

Schema validation ajuda a detectar mudanças estruturais desse tipo.

Ela pode verificar coisas como:

campo obrigatório
tipo
formato
estrutura

Mas há uma sutileza.

Schema não prova que o conteúdo está correto.

Isto:

{
  "orderId": "9999",
  "status": "CONFIRMED"
}

pode estar estruturalmente perfeito e ainda pertencer ao cliente errado.

Portanto:

Schema Validation
        +
Business Assertions

são complementares.


🔤 CAPÍTULO 7 — VARIÁVEIS: O WORKING-STORAGE DO POSTMAN

Agora começa uma das partes mais interessantes para quem vem do COBOL.

Em vez de escrever:

https://qa.company.com/api/orders/123

podemos utilizar:

{{baseUrl}}/orders/{{orderId}}

E definir:

baseUrl = https://qa.company.com/api
orderId = 123

Podemos possuir ambientes diferentes:

DEV
QA
STAGING

Mudamos o ambiente.

A Collection continua igual.

Isso é poderosíssimo.

Para um programador COBOL, pense nas variáveis como uma espécie de combinação entre parâmetros, configuração e WORKING-STORAGE.

Mas existe uma armadilha.

Variáveis podem existir em diferentes escopos.

Se houver valores duplicados em locais diferentes, podemos executar um teste utilizando um valor que não imaginávamos.

É o equivalente moderno de perguntar:

Quem alterou essa variável?

E descobrir que existem quatro lugares diferentes onde ela poderia ter sido definida.

Dica de sobrevivência:

sempre investigue o valor resolvido, não apenas o nome escrito na request.


🔐 CAPÍTULO 8 — O CARTEIRO PRECISA MOSTRAR O CRACHÁ

APIs modernas frequentemente utilizam tokens.

Por exemplo:

Authorization: Bearer {{accessToken}}

Em vez de configurar autenticação individualmente em cinquenta requests, podemos defini-la na Collection e permitir herança.

Isso reduz repetição.

Mas surge uma distinção fundamental:

Authentication ≠ Authorization

Authentication pergunta:

Quem é você?

Authorization pergunta:

Você pode fazer isso?

Um usuário pode estar perfeitamente autenticado e ainda não possuir autorização para cancelar um pedido.

Por isso os testes precisam explorar situações como:

token ausente
token inválido
token expirado
usuário autenticado sem permissão

E aqui aparece uma pegadinha maravilhosa.

Você cria um teste chamado:

NO TOKEN

remove o token da request...

...e o teste continua funcionando.

Por quê?

Porque a request herdou a autenticação da Collection.

Seu teste negativo acabou sendo positivo sem você perceber.

É o tipo de bug que faz um QA olhar para a tela durante alguns segundos e começar a reconsiderar suas escolhas profissionais.


⚙️ CAPÍTULO 9 — PRE-REQUEST SCRIPT: PREPARANDO A CARTA

Antes de uma request ser enviada, podemos executar scripts.

Por exemplo, gerar um identificador:

const requestId = pm.variables.replaceIn("{{$guid}}");
pm.collectionVariables.set("requestId", requestId);

Depois enviamos:

X-Request-ID: {{requestId}}

Agora cada transação possui uma identidade.

E aqui nossa história chega ao mainframe.

Imagine:

Postman
   ↓
API Gateway
   ↓
z/OS Connect
   ↓
CICS
   ↓
COBOL
   ↓
Db2

Se o mesmo identificador puder ser correlacionado ao longo desse caminho, investigar um problema se torna muito mais poderoso.

Em vez de procurar:

aquela transação que aconteceu mais ou menos às 14:32...

podemos procurar:

Request-ID = 8f7a...

Isso aproxima teste de observabilidade.

E observabilidade é quando o carteiro não sabe apenas que saiu da agência: ele consegue descobrir por quais ruas a carta passou.


🔗 CAPÍTULO 10 — UMA CARTA LEVA À OUTRA

Agora criamos um pedido:

POST /orders

Resposta:

{
  "orderId": "4711"
}

Podemos capturar esse ID:

const body = pm.response.json();

pm.collectionVariables.set(
    "orderId",
    body.orderId
);

A próxima request utiliza:

GET /orders/{{orderId}}

Depois:

PUT /orders/{{orderId}}

Finalmente:

DELETE /orders/{{orderId}}

Criamos um workflow:

CREATE
   ↓
READ
   ↓
UPDATE
   ↓
DELETE

Isso é muito mais poderoso do que requests isoladas.

Estamos testando uma jornada.


💣 CAPÍTULO 11 — TESTE O QUE DEVERIA DAR ERRADO

Desenvolvedores naturalmente gostam de testar:

entrada correta → resultado correto

Mas sistemas reais vivem no território de:

entrada errada
campo ausente
valor máximo
valor mínimo
token expirado
registro inexistente
duplicidade
timeout
permissão insuficiente

Um excelente princípio é:

altere uma condição de cada vez.

Se você alterar cinco coisas simultaneamente e receber erro, não saberá qual delas provocou o comportamento.

Comece com um baseline válido.

Depois altere somente:

quantity = -1

Depois:

quantity = 0

Depois:

quantity = 1

E chegamos aos testes de fronteira.


📏 CAPÍTULO 12 — COBOL ADORA FRONTEIRAS

Suponha:

05 WS-AGE PIC 9(02).

O campo possui limitações claras.

Em APIs também precisamos pensar em limites.

Se uma regra aceita valores entre 1 e 100:

MIN - 1 = 0
MIN     = 1
MIN + 1 = 2

MAX - 1 = 99
MAX     = 100
MAX + 1 = 101

Não teste apenas:

50

O valor 50 provavelmente funciona.

Os monstros costumam morar nas bordas.

Esse princípio aparece em praticamente todas as gerações de computação.

Cartão perfurado, COBOL, Db2, Java, REST ou JSON: limites continuam sendo lugares maravilhosos para encontrar bugs.


📚 CAPÍTULO 13 — UMA REQUEST, CEM CARTAS

Imagine testar:

quantity

com dezenas de valores.

Não queremos duplicar a mesma request cinquenta vezes.

Podemos usar dados externos.

Por exemplo:

quantity,expectedStatus
1,201
2,201
0,400
-1,400
101,400

No teste:

const expected =
    Number(pm.iterationData.get("expectedStatus"));

pm.test("Expected HTTP status", function () {
    pm.expect(pm.response.code).to.eql(expected);
});

Agora temos data-driven testing.

A lógica do teste permanece.

Os dados mudam.

Programadores COBOL deveriam reconhecer imediatamente a beleza disso.

É quase como um processamento batch:

READ INPUT
PERFORM PROCESS-RECORD
PERFORM VALIDATE
READ NEXT

O Postman Runner passa a executar diferentes iterações sobre a mesma lógica.

O velho batch está sorrindo discretamente no fundo da sala.


🏃 CAPÍTULO 14 — COLLECTION RUNNER: O BATCH DAS APIs

Chega uma hora em que clicar em Send deixa de fazer sentido.

Temos:

20 requests
50 datasets
30 assertions
4 workflows

Queremos executar tudo.

É aí que entra o Runner.

Conceitualmente:

Inicializa
   ↓
Carrega ambiente
   ↓
Executa request
   ↓
Executa testes
   ↓
Armazena variáveis
   ↓
Executa próxima request
   ↓
Gera resultados

Parece familiar?

Claro.

Isso é praticamente a filosofia batch reaparecendo em roupas modernas.

A tecnologia mudou.

A ideia de processamento repetível e automatizado continua conosco.


🧹 CAPÍTULO 15 — O FANTASMA DO ESTADO ANTERIOR

Um dos bugs mais traiçoeiros em testes automatizados é o estado residual.

Imagine que ontem:

orderId = 4711

Hoje o POST falha.

Mas a variável ainda contém:

4711

A próxima request executa:

GET /orders/4711

e funciona.

Resultado?

Parece que o workflow passou.

Mas estamos consultando o pedido de ontem.

Esse é um falso positivo perigosíssimo.

Por isso suítes maduras precisam pensar em:

setup
execução
validação
cleanup

Teste repetível significa:

posso executá-lo novamente sem depender dos fantasmas deixados pela execução anterior.


🔦 CAPÍTULO 16 — DEBUGUE NA ORDEM CERTA

Quando algo falhar, não comece alterando JavaScript aleatoriamente.

Siga uma investigação disciplinada:

Endpoint
   ↓
Environment
   ↓
Variáveis resolvidas
   ↓
Authentication
   ↓
Headers
   ↓
Request body
   ↓
Response
   ↓
Scripts
   ↓
Dados
   ↓
Ordem do workflow

Se funciona individualmente mas falha no Runner, desconfie especialmente de:

ordem
estado
variáveis
dados
dependências

Essa disciplina lembra investigação de incidente no mainframe.

Você não começa culpando o COBOL.

Primeiro reconstrói o caminho.


📖 CAPÍTULO 17 — UMA COLLECTION DEVE SOBREVIVER AO SEU CRIADOR

Chegamos a uma pergunta excelente:

Se eu entregar minha Collection para outro desenvolvedor, ele consegue executá-la?

Se a resposta for:

“Sim, mas primeiro preciso explicar umas quinze coisas...”

a documentação ainda não está boa.

Explique:

objetivo
pré-requisitos
ambiente
autenticação
variáveis
ordem de execução
dados necessários
resultado esperado

Inclua exemplos.

Remova segredos.

Nunca transforme uma Collection compartilhada em cofre de:

password
API key
client secret
token permanente

Uma suíte de testes também é código.

Trate-a como tal.


🚂 CAPÍTULO 18 — A COLLECTION ENTRA NO CI/CD

Aqui acontece a grande transformação.

Antes:

Programador
   ↓
Postman
   ↓
Send

Depois:

Commit
   ↓
Build
   ↓
Deploy QA
   ↓
API Tests
   ↓
Resultado
   ↓
Pipeline continua ou falha

Agora o teste deixa de depender de alguém lembrar de apertar um botão.

Podemos executar smoke tests depois do deploy.

Podemos executar regressão.

Podemos impedir que uma mudança incompatível avance silenciosamente.

Em um ambiente mainframe moderno, podemos imaginar:

Git
 ↓
COBOL + COPYBOOK
 ↓
DBB / Build
 ↓
Deploy
 ↓
z/OS Connect
 ↓
Postman API Tests
 ↓
CICS
 ↓
COBOL
 ↓
Db2

O COBOL não deixou de ser COBOL.

O mainframe não deixou de ser mainframe.

Nós simplesmente construímos uma estrada moderna até ele.


🧬 CAPÍTULO 19 — O MAPA MENTAL DO PROGRAMADOR COBOL

Se você está começando em APIs, guarde esta tradução mental:

POSTMAN                    COBOL / MAINFRAME

Iteration Data       →     Arquivo de entrada
Variables            →     WORKING-STORAGE/configuração
Pre-request Script   →     Inicialização
HTTP Request         →     Chamada/transação
JSON Body            →     Estrutura de dados
Response             →     Estrutura retornada
pm.test              →     Validação
Collection           →     Conjunto organizado de processos
Runner               →     Batch automatizado
Environment          →     DEV / QA / PROD
Workflow             →     Sequência transacional
CI/CD                →     Esteira automatizada
Correlation ID       →     Identidade rastreável da transação

Não são equivalências tecnológicas perfeitas.

São pontes mentais.

E pontes são extremamente úteis quando estamos aprendendo um mundo novo.


🕵️ CAPÍTULO 20 — O NÍVEL QUE QUASE NINGUÉM ENSINA

Existe ainda um passo além.

Imagine que um teste falhou:

POST /payment

Resposta:

500 Internal Server Error

Uma suíte básica informa:

FAILED

Uma engenharia madura pergunta:

Por quê?

Imagine conseguir seguir:

Postman
   │
   │ correlation-id = POETA-0317
   ↓
API Gateway
   ↓
z/OS Connect
   ↓
CICS
   ↓
TRANSACTION ABCD
   ↓
COBOL PAYMENT01
   ↓
Db2
   ↓
SQLCODE -911

Agora não temos apenas automação.

Temos rastreabilidade.

O teste encontrou o sintoma.

A observabilidade mostrou o caminho.

Os logs forneceram evidência.

O mainframe revelou a causa.

🥚 EASTER EGG

Se algum dia encontrar nos exemplos do Bellacosa Mainframe uma transação executada exatamente às:

03:17

não tente corrigir o relógio.

O mainframe sabe perfeitamente que horas são.

Algumas transações simplesmente preferem trabalhar no turno da madrugada.


🎓 EPÍLOGO — O POETA FINALMENTE ENTENDEU O CARTEIRO

No começo de nossa história, tínhamos:

URL
 ↓
Send
 ↓
200 OK

Parecia suficiente.

Depois descobrimos um universo inteiro:

API CONTRACT
      ↓
COLLECTION
      ↓
ENVIRONMENT
      ↓
VARIABLES
      ↓
AUTHENTICATION
      ↓
PRE-REQUEST
      ↓
REQUEST
      ↓
RESPONSE
      ↓
ASSERTIONS
      ↓
SCHEMA
      ↓
BUSINESS RULES
      ↓
NEGATIVE TESTS
      ↓
BOUNDARIES
      ↓
WORKFLOWS
      ↓
DATA-DRIVEN TESTS
      ↓
RUNNER
      ↓
DEBUG
      ↓
DOCUMENTATION
      ↓
CI/CD
      ↓
OBSERVABILITY

Essa é a verdadeira evolução.

Você começa testando uma API.

Depois constrói uma suíte.

Depois transforma essa suíte em regressão.

Depois conecta a regressão ao pipeline.

Finalmente conecta os testes à observabilidade e consegue seguir uma transação desde o mundo distribuído até o programa COBOL que executou a regra de negócio.

E então acontece algo curioso.

A tecnologia mais moderna da arquitetura encontra uma das mais antigas.

JSON encontra COPYBOOK.

REST encontra CICS.

OAuth encontra RACF.

CI/CD encontra COBOL.

Postman encontra z/OS.

E nenhum deles precisa destruir o outro.

Porque modernizar mainframe não significa necessariamente arrancar o coração da aplicação e reescrevê-lo.

Às vezes significa simplesmente construir melhores caminhos para chegar até ele.

É justamente aí que O Carteiro e o Poeta se torna uma metáfora perfeita.

O carteiro domina o transporte.

O poeta domina o significado.

Uma boa API precisa dos dois.

Não basta entregar bytes.

Precisamos entregar os bytes certos, ao serviço certo, com a identidade certa, na sequência certa, respeitando o contrato certo e produzindo o resultado de negócio esperado.

Da próxima vez que o Postman mostrar:

200 OK

não feche o teste.

Olhe para aquele verde bonito e pergunte:

“Muito bem, carteiro. Você entregou a carta. Agora me prove que entregou a carta certa.”

Porque no Bellacosa Mainframe, até uma API precisa apresentar evidências antes de sair da War Room.

terça-feira, 24 de dezembro de 2024

Shadow AI: O Novo "Shadow IT" que Pode Colocar Bancos, Mainframes e sua Carreira em Risco

 

Bellacosa Mainframe e o perigo do shadow ai

☕ Um Café no Bellacosa Mainframe

Shadow AI: O Novo "Shadow IT" que Pode Colocar Bancos, Mainframes e sua Carreira em Risco

"A IA não é o problema. O problema é quando ela conhece mais sobre sua empresa do que deveria."

Durante muitos anos, quem trabalhava com IBM Mainframe aprendeu uma regra quase sagrada:

Dados são patrimônio da empresa.

Um programa COBOL pode ser recompilado.

Um JCL pode ser recriado.

Uma procedure pode ser reescrita.

Mas um cadastro de clientes, um histórico financeiro ou uma regra de negócio construída durante quarenta anos... isso não tem preço.

Agora imagine entregar tudo isso gratuitamente para uma inteligência artificial pública apenas porque ela respondeu sua dúvida em dez segundos.

Parece exagero?

Infelizmente, não é.

Estamos entrando em uma nova era chamada Shadow AI, e ela talvez seja o maior desafio de governança desde o surgimento da Internet corporativa.

Pegue seu café.

Hoje vamos conversar sobre um assunto que todo programador COBOL, analista de sistemas, DBA, administrador z/OS, gerente de TI e arquiteto de soluções deveria entender.


Antes de existir Shadow AI existia Shadow IT

Quem trabalha há décadas em TI provavelmente já viveu isso.

A área de Segurança dizia:

— Não pode usar Dropbox.

No dia seguinte alguém aparecia usando Google Drive.

Bloquearam o Google Drive.

Os usuários passaram a usar OneDrive pessoal.

Bloquearam tudo.

Começaram a enviar arquivos pelo WhatsApp.

Nada disso era maldade.

Era produtividade.

Quando o processo oficial demora muito, as pessoas encontram atalhos.

Esse comportamento recebeu um nome:

Shadow IT.

São recursos tecnológicos utilizados sem aprovação da organização.

Hoje aconteceu exatamente a mesma coisa.

Só que muito maior.

Agora não estamos escondendo arquivos.

Estamos escondendo inteligência.


O nascimento da Shadow AI

Imagine um desenvolvedor COBOL.

Ele recebe um programa com 18 mil linhas.

Foi escrito em 1987.

Possui centenas de PERFORM.

GO TO espalhados.

COPYBOOKs enormes.

Variáveis chamadas:

WK001
WK002
WK003
TEMP1
TEMP2
FLAG-A
FLAG-B

Depois de duas horas tentando entender o código ele pensa:

"Vou perguntar para uma IA."

Abre uma ferramenta pública.

Copia o programa.

Pergunta:

Explique este código COBOL.

Em menos de quinze segundos aparece uma explicação excelente.

Ele ficou feliz.

A empresa talvez não.

Porque naquele momento aconteceu algo muito mais importante do que receber uma resposta.

Ela perdeu o controle sobre onde aquele código foi parar.


O problema nunca foi a IA

Esse é o primeiro grande mito.

Muita gente acredita que o perigo da IA seja ela responder errado.

Na verdade, esse costuma ser o menor dos problemas.

O verdadeiro risco é outro.

É a informação enviada.

Imagine que alguém copie para uma IA pública:

  • código COBOL;

  • JCL;

  • SYSIN;

  • PROC;

  • CLIST;

  • REXX;

  • SQL do DB2;

  • definição VSAM;

  • arquitetura CICS;

  • parâmetros RACF.

Nenhum desses arquivos parece importante isoladamente.

Mas juntos contam exatamente como funciona uma empresa.

É como entregar o mapa completo de um castelo medieval.


Mainframe guarda o coração das empresas

Existe um mito curioso.

Algumas pessoas acreditam que o Mainframe é apenas um computador antigo.

Quem trabalha na área sabe que isso está longe da realidade.

O IBM Z normalmente executa aplicações responsáveis por:

  • folha de pagamento;

  • PIX;

  • TED;

  • cartões;

  • investimentos;

  • previdência;

  • seguros;

  • sistemas governamentais;

  • arrecadação;

  • declaração de imposto;

  • sistemas hospitalares;

  • controle aéreo.

Ou seja...

O Mainframe não guarda apenas dados.

Ele guarda o funcionamento da sociedade.


Um exemplo assustador

Imagine um banco.

Existe um programa chamado:

PGMFIN01

Ele calcula juros compostos.

Aplicações financeiras.

Renegociação.

Amortização.

Taxas.

Esse programa possui quarenta anos de evolução.

Recebeu centenas de alterações.

Seu algoritmo é praticamente impossível de reconstruir.

Um desenvolvedor resolve perguntar para uma IA:

Otimize este código.

Ele copia três mil linhas.

Acabou de compartilhar uma das maiores vantagens competitivas daquele banco.

Mesmo que nenhuma informação seja utilizada de forma inadequada, a organização perdeu o controle sobre um ativo extremamente valioso.


E quando existem dados de clientes?

A situação fica ainda mais séria.

Imagine um dump do CICS.

Nele aparecem:

CLIENTE

CPF

CONTA

AGÊNCIA

SALDO

ENDEREÇO

TELEFONE

O desenvolvedor quer apenas entender um ABEND.

Então envia tudo.

Perceba.

Ele não queria vazar informações.

Ele queria resolver um problema.

Essa diferença é fundamental.

A maioria dos incidentes não nasce da má intenção.

Nasce da pressa.


A cultura da velocidade

Vivemos uma época curiosa.

Todo mundo quer entregar mais.

Mais rápido.

Mais barato.

Mais inteligente.

A IA oferece exatamente isso.

Ela reduz tarefas que levavam horas para poucos minutos.

Naturalmente as pessoas começam a utilizá-la.

Até aqui não existe problema.

O problema aparece quando velocidade passa a valer mais que governança.

Imagine dois gestores.

O primeiro diz:

"Antes de usar qualquer IA precisamos validar com Segurança."

O segundo diz:

"Depois a gente vê isso."

Qual deles provavelmente entregará primeiro?

O segundo.

Qual deles provavelmente aumentará o risco?

Também o segundo.


Quando o exemplo vem de cima

Esse talvez seja o ponto mais importante de toda a discussão.

Pesquisas recentes mostram que muitos executivos também utilizam ferramentas não aprovadas.

Isso muda completamente o cenário.

Porque cultura organizacional funciona por imitação.

Não por documentos.

Você pode escrever um manual de trezentas páginas dizendo:

"Não utilize IA pública."

Se o diretor faz isso durante uma reunião...

A regra acabou.

As pessoas aprendem muito mais observando comportamentos do que lendo políticas.

No Mainframe isso sempre foi verdade.

Quem nunca ouviu frases como:

"Faz igual o pessoal da produção."

"Segue o padrão do analista mais antigo."

"Aqui sempre foi assim."

A IA segue exatamente a mesma lógica.


O perigo invisível

Uma das características mais perigosas da Shadow AI é sua invisibilidade.

Imagine um colaborador usando:

ChatGPT.

Claude.

Gemini.

Perplexity.

DeepSeek.

NotebookLM.

Copilot pessoal.

Ele pode fazer tudo isso usando:

  • navegador;

  • celular;

  • computador pessoal;

  • tablet.

A empresa talvez nunca descubra.

Esse é o verdadeiro desafio.

Não existe um servidor escondido.

Existe apenas um navegador aberto.


Mainframe e compliance

Quem trabalha com IBM Z normalmente convive diariamente com palavras como:

  • auditoria;

  • LGPD;

  • PCI-DSS;

  • SOX;

  • ISO 27001;

  • BACEN;

  • CVM;

  • trilhas de auditoria;

  • segregação de funções.

Esses conceitos existem porque sistemas financeiros movimentam bilhões de reais diariamente.

Agora imagine uma IA recebendo informações relacionadas a:

PIX.

TED.

Crédito.

Cartões.

Investimentos.

Mesmo que nenhum dado seja reutilizado, o simples fato de informações reguladas terem saído do ambiente controlado pode representar um problema de conformidade.


O programador júnior é culpado?

Na maioria das vezes...

Não.

Na verdade, ele costuma ser a pessoa mais interessada em aprender.

Imagine um desenvolvedor recém-contratado.

Recebe um programa COBOL escrito em 1984.

Não existe documentação.

O analista sênior está ocupado.

A entrega é amanhã.

O que ele faz?

Pergunta para a IA.

O erro não foi dele.

O erro foi da organização por não oferecer:

  • documentação;

  • treinamento;

  • mentoria;

  • ferramentas corporativas de IA.


Então devemos proibir IA?

Essa costuma ser a primeira reação.

Bloquear tudo.

Parece lógico.

Mas não funciona.

Porque produtividade é viciante.

Se o colaborador economiza duas horas por dia utilizando IA...

Ele continuará procurando uma maneira de utilizá-la.

Mesmo que seja no celular.

O resultado?

A empresa perde completamente a visibilidade.


O caminho inteligente

As empresas mais maduras estão adotando outra estratégia.

Em vez de combater a IA...

Elas governam a IA.

Isso significa:

Ferramentas homologadas

Utilizar soluções empresariais que ofereçam controles de segurança, auditoria, retenção de dados e políticas claras de privacidade.

Classificação das informações

Criar regras simples e fáceis de aplicar, por exemplo:

Pode compartilhar

  • documentação pública;

  • exemplos didáticos;

  • códigos de laboratório;

  • programas de treinamento.

Nunca compartilhar

  • dados pessoais;

  • informações financeiras;

  • credenciais;

  • dumps de produção;

  • chaves criptográficas;

  • configurações sensíveis;

  • código proprietário.

Treinamento

Não apenas para estagiários.

Também para:

  • coordenadores;

  • gerentes;

  • arquitetos;

  • diretores;

  • executivos.

Todos precisam entender riscos e responsabilidades.


Como isso afeta o mundo COBOL?

Mais do que muitos imaginam.

Hoje existem IAs capazes de:

  • explicar programas COBOL;

  • sugerir melhorias;

  • converter código;

  • documentar aplicações;

  • gerar testes;

  • explicar SQL;

  • interpretar JCL.

Tudo isso é fantástico.

Desde que seja feito no ambiente correto.

Ferramentas corporativas permitem usufruir desses benefícios sem expor informações estratégicas.


Cinco perguntas antes de perguntar à IA

Antes de colar qualquer informação em uma IA, faça um pequeno checklist mental:

  1. Este conteúdo contém dados de clientes?

  2. Existe alguma informação confidencial?

  3. Estou usando uma ferramenta aprovada pela empresa?

  4. Eu ficaria confortável se esse conteúdo aparecesse na primeira página de um jornal?

  5. Meu gestor de segurança aprovaria esse envio?

Se alguma resposta gerar dúvida, pare e reavalie.


Curiosidades

Curiosidade 1

O conceito de Shadow IT existe há mais de vinte anos.

Shadow AI surgiu praticamente da noite para o dia.

A velocidade de adoção foi muito maior.


Curiosidade 2

Muitas empresas descobriram o uso de IA apenas analisando logs de proxy.

Os acessos eram milhares por dia.

Muito acima do esperado.


Curiosidade 3

Em várias organizações, o setor que mais utiliza IA não é TI.

É Marketing.

Logo depois aparecem áreas Jurídica, RH, Atendimento e Desenvolvimento.


Curiosidade 4

O Mainframe sempre foi pioneiro em governança.

Controle de acesso.

Auditoria.

Rastreamento.

Segregação.

Paradoxalmente, muitos desses mesmos ambientes agora precisam aplicar os mesmos princípios ao uso de IA.


Easter Eggs para quem vive no IBM Z 🥚

Se você sorriu ao ler qualquer um destes itens, provavelmente já passou muitas horas diante de um terminal 3270:

🥚 Copiar um SYSOUT inteiro para a IA porque "só queria entender o ABEND S0C7".

🥚 Descobrir que o problema era um campo COMP-3 inválido... depois de meia hora conversando com a IA.

🥚 Perguntar "explique esse JCL" e perceber que esqueceu de remover o nome real do dataset de produção.

🥚 Enviar um trecho de RACF para obter ajuda e lembrar, tarde demais, que ele continha IDs internos da empresa.

🥚 Pedir para a IA documentar um programa chamado PGM001A e descobrir que até ela comentou: "Seria útil usar nomes mais descritivos." Quem herdou sistemas legados sabe exatamente do que estamos falando!

🥚 O verdadeiro programador COBOL sabe que o maior bug nunca foi o GO TO. O maior bug sempre foi a pressa.


A grande lição

Durante décadas, aprendemos a proteger CPUs, discos, redes e bancos de dados.

Agora precisamos proteger algo ainda mais valioso:

o contexto.

Uma IA aprende com o contexto que fornecemos.

Quanto mais informações enviamos, mais ela consegue ajudar.

E justamente aí mora o risco.

No universo IBM Mainframe, onde vivem algumas das aplicações mais críticas do planeta, cada linha de código pode representar décadas de conhecimento acumulado, bilhões de transações processadas e a confiança de milhões de clientes.

A Inteligência Artificial não é uma inimiga do programador COBOL. Pelo contrário: ela pode acelerar análises, explicar programas legados, documentar sistemas, gerar casos de teste e reduzir o tempo gasto em tarefas repetitivas. O verdadeiro desafio é utilizá-la com responsabilidade.

O futuro não pertence às empresas que proíbem a IA, nem às que a utilizam sem regras. Pertence às organizações que conseguem equilibrar inovação, segurança e governança.

No fim das contas, a pergunta mais importante deixou de ser "Posso usar IA?".

A pergunta correta é:

"Estou compartilhando apenas aquilo que posso compartilhar?"

Se cada profissional fizer essa reflexão antes de pressionar Ctrl+C e Ctrl+V, já teremos dado um enorme passo para transformar a IA em uma aliada — e não em um risco silencioso para o mundo Mainframe e para os sistemas financeiros que sustentam a economia.


segunda-feira, 23 de dezembro de 2024

📣🎥 “Yobikake” em Anime: Quando o personagem te chama (mesmo que você esteja no sofá)

  


📣🎥 “Yobikake” em Anime: Quando o personagem te chama (mesmo que você esteja no sofá)

Explorando esse chamado invisível que atravessa a tela

Se você já assistiu um anime e sentiu aquela estranha sensação de que o personagem falava com você — seja um “Ei, você!” implícito ou aquele olhar direto para a câmera — bem, talvez você tenha experimentado uma forma de yobikake. Vamos entender o que é, de onde vem, como funciona, e por que vira piada ou momento marcante.


🧐 1) O que é “yobikake”

O termo 呼びかけ (yobikake) literalmente significa “chamada”, “apelo” ou “convocação”. JLearn+2Tanoshii Japanese+2
No sentido linguístico:

  • “呼びかけ‐る (yobikakeru)” = vociferar ou convocar, “chamar alguém” Suki Desu

  • Como substantivo “呼びかけ (yobikake)” = “o ato de chamar ou apelar” Tanoshii Japanese+1

Em anime, muitas vezes o conceito se estende para quando o personagem rompe a barreira entre a ficção e o espectador, fazendo um chamado implícito ou explícito à audiência — “Ei, você está vendo isso comigo?”, “Você entendeu?”, “Você é parte disso”.


🕰️ 2) Origem e contexto

  • Na literatura e no teatro japoneses (bem como ocidentais) já existia o uso de apostrophe — ou “chamar alguém que não está presente” — como recurso literário. “Yobikake” pode se referir a isso também. Tanoshii Japanese

  • No anime/mangá, esse tipo de diálogo ou olhar direto ganhou força com o humor meta e a quebra da quarta parede — onde personagens reconhecem que estão em “um anime”.

  • Embora a palavra “yobikake” não seja amplamente usada nos estudos de anime (em inglês ou português), o conceito está implícito em muitos momentos de comédia, abstração ou pausa reflexiva.


🎬 3) Como o yobikake aparece nos animes

Aqui vão formas comuns de se manifestar:

  • Um personagem olha diretamente para a câmera ou para o espectador;

  • Um personagem comenta com a plateia ou faz uma piada que “só você entenderá”;

  • Um personagem chama ou convoca o espectador como parte da cena (“Me ouça!”, “Veja isso comigo!”);

  • Um narrative ou abertura que usa “vocês” para se referir à audiência;

  • Um “efeito de chamada” no enredo, onde a história reconhece o público ou usa o público como espectador consciente.


📌 4) Exemplos de animes

  • Gintama — Várias cenas onde os personagens comentam o anime, olham para você ou brincam com o fandom.

  • Monthly Girls’ Nozaki‑kun — Há momentos sutis onde os personagens fazem cara de “você entendeu isso?” ou a câmera vira parte da piada.

  • Pop Team Epic — Quebra total da quarta parede, com “yobikake” em nível absoluto, chamando o espectador pra rir ou pro absurdo.

  • One Punch Man — Algumas piadas onde o protagonista comenta diretamente sobre tropo de herói e parece “ligar” para o espectador.


🎉 5) Curiosidades & histórias

  • Em muitos fóruns de fãs, se comenta que “esse personagem ‘falou comigo’” quando há uma quebra de quarta parede — excelente sinal de yobikake bem feito.

  • Yobikake pode também estar presente em aberturas ou encerramentos, onde a música ou vocalista canta “vocês” ou “nós”, falando diretamente ao público.

  • Nos animes mais antigos, pode ser mais sutil; nos atuais, o uso meta está mais evidente por causa do fandom e da internet.


🧩 6) Dicas para identificar e apreciar

  • Preste atenção se o personagem vira a câmera ou parece “saber” que está sendo assistido.

  • Observe se há terceira pessoa (“vocês”, “vocês aí”) no diálogo ou narração.

  • Note se a piada depende de você “estar assistindo” — se sim, bingo: yobikake.

  • Aprecie como o momento quebra a imersão de maneira consciente e divertida.

  • Use como referência para memes: momentos de yobikake viram GIFs ou screenshots populares.


🗣️ 7) Comentários finais do narrador

Yobikake é aquela piscadinha esperta que o anime te dá:

“Sim, eu sei que você está aí. Vamos brincar juntos.”

Não é só técnica — é convite para rir, refletir ou se sentir parte da história. É quando o personagem se volta para você e diz:

“Você entendeu isso, né?”

Então, da próxima vez que assistir um anime e sentir aquele arrepio de reconhecimento… pode apostar: é yobikake chamando.

domingo, 22 de dezembro de 2024

🎨🐾 O Guia de Cores e Símbolos para Kemonomimi

 

Bellacosa Mainframe e o guia de cores e simbolos para kemonomimi

🎨🐾 O Guia de Cores e Símbolos para Kemonomimi

Porque cada orelhinha conta uma história.


🌙 Introdução: o código secreto das orelhas

Você acha que as orelhas de gato da sua personagem são só um acessório fofo?
Pense de novo.

No mundo dos kemonomimi (獣耳 — literalmente “orelhas de fera”), cor + forma + rabo formam um vocabulário visual completo.
É quase uma linguagem não escrita do moe — metade psicologia das cores, metade pura cultura otaku.

Em resumo: o design fala antes do personagem abrir a boca.



🧠 A base simbólica: instinto, cor e arquétipo

Cada tipo de kemonomimi expressa uma vibe animal — e a cor amplifica isso.
No Japão, as cores têm significados tradicionais, herdados do onmyōdō (yin-yang) e das cinco energias (go-shiki):

CorSimbolismo tradicionalEmoção moe associada
Vermelho (aka)Paixão, energia, perigoTsundere explosiva ❤️🔥
Azul (ao)Calma, sabedoria, purezaKuudere ou onee-san gelada ❄️
Amarelo (ki)Alegria, luz, curiosidadeGenki girl ☀️
Branco (shiro)Pureza, inocência, magiaMascote angelical ✨
Preto (kuro)Mistério, rebeldia, sensualidadeAntagonista charmosa 🖤
Marrom (chairo)Natural, confiança, calorProtetora ou amiga fiel 🐾
Rosa (pinku)Doçura, romance, vulnerabilidadeIdol moe 💞
Cinza / PrataNeutralidade, calma, melancoliaPersonagem sábia ou trágica 🌫️

🐱 Cores por espécie (tradução do instinto em paleta)

🐈 Nekomimi (gato)

  • Preto: independência + aura misteriosa (tipo Luna de Sailor Moon)

  • Branco: inocência felina, toque angelical

  • Cinza: equilíbrio e serenidade (Blake de RWBY é o exemplo perfeito)

  • Laranja: caótica, brincalhona, energética

💬 Símbolo: orelhas afiadas = curiosidade.
Rabo enrolado = autocontrole. Rabo fofo = inocência.


🐶 Inumimi (cachorro)

  • Marrom claro: fidelidade, amizade, energia solar

  • Preto: guardiã, tipo “corajosa e emocional”

  • Dourado: otimismo puro (a personagem que corre atrás do trem gritando “senpai!”)

💬 Símbolo: orelhas caídas = ternura, submissão.
Rabo reto = proteção e lealdade.


🦊 Kitsunemimi (raposa)

  • Laranja / Vermelho: astúcia, sedução, truques

  • Branco: forma divina — ligação com Inari (deusa xintoísta das raposas)

  • Prata: espiritualidade e mistério ancestral

💬 Símbolo: nove rabos = poder absoluto. Um rabo = aprendiz ou espírito travesso.


🐺 Ōkamimimi (lobo)

  • Cinza: equilíbrio entre selvagem e racional

  • Preto: caçadora solitária (mas com trauma emocional, sempre)

  • Branco: nobre, protetora, tipo “líder de matilha”

💬 Símbolo: olhos dourados → instinto puro.
Orelhas triangulares → alerta constante.


🐰 Usagimimi (coelho)

  • Branco: pureza, timidez, charme infantil

  • Rosa: inocência sonhadora

  • Azul-claro: serenidade emocional, “kuudere saltitante”

💬 Símbolo: orelhas longas = sensibilidade.
Elas “ouvem o coração dos outros” — literalmente, nos shoujos.


🐻 Kumamimi (urso)

  • Marrom: estabilidade emocional e fofura desajeitada

  • Preto: força e proteção

  • Bege: calor e aconchego

💬 Símbolo: corpinho arredondado, voz calma e braços sempre prontos pra abraço (ou dormir).


🧩 Extras visuais e seus significados ocultos

ElementoSignificadoDica de uso
🎀 FitasFragilidade e vaidadeIdeal para balancear designs felinos
🔔 SinosDesejo de atenção (ou alerta emocional)Ícone clássico das nekomimis
🦴 ColeirasPertencimento, relação emocionalUse com cuidado, alto poder simbólico
🌸 FloresNatureza, doçuraPerfeitas para personagens inocentes
💎 Brilhos metálicosAura mágica ou divinaMuito usados em kitsune e lobas brancas

🎨 Design psicológico: o código secreto do artista

Desenhar kemonomimi é contar uma história por cor e textura.
Quer sugerir uma personagem misteriosa mas gentil? → Cabelos lilás + orelhas cinza.
Quer uma líder energética? → Cabelos laranja + olhos dourados.

O bom design não mostra só “animalidade”.
Mostra a alma escondida atrás das orelhas.


☕ Comentário do El Jefe

“No fim, as cores das kemonomimi são como temperos —
demais, e você estraga o prato;
de menos, e perde o sabor.
Mas quando acerta... o moe fala por si.”

Então pinte com instinto.
Deixe o seu pincel ouvir o rabo balançar.
E lembre-se:

Cada orelhinha tem uma cor de coração escondida atrás.

sábado, 21 de dezembro de 2024

🔥 COBOL NÃO ESTÁ MORRENDO — ELE ESTÁ ESCONDENDO SEGREDOS QUE SUA EMPRESA NÃO CONSEGUE MAIS ENTENDER 💣

 

Bellacosa Mainframe a pensar nos segredos escondidos em nosso Cobol

🔥 COBOL NÃO ESTÁ MORRENDO — ELE ESTÁ ESCONDENDO SEGREDOS QUE SUA EMPRESA NÃO CONSEGUE MAIS ENTENDER 💣

☕💣 COBOL NÃO MENTE — E ISSO MUDA TUDO

📎 A PENSAR numa migração e/ou evolução:


🔥 1. Software Legado

🧠 “35 anos na Stack IBM Mainframe te ensinam uma coisa acima de tudo: COBOL não mente.”

COBOL é:

  • Verboso ✔
  • Rígido ✔
  • Antigo ✔

Mas também é:

  • Determinístico ✔
  • Transparente ✔
  • Brutalmente honesto ✔

👉 Diferente de linguagens modernas cheias de abstrações, COBOL mostra exatamente o que está acontecendo — sem esconder lógica atrás de frameworks.

💥 Tradução real disso:

“Se o sistema faz algo estranho, não é magia — está no código.”


🧨 O PROBLEMA REAL (QUE TODO MUNDO SABE, MAS NÃO FALA)

O codigo cobol legado expõe um ponto crítico que você, como mainframe guy, conhece bem:

  • 👴 Especialistas estão se aposentando
  • 📉 Novos devs não leem COBOL
  • 📄 Documentação ≠ realidade

💣 Resultado:

O sistema funciona… mas ninguém sabe exatamente COMO.

Isso é perigosíssimo em ambientes críticos (banco, seguro, governo).


⚠️ A PERGUNTA ERRADA VS A CERTA

❌ Errado:

“Como reescrever isso?”

✅ Certo:

“Como entender o que isso faz HOJE?”

Essa virada é genial.

Porque:

  • Reescrever sem entender = desastre
  • Modernizar sem contexto = regressão funcional

🤖 2. A VIRADA: ENSINANDO IA A LER COBOL

Aqui entra o ouro técnico.

❌ Mito:

“Joga o código na IA que ela entende”

✅ Realidade:

COBOL quebra o cérebro de LLMs por causa de:

  • DIVISIONS (estrutura hierárquica rígida)
  • PICTURE clauses (tipagem implícita e arcaica)
  • COPYBOOKS (dependência externa invisível)
  • DDS (fora do código!)
  • Data flow procedural (sem OO moderno)

👉 Para IA crua:

COBOL não parece código — parece ruído.


🛠️ SOLUÇÃO ADOTADA

O que deve ser feito? Pensar, improvisar e criar, fazer o que um bom mainframe dev faria:

  1. Criar regras explícitas (prompts estruturados)
  2. Modelar:
    • Sintaxe COBOL
    • Fluxo de dados
    • Estrutura de programa
  3. Alimentar com código real (IFS)
  4. Iterar (loop de melhoria contínua)

💡 E mais importante:

Criou uma toolchain com memória de domínio

Ou seja:

  • A IA não começa do zero
  • Ela já “sabe COBOL” antes de analisar

🧬 3. O MOMENTO MÁGICO: COPYBOOK

Aqui está o ponto que separa amador de especialista.

💥 Quando a IA resolve um COPY, tudo muda.

Por quê?

COPYBOOK = DNA do sistema

Contém:

  • Estruturas de dados
  • Layouts de arquivos
  • Regras implícitas
  • Contratos entre programas

👉 Sem isso:

Você NÃO entende o sistema.


🚀 O BREAKTHROUGH

A IA conseguiu:

  1. Resolver COPY
  2. Encontrar membro correto no IFS
  3. Expandir definições
  4. Usar corretamente no output

Sem intervenção humana.

💣 Tradução prática:

A IA começou a “pensar como um programador de mainframe experiente”


📄 4. O RESULTADO: DOCUMENTAÇÃO DE NEGÓCIO REAL

Agora vem a parte mais poderosa.

Pergunta proibida nas empresas:

“O que esse programa realmente faz?”

E ninguém responde porque:

  • Código tem 3000+ linhas
  • Autor sumiu nos idos 1998 antes do bug Y2k.
  • Quiça durante o downsize e rightsize dos anos 1990
  • Inspirado em Alsop mudou de stack
  • E deixou um Doc nunca foi confiável

🧠 O QUE A IA PRODUZ

Não é:

  • ❌ resumo técnico
  • ❌ pseudo-código

É:

  • ✅ Documento de processo de negócio

Exemplo do que isso significa:

AntesDepois
“PERFORM CALC-RTN”“Calcula juros compostos baseado em data de vencimento e tipo de cliente”
“MOVE WS-FLAG TO OUT-REC”“Define status de aprovação do contrato”

⚡ IMPACTO REAL

Isso aqui não é hype — é transformação estrutural:

🔓 Recuperação de conhecimento institucional

  • Código morto volta a ser compreendido
  • Regras de negócio deixam de ser “caixa preta”
  • Onboarding acelera brutalmente

🧱 Base para modernização

Agora você pode:

  • Migrar com segurança
  • Validar comportamento
  • Criar testes reais

🧪 5. O PRÓXIMO NÍVEL (CITADO NO TEXTO)

Testar se o SQLRPGLE convertido faz exatamente o mesmo que o COBOL

Aqui entra o verdadeiro desafio:

💣 Modernizar é fácil
💣 Garantir equivalência é DIFÍCIL


🔍 O QUE PRECISA EXISTIR

  • Testes baseados em comportamento
  • Comparação de outputs
  • Validação de regras de negócio

👉 Isso é engenharia de verdade — não só conversão de sintaxe.


☕💥 CONCLUSÃO NO ESTILO BELLACOSA

Esse texto não é sobre IA.

É sobre algo muito mais profundo:

🔥 Entender antes de transformar

COBOL nunca foi o problema.

O problema sempre foi:

  • Falta de entendimento
  • Dependência de pessoas
  • Conhecimento não documentado

💣 A FRASE FINAL QUE DEFINE TUDO

“COBOL não mente. Quem não entende, sim.”

segunda-feira, 16 de dezembro de 2024

🧠 AMOS: O Ladrão Invisível Que Não Roda no z/OS… Mas Já Pode Estar Roubando Seus Dados

 

Bellacosa Mainframe e o AMOS uma porta dos fundos para roubar dados

🧠 AMOS: O Ladrão Invisível Que Não Roda no z/OS… Mas Já Pode Estar Roubando Seus Dados

“Você protege seu RACF. Blinda seu CICS. Controla seu batch.
Mas… e o endpoint do seu desenvolvedor COBOL? Quem está protegendo isso?”


☕ Introdução ao Estilo Bellacosa

No mundo do mainframe, existe um mantra silencioso:

“Se está no z/OS, está seguro.”

E na maioria das vezes… está mesmo.

Mas aqui vai o plot twist que poucos analistas seniores querem encarar:

👉 O problema moderno não começa dentro do mainframe. Ele começa fora.

Hoje vamos dissecar uma ameaça real, atual e crescente:

🔥 Atomic Stealer (AMOS)


🧬 O que é o AMOS (Atomic Stealer)?

O Atomic Stealer, também conhecido como AMOS, é um malware do tipo infostealer, projetado inicialmente para sistemas macOS — sim, aquele ambiente que muitos ainda chamam de “seguro por padrão”.

Ele atua roubando:

  • Credenciais (navegadores, FTP, SSH)
  • Cookies de sessão
  • Carteiras de criptomoedas
  • Tokens de autenticação
  • Dados sensíveis armazenados localmente

👉 Em outras palavras:
Ele não invade o mainframe… ele invade quem acessa o mainframe.


🧠 A Nova Superfície de Ataque do z/OS

Você, analista COBOL sênior, já domina:

  • RACF
  • ACF2 / Top Secret
  • Segurança de dataset
  • Auditoria SMF
  • Controles de acesso CICS/DB2

Mas me responda com franqueza:

👉 Você controla o notebook do desenvolvedor que acessa o TSO?

👉 Você audita o browser onde está o plugin de emulador 3270?

👉 Você garante que tokens de sessão não estão sendo roubados?

Se a resposta for “não totalmente”…

Então o AMOS já encontrou um ponto de entrada.


🕵️‍♂️ Anatomia do Ataque

O AMOS não precisa de APF autorizado.
Ele não precisa de IPL.
Ele não precisa nem saber o que é um dataset VSAM.

Ele funciona assim:

🔓 1. Engenharia Social

  • Usuário baixa software pirata, plugin ou update falso
  • Ou acessa link malicioso (phishing)

🧬 2. Execução Silenciosa

  • Malware roda no endpoint (Mac/Windows)
  • Coleta credenciais, cookies, tokens

📤 3. Exfiltração

  • Dados enviados para servidores do atacante

🎯 4. Uso Inteligente

  • Hacker usa sessão válida
  • Acessa sistemas corporativos como usuário legítimo

👉 Inclusive:

  • Acessos TSO
  • Ferramentas FTP para datasets
  • APIs REST via z/OS Connect

⚠️ O Impacto no Mundo Mainframe

“Mas o z/OS não foi invadido…”

Correto.

👉 Mas os dados foram.

E isso muda tudo.

💥 Possíveis impactos:

  • Vazamento de dados sensíveis (clientes, contas, CPF)
  • Acesso indevido a sistemas batch
  • Execução de jobs maliciosos
  • Exfiltração de arquivos via FTP/SFTP
  • Comprometimento de credenciais privilegiadas

⚖️ LGPD: Onde o Problema Fica Sério

No contexto da Lei Geral de Proteção de Dados:

👉 Não importa onde ocorreu a falha.

Se houve vazamento de dados pessoais:

  • A empresa é responsável
  • Pode sofrer multas
  • Pode ter dano reputacional severo

E aqui vem a bomba:

“Mas foi no notebook do desenvolvedor…”

👉 Irrelevante para a LGPD.


🔍 Auditoria: O Que Você NÃO Está Vendo

Ferramentas clássicas de auditoria no z/OS:

  • SMF
  • RACF logging
  • CICS journaling

Elas vão mostrar:

✔ Login válido
✔ Acesso autorizado
✔ Comandos corretos

👉 Ou seja:
Tudo parece normal.

Porque o atacante está usando:

A identidade legítima do usuário.


🧠 O Paradoxo da Segurança Mainframe

O mainframe continua sendo o ambiente mais seguro.

Mas…

👉 A confiança no perímetro humano virou o elo fraco.


🛡️ Controles que um Analista COBOL Sênior Precisa Entender

Você não precisa virar especialista em cibersegurança.

Mas precisa evoluir sua visão.

🔐 1. Zero Trust

  • Nunca confiar implicitamente no usuário
  • Validar continuamente identidade e contexto

🔑 2. MFA (Multi-Factor Authentication)

  • TSO
  • VPN
  • Ferramentas de acesso

🧾 3. Monitoramento Comportamental

  • Detectar acessos fora do padrão
  • Horários incomuns
  • Volume anormal de leitura de datasets

🧬 4. Proteção de Endpoint

  • Antimalware corporativo
  • EDR (Endpoint Detection and Response)

📡 5. Segmentação de Acesso

  • Limitar privilégios
  • Evitar acessos amplos desnecessários

🧠 Curiosidades & Easter Eggs

💡 AMOS é vendido como serviço (Malware-as-a-Service)
👉 Hackers “alugam” o malware — modelo parecido com SaaS.

💡 Foco inicial em macOS
👉 Porque muitos profissionais de TI usam Mac… incluindo devs mainframe.

💡 Interface amigável para criminosos
👉 Painel web para visualizar dados roubados.

💡 Tokens são mais valiosos que senhas
👉 Permitem acesso sem autenticação adicional.


🧨 O Problema Ético

Aqui vai uma reflexão forte:

👉 O analista COBOL tradicional sempre confiou no ambiente controlado.

Mas agora…

  • Seu código pode ser seguro
  • Seu JCL pode estar perfeito
  • Seu RACF pode estar blindado

E mesmo assim…

Seus dados podem estar sendo vendidos na dark web.


🧭 Conclusão: O Novo Papel do Analista Mainframe

O analista COBOL sênior de hoje precisa ser:

  • Técnico ✔
  • Experiente ✔
  • Consciente de segurança moderna ✔✔✔

Porque o jogo mudou:

O ataque não vem mais pelo JCL…
Vem pelo clique do usuário.


🚀 Provocação Final

👉 Você revisa seu código COBOL com atenção extrema.

Mas…

Você já revisou o ambiente onde esse código é acessado?


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