☕ 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

sexta-feira, 13 de novembro de 2020

DotCom : Capítulo XI — Das Cinzas Nasceu um Novo Jeito de Construir Software: Como a Bolha da Internet Criou as Startups Modernas, o Agile e a Cultura Lean

 

Bellacosa Mainframe e o estouro da bolha dotcom capitulo xi

Capítulo XI — Das Cinzas Nasceu um Novo Jeito de Construir Software: Como a Bolha da Internet Criou as Startups Modernas, o Agile e a Cultura Lean

Por que o maior fracasso da primeira geração da Internet tornou-se a fundação da segunda geração da inovação tecnológica

"Os pioneiros constroem o caminho. Os sobreviventes aprendem onde estavam os buracos."

Existe uma frase muito conhecida na engenharia.

"Os sistemas mais robustos normalmente são construídos sobre os erros das versões anteriores."

Isso vale para software.

Vale para hardware.

Vale para aviões.

Vale para automóveis.

E vale perfeitamente para a Internet.

Quando a bolha das Dot-Com estourou, muita gente acreditou que o empreendedorismo tecnológico havia chegado ao fim.

Os investidores desapareceram.

As startups quebraram.

Os escritórios foram fechados.

Os jornais passaram a tratar a Internet com enorme desconfiança.

Mas algo curioso aconteceu.

Enquanto Wall Street enterrava a primeira geração das empresas digitais, engenheiros e empreendedores estavam estudando cuidadosamente tudo o que havia dado errado.

Essa talvez tenha sido a maior herança da bolha.

Ela ensinou.

E ensinou muito.

Foi justamente desse aprendizado que nasceu praticamente toda a cultura de desenvolvimento moderno que conhecemos hoje.


O Fim da Filosofia "Construa Primeiro, Pense Depois"

Durante os anos da bolha existia uma mentalidade bastante comum.

Lançar rapidamente.

Ganhar usuários.

Corrigir problemas depois.

Essa estratégia parecia funcionar enquanto existia dinheiro abundante.

Mas quando o capital desapareceu...

Muitos descobriram que haviam construído sistemas enormes sobre fundações frágeis.

Projetos difíceis de manter.

Infraestruturas caras.

Código praticamente impossível de evoluir.

A indústria compreendeu que velocidade sem direção produz apenas acidentes mais rápidos.


Surge uma Nova Pergunta

Antes da bolha, muitos empreendedores perguntavam:

"Como posso crescer mais rápido?"

Depois da crise, a pergunta mudou completamente.

"Como descubro rapidamente se minha ideia realmente faz sentido?"

Pode parecer apenas uma mudança de palavras.

Na realidade...

Mudou toda a filosofia de desenvolvimento de produtos.

Em vez de investir milhões antes de validar uma hipótese...

Passou-se a testar primeiro.

Aprender rapidamente.

Corrigir.

Evoluir.


O Nascimento da Cultura Lean

Embora suas origens estejam na indústria automobilística japonesa, especialmente no Sistema Toyota de Produção, foi após a bolha da Internet que muitos desses princípios começaram a ser adaptados para startups de tecnologia.

Eliminar desperdícios.

Construir apenas o necessário.

Aprender continuamente.

Melhorar processos.

Entregar valor.

Esses conceitos tornaram-se extremamente populares.

Anos depois surgiria o movimento conhecido como Lean Startup, consolidado por Eric Ries.

Seu princípio central parecia quase revolucionário.

Não construa um produto completo antes de descobrir se alguém realmente precisa dele.

Hoje isso parece óbvio.

Em 1999 não era.


MVP: O Produto Mínimo Viável

Outro conceito que ganhou enorme importância foi o famoso Minimum Viable Product, ou MVP.

A ideia é simples.

Em vez de gastar anos desenvolvendo uma solução perfeita...

Crie uma versão pequena.

Teste com clientes reais.

Aprenda.

Corrija.

Repita.

Essa filosofia reduziu drasticamente o desperdício de tempo e dinheiro.

Empresas passaram a descobrir problemas muito antes de investir milhões em projetos inviáveis.

Em certo sentido...

O MVP tornou-se uma vacina contra muitas das doenças que destruíram as Dot-Com.


O Cliente Tornou-se Parte do Desenvolvimento

Durante a bolha era relativamente comum desenvolver produtos imaginando aquilo que os clientes desejariam.

Após a crise...

As empresas passaram a perguntar diretamente aos usuários.

Entrevistas.

Testes.

Protótipos.

Versões beta.

Feedback contínuo.

O cliente deixou de aparecer apenas no final do projeto.

Passou a participar desde o início.

Essa mudança alterou completamente a engenharia de produtos digitais.


Agile: Responder às Mudanças

Em 2001, praticamente no auge das consequências da bolha, um grupo de desenvolvedores reuniu-se em Snowbird, Utah.

Dessa reunião nasceu o famoso Manifesto Ágil.

Embora suas ideias não tenham surgido exclusivamente por causa da bolha, o contexto histórico teve enorme influência.

Os profissionais estavam cansados de projetos gigantescos que demoravam anos para entregar resultados.

O mercado precisava de adaptação.

Flexibilidade.

Entrega contínua.

Colaboração.

Assim surgiram princípios que hoje fazem parte do cotidiano de praticamente toda empresa de software.


O Manifesto Ágil Não Era Contra Planejamento

Existe um equívoco bastante comum.

Muitas pessoas acreditam que Agile significa ausência de planejamento.

Não significa.

O Manifesto Ágil nunca afirmou isso.

Ele apenas reconheceu que planos precisam evoluir conforme aprendemos mais sobre o problema.

É uma diferença enorme.

Planejar continua sendo essencial.

Mas o plano deixa de ser um documento imutável.

Passa a ser uma ferramenta viva.


Scrum, Kanban e a Nova Organização das Equipes

Poucos anos depois começaram a popularizar-se metodologias como:

Scrum.

Kanban.

Extreme Programming.

Crystal.

Feature Driven Development.

Cada uma com características próprias.

Todas compartilhando uma mesma filosofia.

Aprender continuamente.

Entregar valor frequentemente.

Corrigir rapidamente.

Evitar desperdícios.

Essas ideias transformaram completamente a maneira como software passou a ser desenvolvido.


DevOps: Derrubando Muros

Outro aprendizado importante surgiu da dificuldade de colocar sistemas em produção.

Durante muitos anos existia uma separação rígida.

Os desenvolvedores criavam o software.

A equipe de operações mantinha os servidores.

Quando algo dava errado...

Cada grupo culpava o outro.

A partir da década seguinte ganhou força o conceito de DevOps.

Desenvolvimento e Operações trabalhando juntos.

Automação.

Monitoramento.

Entrega contínua.

Responsabilidade compartilhada.

Foi mais uma consequência indireta da necessidade de construir sistemas mais confiáveis.


A Cultura da Medição

Outra transformação importante ocorreu na maneira como empresas passaram a tomar decisões.

Antes da bolha muitas estratégias eram baseadas principalmente em expectativas.

Depois dela...

Começou a crescer a cultura dos indicadores.

Métricas.

Dashboards.

KPIs.

Testes A/B.

Análises estatísticas.

As empresas passaram a medir praticamente tudo.

Tempo de resposta.

Conversão.

Retenção.

Disponibilidade.

Latência.

Uso de memória.

Custos.

A intuição continuava importante.

Mas agora caminhava ao lado dos dados.


Enquanto Isso... O Mainframe Apenas Chamava Isso de Rotina

Para um profissional de mainframe, muitos desses conceitos parecem familiares.

Medição?

Sempre existiu.

SMF.

RMF.

Relatórios de desempenho.

Planejamento de capacidade.

Disponibilidade.

Auditoria.

Mudanças controladas.

Recuperação.

Observabilidade.

Muito antes de existirem dashboards coloridos em aplicações web, administradores de sistemas IBM Z já acompanhavam detalhadamente o comportamento de seus ambientes.

Talvez por isso muitos veteranos olhem para DevOps não como uma revolução absoluta.

Mas como uma evolução natural de princípios antigos aplicados a novos ambientes.


O Fracasso Tornou-se Professor

Existe outra mudança cultural extremamente interessante.

Antes da bolha, fracassar era visto como vergonha.

Depois dela...

Começou a surgir uma visão diferente.

Fracassar rapidamente pode ser melhor do que insistir durante anos em uma ideia inviável.

É importante compreender corretamente essa filosofia.

Ela nunca significou:

"Fracasse por qualquer motivo."

Significava:

"Aprenda rapidamente quando algo não funciona."

Essa diferença é enorme.


A Engenharia Voltou a Liderar

Após anos de excesso de marketing, o mercado voltou a valorizar profundamente engenheiros.

Arquitetos.

Especialistas em banco de dados.

Profissionais de infraestrutura.

Especialistas em segurança.

SREs.

DBAs.

Administradores de sistemas.

Todos passaram a ocupar posição estratégica.

As empresas perceberam algo fundamental.

Não basta convencer investidores.

É preciso construir sistemas capazes de sobreviver.


O Paralelo com a Inteligência Artificial

Estamos vivendo novamente um momento de enorme experimentação.

Modelos surgem diariamente.

Frameworks aparecem toda semana.

Ferramentas mudam rapidamente.

Nesse cenário, conceitos como MVP, Agile e Lean tornam-se ainda mais importantes.

Não faz sentido investir milhões em uma solução de IA sem validar primeiro se ela realmente resolve o problema do cliente.

A velocidade continua importante.

Mas o aprendizado tornou-se ainda mais importante.


A Evolução Nunca Para

Curiosamente, muitas ideias consideradas revolucionárias hoje provavelmente parecerão comuns daqui a vinte anos.

Assim como Agile evoluiu.

Assim como DevOps evoluiu.

Assim como Cloud evoluiu.

Também veremos novas formas de desenvolver software impulsionadas pela Inteligência Artificial.

Entretanto...

Os princípios continuarão praticamente os mesmos.

Aprender.

Adaptar.

Melhorar continuamente.


Lições para o Padawan COBOL

Existe uma sabedoria silenciosa presente nos grandes sistemas corporativos.

Eles raramente são reconstruídos do zero.

Eles evoluem.

Recebem novos módulos.

Novas interfaces.

Novos bancos de dados.

Novas APIs.

Novas integrações.

Essa mentalidade é muito próxima da filosofia Lean.

Melhoria contínua.

Evolução incremental.

Valor entregue constantemente.

No universo da Frota Estelar, os engenheiros da Enterprise não desmontam completamente a nave a cada nova missão. Eles atualizam sensores, substituem componentes, aprimoram motores e instalam novos sistemas, preservando aquilo que já demonstrou ser confiável.

A indústria de software aprendeu exatamente essa lição depois da bolha da Internet.

Não é preciso destruir tudo para inovar.

É preciso construir sobre bases sólidas.

Foi essa mudança de mentalidade que preparou o terreno para a computação em nuvem, os smartphones, os microsserviços, o DevOps moderno e, décadas mais tarde, a Inteligência Artificial.

No próximo capítulo veremos como todas essas transformações acabaram aproximando dois mundos que durante muito tempo pareciam opostos: o universo das startups e o universo do mainframe. Descobriremos que, apesar das diferenças aparentes, ambos passaram a compartilhar exatamente os mesmos objetivos: escalabilidade, disponibilidade, segurança, automação e evolução contínua.


terça-feira, 10 de novembro de 2020

CICS Forward Recovery: Sherlock Holmes, COBOL e o Mistério do VSAM Desaparecido

 

Bellacosa Mainframe e o cics forward recovery

☕ Um Café no Bellacosa Mainframe

CICS Forward Recovery: Sherlock Holmes, COBOL e o Mistério do VSAM Desaparecido

Imagine a cena.

São 14h37 de uma terça-feira aparentemente tranquila. O café ainda está quente, o sistema bancário está processando milhares de transações por minuto e os programas COBOL continuam trabalhando discretamente, como sempre fizeram: lendo clientes, atualizando saldos, gravando pagamentos e respondendo às telas CICS.

De repente, o telefone toca.

— O arquivo de clientes está com erro.

Alguns segundos depois, chega uma mensagem mais preocupante:

— O VSAM não abre.

Em seguida, a sentença que nenhum operador, programador ou analista de produção deseja ouvir:

— Parece que houve uma falha no storage. O arquivo pode estar corrompido.

Nesse momento, o programador COBOL iniciante talvez pense:

“É só restaurar o backup.”

Elementar, meu caro padawan do mainframe.

Mas incompleto.

Restaurar o backup pode trazer o arquivo de volta. Porém, dependendo do horário em que esse backup foi criado, todas as atualizações realizadas depois dele podem desaparecer.

O arquivo volta, mas volta ao passado.

É como encontrar a vítima viva, porém sem memória das últimas doze horas.

É nesse ponto que Sherlock Holmes deixa a lupa sobre a mesa, observa as pegadas deixadas pelos journals e declara:

“O backup mostra onde estivemos. Os logs mostram tudo o que aconteceu depois.”

Bem-vindo ao CICS Forward Recovery, o mecanismo utilizado para reconstruir dados fisicamente danificados por meio da combinação de uma cópia de segurança com registros de alterações posteriores.

Neste artigo, vamos investigar o conceito passo a passo, entender a diferença entre backup, backout e forward recovery, acompanhar um caso bancário completo e descobrir por que os journals são como testemunhas silenciosas de cada atualização feita em um arquivo VSAM.


O primeiro indício: o que é Forward Recovery?

Forward Recovery, ou recuperação para a frente, é um processo utilizado para reconstruir um dataset danificado a partir de dois elementos principais:

Backup consistente
        +
Registros de alterações posteriores
        =
Dataset reconstruído

O backup fornece o ponto de partida.

Os registros de journal fornecem os acontecimentos posteriores.

A recuperação aplica essas alterações sobre a cópia restaurada até que o arquivo alcance o estado consistente mais recente possível.

Considere o seguinte cenário:

00:00 – Backup completo do arquivo VSAM
00:10 – Cliente 100 recebe um depósito
01:25 – Cliente 200 atualiza o endereço
03:40 – Cliente 300 encerra a conta
08:15 – Cliente 400 faz uma transferência
12:00 – Cliente 500 paga um boleto
14:37 – O volume de disco sofre uma falha

Se restaurarmos somente o backup da meia-noite, o arquivo será recuperado no estado em que estava às 00:00.

Todas as operações realizadas entre 00:00 e 14:37 desaparecerão.

O Forward Recovery restaura o backup e, depois, reaplica as alterações registradas após sua criação.

Backup de 00:00
       ↓
Atualização de 00:10
       ↓
Atualização de 01:25
       ↓
Exclusão de 03:40
       ↓
Transferência de 08:15
       ↓
Pagamento de 12:00
       ↓
Estado recuperado próximo de 14:37

A palavra forward existe porque o processo caminha para a frente no tempo.

Ele parte de um ponto conhecido e reconstrói o caminho até o estado mais recente.


A cena do crime: o que exatamente foi perdido?

Antes de pensar em recuperação, precisamos investigar o tipo de falha.

Nem todo problema exige Forward Recovery.

Essa distinção é fundamental.

Em um ambiente CICS, podemos encontrar pelo menos duas grandes categorias de falha:

  1. Falha lógica ou transacional.

  2. Falha física ou estrutural.

Uma falha lógica acontece quando uma transação não consegue concluir corretamente.

Uma falha física acontece quando o próprio dataset, volume ou meio de armazenamento sofre dano ou se torna indisponível.

Observe a diferença.

Falha lógica

Uma transação deveria:

1. Debitar R$ 500 da conta A
2. Creditar R$ 500 na conta B

O débito acontece, mas o crédito falha.

Nesse caso, o arquivo não desapareceu. O disco não foi destruído. O dataset ainda existe.

O problema está na transação incompleta.

O CICS pode desfazer as alterações já realizadas por meio do backout.

Falha física

Agora imagine:

CUSTOMER.MASTER.FILE

O dataset está em um volume que sofreu corrupção.

O CICS tenta abrir o arquivo e recebe erro.

O catálogo pode apontar para o dataset, mas os dados não podem ser lidos corretamente.

Nesse caso, não basta desfazer uma transação. É preciso reconstruir o arquivo.

É aqui que entra o Forward Recovery.

Sherlock Holmes resumiria assim:

Backout corrige o ato. Forward Recovery reconstrói a cena.


O arquivo VSAM: o cofre onde os dados vivem

Para um programador COBOL iniciante, VSAM pode parecer apenas “o arquivo que o programa lê”.

Mas ele é muito mais que isso.

VSAM, ou Virtual Storage Access Method, é uma tecnologia de armazenamento amplamente utilizada no IBM Z.

Entre os tipos mais conhecidos estão:

  • KSDS — Key-Sequenced Data Set;

  • ESDS — Entry-Sequenced Data Set;

  • RRDS — Relative Record Data Set;

  • LDS — Linear Data Set.

Em aplicações CICS, o KSDS é extremamente comum.

Ele permite acessar registros por meio de uma chave.

Por exemplo:

01  CUSTOMER-RECORD.
    05 CUSTOMER-ID       PIC 9(10).
    05 CUSTOMER-NAME     PIC X(40).
    05 CUSTOMER-BALANCE  PIC S9(11)V99 COMP-3.

A chave poderia ser:

CUSTOMER-ID

Quando uma transação consulta um cliente, o programa pode executar uma leitura semelhante a:

EXEC CICS READ
     FILE('CUSTFILE')
     INTO(CUSTOMER-RECORD)
     RIDFLD(CUSTOMER-ID)
     RESP(WS-RESP)
END-EXEC.

Quando modifica o registro, pode utilizar:

EXEC CICS REWRITE
     FILE('CUSTFILE')
     FROM(CUSTOMER-RECORD)
     RESP(WS-RESP)
END-EXEC.

O programador enxerga comandos como READ, WRITE, REWRITE e DELETE.

Porém, por trás dessas instruções há uma cadeia completa de responsabilidades:

Programa COBOL
      ↓
Comando EXEC CICS
      ↓
CICS File Control
      ↓
VSAM
      ↓
Storage

Se o problema estiver no programa, talvez tenhamos um erro lógico.

Se o problema estiver no armazenamento físico, talvez tenhamos um caso de Forward Recovery.


A testemunha silenciosa: o journal

O journal é um dos elementos centrais da recuperação.

Ele registra informações sobre alterações realizadas nos dados.

Dependendo da configuração do ambiente, dos recursos utilizados e da estratégia de recuperação, os registros necessários podem ser gravados em logs e journals mantidos para esse propósito.

Uma forma simplificada de imaginar um registro de alteração é:

Arquivo: CUSTFILE
Operação: UPDATE
Chave: 0000001234
Horário: 10:25:31
Novo saldo: 000000015500.00

Outro registro poderia representar uma inclusão:

Arquivo: CUSTFILE
Operação: INSERT
Chave: 0000009876
Nome: JOHN WATSON
Saldo: 000000000100.00

Outro poderia indicar uma exclusão:

Arquivo: CUSTFILE
Operação: DELETE
Chave: 0000004444

Durante o Forward Recovery, essas informações são aplicadas sobre o arquivo restaurado.

É como reconstruir um romance perdido utilizando uma edição antiga e todas as correções feitas pelo autor depois dela.

O backup contém o livro antigo.

O journal contém as páginas alteradas.


Backup não é journal, journal não é backup

Esse é um ponto que merece ser gravado em letras garrafais na parede da sala de operações:

Backup e journal são complementares, não substitutos.

O backup é uma fotografia completa ou consistente do dataset em determinado momento.

O journal é uma sequência de mudanças.

Se você possui apenas o backup, pode recuperar o arquivo até o horário da cópia.

Se possui apenas registros de alterações, talvez não tenha uma base íntegra sobre a qual aplicá-los.

A estratégia completa se parece com isto:

BACKUP + JOURNAL + PROCEDIMENTO TESTADO = RECUPERAÇÃO CONFIÁVEL

Ainda falta uma peça importante: o procedimento precisa ser conhecido, documentado e testado.

Um backup que nunca foi restaurado é apenas uma promessa gravada em fita, disco ou nuvem.


O método Sherlock Holmes de recuperação

Sherlock Holmes nunca começa acusando alguém aleatoriamente.

Ele coleta fatos.

Em um incidente real, uma recuperação responsável também precisa seguir evidências.

Podemos organizar a investigação em etapas.

Passo 1 — Confirmar o sintoma

Antes de declarar que o arquivo está corrompido, verifique:

  • Qual mensagem foi emitida?

  • Qual código de resposta CICS apareceu?

  • O arquivo está CLOSED, DISABLED ou UNENABLED?

  • O problema ocorre para todas as chaves ou apenas algumas?

  • O dataset está catalogado?

  • O volume está disponível?

  • O erro é físico ou uma definição incorreta?

  • Houve alteração de catálogo, migração ou restore recente?

Nem todo erro de acesso significa corrupção.

Um arquivo pode estar fechado.

Uma definição pode apontar para o dataset errado.

Uma chave pode estar malformada.

Um programa COBOL pode ter fornecido um RIDFLD incorreto.

Holmes diria:

“Não confunda ausência de evidência com evidência de destruição.”

Passo 2 — Proteger a cena

Ao suspeitar de dano físico, o ambiente não deve continuar gravando descontroladamente.

A equipe pode precisar:

  • suspender transações;

  • fechar ou desabilitar o arquivo;

  • impedir novas atualizações;

  • registrar o horário exato da falha;

  • preservar logs e journals;

  • comunicar produção, storage, suporte e negócio.

Essa etapa evita que a investigação seja contaminada.

Passo 3 — Identificar o último backup válido

A equipe precisa descobrir:

  • quando o backup foi criado;

  • se ele foi concluído corretamente;

  • se é full ou incremental;

  • qual dataset corresponde ao arquivo afetado;

  • se o backup é consistente;

  • onde está armazenado;

  • quanto tempo será necessário para restaurá-lo.

Exemplo:

Último backup completo: 05/08/2026 00:00
Último backup incremental: 05/08/2026 12:00
Falha detectada: 05/08/2026 14:37

Nesse caso, talvez o ponto de partida mais eficiente seja o backup incremental das 12:00, desde que ele faça parte de uma cadeia consistente.

Passo 4 — Determinar o intervalo de journals

Precisamos identificar quais registros cobrem o período entre o backup e a falha.

Início: horário do backup
Fim: último ponto consistente antes da falha

Não basta dizer “aplique todos os logs”.

É necessário saber:

  • quais logs pertencem ao período;

  • se não há lacunas;

  • se a sequência está completa;

  • se os registros correspondem ao dataset correto;

  • se há duplicidade;

  • se existe um ponto de recuperação específico.

Uma lacuna no journal é como uma página arrancada do diário do suspeito.

Talvez ainda seja possível resolver o caso, mas a confiança diminui.

Passo 5 — Restaurar o dataset

O backup é restaurado para o local planejado.

Em ambientes bem estruturados, a equipe pode primeiro restaurar para um dataset alternativo.

Por exemplo:

PROD.CUSTOMER.MASTER

poderia ser restaurado temporariamente como:

RECOVERY.CUSTOMER.MASTER

Isso permite validações antes da substituição definitiva.

A ferramenta utilizada depende do ambiente e pode envolver recursos de:

  • IDCAMS;

  • DFSMSdss;

  • produtos de backup corporativo;

  • snapshots;

  • soluções de storage;

  • software especializado em recuperação de VSAM.

Passo 6 — Aplicar as alterações para a frente

Com o backup restaurado, inicia-se a aplicação dos registros posteriores.

Conceitualmente:

Estado no backup
      +
Alterações registradas
      =
Estado recuperado

As operações podem incluir:

  • criação de registros;

  • atualização de registros;

  • exclusão de registros.

A aplicação precisa respeitar a ordem correta.

Imagine:

10:00 – Cliente criado
10:05 – Cliente atualizado
10:10 – Cliente excluído

Se a ordem for alterada, o resultado poderá ser incoerente.

A cronologia é parte da verdade.

Passo 7 — Validar a consistência

Nunca disponibilize o arquivo apenas porque a ferramenta terminou com condition code zero.

Um CC 0000 indica que o utilitário concluiu conforme sua lógica. Não prova, sozinho, que o negócio está correto.

A validação pode envolver:

  • contagem de registros;

  • comparação de totais;

  • verificação de chaves;

  • validação de saldos;

  • relatórios de reconciliação;

  • testes de leitura;

  • testes de atualização;

  • verificação de índices alternativos;

  • conferência com outros sistemas;

  • validação pelos responsáveis de negócio.

Exemplo:

Quantidade esperada de clientes: 8.542.190
Quantidade recuperada:          8.542.190

Mas a quantidade sozinha não basta.

É preciso verificar valores críticos.

Total contábil esperado: R$ 982.450.221,37
Total recuperado:        R$ 982.450.221,37

Agora temos uma evidência melhor.

Passo 8 — Reabrir o arquivo e retomar a aplicação

Depois da aprovação:

  • o dataset recuperado é colocado no local correto;

  • definições são conferidas;

  • o arquivo é reaberto ou habilitado;

  • as transações são liberadas;

  • o sistema é monitorado;

  • a equipe acompanha erros e tempos de resposta.

A recuperação não termina quando o arquivo abre.

Ela termina quando o serviço volta com estabilidade e o negócio confirma que os dados estão corretos.


O caso do Banco Baker Street

Vamos construir um exemplo completo.

O Banco Baker Street mantém o cadastro de clientes em um KSDS chamado:

BANK.PROD.CUSTOMER.MASTER

A aplicação CICS utiliza a definição:

CUSTFILE

O backup completo ocorre diariamente à meia-noite.

Às 14h37, um problema de storage torna parte do dataset ilegível.

As transações começam a receber erro ao executar READ e REWRITE.

O programa COBOL possui tratamento de resposta:

EXEC CICS READ
     FILE('CUSTFILE')
     INTO(CUSTOMER-RECORD)
     RIDFLD(CUSTOMER-ID)
     RESP(WS-RESP)
END-EXEC

EVALUATE WS-RESP
    WHEN DFHRESP(NORMAL)
         CONTINUE
    WHEN DFHRESP(NOTFND)
         MOVE 'CLIENTE NAO ENCONTRADO' TO WS-MESSAGE
    WHEN OTHER
         PERFORM HANDLE-FILE-ERROR
END-EVALUATE.

O programa informa erro, mas não é ele quem recuperará fisicamente o dataset.

Essa é uma lição importante para o iniciante:

Nem todo problema encontrado pelo programa deve ser resolvido dentro do programa.

O COBOL detecta a falha.

O CICS gerencia o recurso.

A equipe de infraestrutura e recuperação reconstrói o dataset.

O processo poderia seguir assim:

1. Suspender as transações que atualizam CUSTFILE.
2. Registrar o horário da falha.
3. Fechar ou desabilitar o arquivo.
4. Confirmar o último backup válido.
5. Localizar os journals posteriores ao backup.
6. Restaurar o backup em uma área de recuperação.
7. Aplicar os registros até o ponto consistente.
8. Executar reconciliação.
9. Substituir ou disponibilizar o arquivo recuperado.
10. Reabrir CUSTFILE.
11. Executar transações controladas.
12. Liberar o serviço.

Depois da recuperação, o cliente Sherlock consulta seu saldo.

O valor está correto.

Watson atualiza o endereço.

A alteração é gravada.

Moriarty tenta causar outro incidente, mas encontra o runbook documentado, os backups testados e os journals devidamente preservados.

Desta vez, até o vilão pede transferência para a baixa plataforma.


Forward Recovery versus Transaction Backout

Essa comparação é uma das perguntas favoritas em entrevistas.

Transaction Backout

O backout desfaz alterações de uma unidade de trabalho que não foi concluída corretamente.

Exemplo:

Débito realizado
Crédito não realizado
Transação falha
CICS desfaz o débito

Seu foco é a consistência transacional.

Ele normalmente trabalha com informações que permitem restaurar valores anteriores, frequentemente chamadas de before-images.

Forward Recovery

O Forward Recovery reconstrói um dataset fisicamente danificado.

Exemplo:

Dataset perdido
Backup restaurado
Alterações posteriores reaplicadas
Arquivo reconstruído

Seu foco é a recuperação do dado armazenado.

CaracterísticaTransaction BackoutForward Recovery
Tipo de problemaFalha lógicaFalha física
EscopoUnidade de trabalhoDataset
DireçãoVolta ao estado anteriorAvança do backup ao estado recente
FinalidadeDesfazer transação incompletaReconstruir dados perdidos
Dataset precisa estar destruído?NãoPode estar corrompido ou perdido
Base principalInformações para desfazer mudançasBackup e registros posteriores

Uma frase para memorizar:

Backout apaga os passos defeituosos. Forward Recovery refaz os passos corretos.


Before-image e after-image

Considere um saldo inicial:

R$ 1.000,00

Depois de um depósito:

R$ 1.200,00

A imagem anterior é:

Before-image = R$ 1.000,00

A imagem posterior é:

After-image = R$ 1.200,00

Para desfazer a alteração, interessa o valor anterior.

Para reconstruir o estado atualizado a partir de um backup, interessam as informações que permitam reaplicar a mudança.

A implementação exata depende da infraestrutura, do tipo de recurso e da configuração de logging e journaling.

O programador iniciante não precisa decorar toda a mecânica interna no primeiro dia.

Mas precisa compreender o princípio:

BACKOUT → desfazer
FORWARD RECOVERY → reaplicar

RPO e RTO: o relógio de Moriarty

Toda recuperação séria deve considerar dois indicadores.

RPO — Recovery Point Objective

O RPO define quanto dado a organização aceita perder.

Exemplo:

RPO de 12 horas

Significa que, em determinado cenário, perder até 12 horas de dados estaria dentro do limite planejado.

Em um banco, isso provavelmente seria inaceitável para muitos sistemas.

Com journaling adequado, o ponto de recuperação pode ficar muito próximo do momento da falha.

RTO — Recovery Time Objective

O RTO define quanto tempo o serviço pode permanecer indisponível.

Exemplo:

RTO de 30 minutos

Isso significa que a organização espera restaurar o serviço dentro desse intervalo.

Forward Recovery influencia ambos.

Journals completos ajudam a reduzir a perda de dados.

Automação, backups rápidos e procedimentos testados ajudam a reduzir o tempo de recuperação.

O vilão mais perigoso de uma recuperação não é a falha de disco.

É o improviso.


O papel do CICS VSAM Recovery

Em ambientes corporativos, pode ser utilizado o CICS VSAM Recovery, frequentemente conhecido como CICS VR, para auxiliar no gerenciamento e na recuperação de dados VSAM relacionados a cargas CICS.

Uma solução especializada pode ajudar a:

  • identificar backups disponíveis;

  • localizar logs necessários;

  • planejar pontos de recuperação;

  • automatizar etapas;

  • reduzir erros operacionais;

  • manter informações sobre recursos recuperáveis;

  • apoiar a reconstrução de datasets.

É importante não imaginar que existe uma única ferramenta universal utilizada por todas as empresas.

Cada instalação possui sua arquitetura, seus produtos, seus padrões e seus procedimentos.

Algumas utilizam CICS VR.

Outras combinam ferramentas de storage, backup corporativo e rotinas próprias.

A tecnologia pode variar.

O princípio continua o mesmo:

Restaurar uma base válida
+
Reaplicar alterações válidas
+
Validar o resultado

Curiosidades da sala de máquinas

1. Um backup rápido não é necessariamente um restore rápido

Alguns processos produzem backups em poucos minutos, mas a restauração pode levar muito mais tempo.

Por isso, o planejamento deve medir os dois lados.

2. O índice alternativo também importa

Um KSDS pode possuir Alternate Index, ou AIX.

A estratégia de recuperação precisa considerar a consistência entre o cluster base e seus caminhos de acesso alternativos.

Não adianta recuperar os registros e esquecer a estrutura usada pelas aplicações para encontrá-los.

3. O catálogo pode sobreviver ao dataset

É possível que o catálogo ainda contenha a definição do arquivo, embora o conteúdo físico esteja indisponível.

É como possuir o endereço de uma casa que foi destruída.

4. Alta disponibilidade não elimina recuperação

Replicação, redundância e failover reduzem interrupções, mas não tornam o ambiente imune a corrupção lógica, erro humano ou propagação de dados inválidos.

Uma cópia perfeitamente replicada de um erro continua sendo um erro perfeitamente replicado.

5. Journals também exigem proteção

Se o arquivo e os journals estiverem sujeitos ao mesmo ponto único de falha, a estratégia poderá fracassar justamente quando for necessária.

6. O melhor runbook é aquele executado em teste

Documentos de recuperação não devem ser tratados como relíquias sagradas.

Devem ser ensaiados, atualizados e criticados.

Uma linha desatualizada em um procedimento pode custar horas durante um incidente real.


Dicas para o programador COBOL iniciante

Mesmo que você não seja o responsável por executar o restore, seu código pode ajudar muito durante incidentes.

Sempre trate RESP e RESP2

Evite assumir que todo comando CICS funcionará.

EXEC CICS WRITE
     FILE('CUSTFILE')
     FROM(CUSTOMER-RECORD)
     RIDFLD(CUSTOMER-ID)
     RESP(WS-RESP)
     RESP2(WS-RESP2)
END-EXEC.

Depois, avalie a resposta.

Não transforme todo erro em “registro não encontrado”

Um erro físico não é igual a NOTFND.

Tratar qualquer falha como ausência de cliente mascara problemas graves.

Registre contexto suficiente

Quando permitido pelos padrões da empresa, registre:

  • transação;

  • programa;

  • arquivo;

  • operação;

  • chave;

  • RESP;

  • RESP2;

  • horário;

  • identificador de correlação.

Isso ajuda a investigação.

Evite mensagens genéricas

Mensagem ruim:

ERRO NO ARQUIVO

Mensagem melhor:

TRAN=CU01 PROG=PGMCUST FILE=CUSTFILE OP=READ
RESP=xx RESP2=yy KEY=0000001234

Sem expor dados sensíveis, forneça evidências úteis.

Entenda a unidade de trabalho

Saiba onde ocorre o commit.

Saiba quais atualizações fazem parte da mesma transação.

Saiba o que deve ser desfeito se algo falhar.

Não tente “consertar” corrupção física com lógica improvisada

Um programa que ignora erros e continua gravando pode transformar um incidente recuperável em um desastre maior.


Easter eggs escondidos no dataset

Como prometido, aqui estão alguns pequenos easter eggs para o leitor atento.

O arquivo do exemplo chama-se BANK.PROD.CUSTOMER.MASTER, mas os clientes utilizados incluem Sherlock Holmes, John Watson e Moriarty.

O horário da falha, 14h37, não possui poder místico. Ele foi escolhido justamente para lembrar que incidentes reais raramente respeitam horários redondos.

O café aparece porque toda grande investigação de produção possui três elementos inevitáveis:

Logs
Hipóteses
Cafeína

E há um quarto elemento não documentado:

Alguém dizendo:
“Isso nunca aconteceu antes.”

Na prática, quando alguém pronuncia essa frase, procure um ticket semelhante aberto três anos antes.

Provavelmente ele existe.


Perguntas de entrevista

O que é Forward Recovery no CICS?

É o processo de reconstrução de um dataset danificado, normalmente restaurando um backup consistente e aplicando registros de alterações posteriores até atingir o ponto de recuperação desejado.

Qual é a diferença entre Forward Recovery e Backout?

Backout desfaz alterações de uma transação incompleta. Forward Recovery reaplica alterações sobre um backup para reconstruir um dataset perdido ou corrompido.

Por que o backup sozinho pode ser insuficiente?

Porque ele representa o estado do arquivo no momento em que foi criado. Todas as atualizações posteriores precisam ser recuperadas por outros registros, como journals apropriados.

Em que situações o Forward Recovery pode ser necessário?

Em casos como:

  • falha de volume;

  • corrupção de dataset;

  • perda de mídia;

  • dano físico no armazenamento;

  • necessidade de reconstrução de arquivo crítico.

Qual é o papel do journal?

Preservar informações sobre alterações que podem ser aplicadas depois da restauração do backup.

O que deve ser validado após a recuperação?

Estrutura, quantidade de registros, chaves, totais financeiros, consistência de índices, funcionamento das transações e reconciliação com sistemas relacionados.


Checklist do detetive de produção

Antes da falha:

[ ] Existe backup?
[ ] O backup foi testado?
[ ] Journaling está configurado?
[ ] Os logs estão protegidos?
[ ] O RPO está definido?
[ ] O RTO está definido?
[ ] O procedimento está documentado?
[ ] A equipe treinou a recuperação?
[ ] Existem contatos de escalonamento?
[ ] O negócio conhece os impactos?

Durante a falha:

[ ] Registrar o horário
[ ] Preservar evidências
[ ] Suspender atualizações
[ ] Identificar o dataset
[ ] Confirmar a natureza da falha
[ ] Encontrar o último backup válido
[ ] Localizar os journals necessários
[ ] Executar o runbook

Depois da recuperação:

[ ] Validar registros
[ ] Reconciliar totais
[ ] Testar leituras
[ ] Testar atualizações
[ ] Monitorar transações
[ ] Comunicar o negócio
[ ] Documentar a causa
[ ] Atualizar o procedimento
[ ] Realizar post-mortem

A conclusão de Sherlock Holmes

Forward Recovery não é apenas um comando, um utilitário ou uma função isolada do CICS.

É uma estratégia.

Ela começa muito antes da falha, quando a empresa decide:

  • como produzir backups;

  • como registrar alterações;

  • onde armazenar cópias;

  • quanto dado pode perder;

  • quanto tempo pode ficar parada;

  • quem será chamado;

  • como validar a recuperação.

Quando o incidente acontece, não é hora de inventar a solução.

É hora de executar aquilo que já foi planejado.

Para o programador COBOL iniciante, a principal lição é compreender que um sistema transacional possui camadas.

Seu programa pode executar:

READ
WRITE
REWRITE
DELETE

Mas a sobrevivência desses dados depende de uma arquitetura maior:

COBOL
  ↓
CICS
  ↓
VSAM
  ↓
Logging e Journaling
  ↓
Backup
  ↓
Storage
  ↓
Recuperação
  ↓
Continuidade do negócio

Quando todas essas peças trabalham juntas, uma falha física não precisa se transformar em perda irreversível.

O dataset pode ser reconstruído.

As transações podem voltar.

O negócio pode continuar.

E o jovem programador, observando os logs como pistas espalhadas pela Baker Street do IBM Z, finalmente compreende que o mainframe não é apenas uma máquina que processa dados.

É uma fortaleza construída para preservar a história de cada transação.

Porque, no mundo dos sistemas críticos, cada registro conta.

Cada journal é uma testemunha.

Cada backup é uma fotografia.

E toda recuperação bem-sucedida começa com a pergunta certa:

“O que aconteceu depois da última cópia confiável?”

Elementar, meu caro programador COBOL.

segunda-feira, 9 de novembro de 2020

Escalando Bancos de Dados sem Entrar em Hiperespaço Quando um Programador COBOL Descobre que um Banco de Dados Também Pode Crescer Como uma Galáxia

 

Bellacosa Mainframe uma visão escalando banco de dados 

☕ Um Café no Bellacosa Mainframe

Escalando Bancos de Dados sem Entrar em Hiperespaço

Quando um Programador COBOL Descobre que um Banco de Dados Também Pode Crescer Como uma Galáxia — e que o Verdadeiro Vilão Nunca Foi a CPU, Mas a Arquitetura

"NÃO ENTRE EM PÂNICO."

Esta talvez seja a frase mais importante para qualquer programador COBOL que acabou de ouvir alguém dizer:

"O banco não aguenta mais."

Se você leu O Guia do Mochileiro das Galáxias, sabe que o Universo inteiro parece funcionar na base da improvisação extremamente sofisticada.

No mundo dos bancos de dados corporativos acontece exatamente a mesma coisa.

Tudo parece simples.

Até o dia em que o sistema recebe dez vezes mais usuários.

Depois cem vezes.

Depois mil vezes.

E, de repente, aquele pequeno Db2 que atendia tranquilamente uma agência bancária agora precisa responder milhões de consultas por minuto, conversar com centenas de aplicações, suportar APIs REST, aplicativos móveis, sistemas em nuvem, filas MQ, microsserviços, IA, analytics e ainda continuar respondendo em menos de alguns milissegundos.

É nesse momento que o Padawan COBOL olha para o monitor 3270 e pergunta:

— Mestre... colocamos mais memória?

O mestre apenas toma um gole de café e responde:

— Jovem viajante... escalar um banco nunca foi apenas comprar um computador maior.

Pegue sua toalha.

Hoje vamos atravessar a galáxia da escalabilidade.


Capítulo 1 — O Universo Sempre Cresce

Existe uma lei cósmica da computação.

Todo sistema que funciona...

...um dia ficará pequeno.

Não importa se é:

  • um banco digital

  • um supermercado

  • uma companhia aérea

  • uma seguradora

  • um ERP

  • um sistema COBOL criado em 1989

Todos crescem.

Mais usuários.

Mais dados.

Mais integrações.

Mais consultas.

Mais relatórios.

Mais APIs.

Mais inteligência artificial.

Mais tudo.

O curioso é que o programa COBOL continua praticamente igual.

O que muda é o mundo ao redor.


O Primeiro Erro dos Iniciantes

O iniciante normalmente acredita que desempenho significa:

"Comprar um servidor maior."

Isso funciona...

...até deixar de funcionar.

Imagine uma biblioteca.

Você pode comprar uma mesa maior.

Depois uma sala maior.

Depois um prédio maior.

Mas chega um momento em que o problema não é mais o tamanho do prédio.

É a organização dos livros.

Com bancos de dados acontece exatamente isso.


O Computador Não é o Gargalo

Essa talvez seja uma das maiores descobertas da carreira.

Na maioria dos grandes ambientes, CPU não é o primeiro problema.

Os verdadeiros inimigos costumam ser:

  • SQL ruim

  • índices mal projetados

  • bloqueios

  • espera por disco

  • leitura desnecessária

  • cache inexistente

  • excesso de conexões

  • modelo de dados inadequado

  • programas fazendo milhares de acessos repetidos

É como tentar atravessar a galáxia usando um foguete com o freio de mão puxado.


Primeira Lei Galáctica do Bellacosa

Nunca compre hardware antes de descobrir onde está o gargalo.

Os mestres do desempenho investigam.

Não adivinham.


Capítulo 2 — Scale Up: Alimentando o Dragão

A primeira técnica chama-se Vertical Scaling.

Ou simplesmente:

Scale Up.

Imagine um servidor.

Ele possui:

8 CPUs

64 GB RAM

2 TB SSD

O sistema cresce.

A solução mais simples é trocar por outro servidor.

Agora temos:

64 CPUs

1 TB RAM

40 TB NVMe

Nada muda para o programador.

Os programas COBOL continuam funcionando.

O endereço do Db2 continua igual.

O CICS nem percebe.

É como trocar uma Kombi por um caminhão.


Vantagens

É simples.

É rápido.

Não exige alterar programas.

Não exige redistribuir dados.

Não exige reescrever aplicações.


Mas existe um problema...

Não existe computador infinito.

Mais cedo ou mais tarde você chega ao maior equipamento disponível.

E então?


Curiosidade Galáctica

Os mainframes IBM são praticamente os campeões mundiais do Scale Up.

Eles conseguem crescer verticalmente em níveis que servidores convencionais dificilmente alcançam.

É uma das razões pelas quais bancos e seguradoras continuam utilizando IBM Z.


Capítulo 3 — Scale Out: Construindo uma Frota Espacial

Agora imagine outra filosofia.

Ao invés de um computador gigantesco...

Temos cem computadores menores.

Todos trabalhando juntos.

Esse é o Horizontal Scaling.

Também chamado:

Scale Out.

Agora o banco não mora em apenas uma máquina.

Ele mora em várias.

É como transformar um único cargueiro imperial em uma frota inteira.


Onde isso aparece?

MongoDB

Cassandra

CockroachDB

Yugabyte

Redis Cluster

ElasticSearch

Kafka

Google

Netflix

Amazon

Facebook

Todos trabalham distribuindo carga.


A vantagem

Quando precisa crescer...

Basta adicionar mais nós.


A desvantagem

Tudo fica absurdamente mais complicado.

Agora aparecem palavras assustadoras.

Leader Election.

Consensus.

Replication.

Consistency.

Split Brain.

Network Partition.

Failover.

Latência.

É aqui que muitos arquitetos passam a dormir menos.


Easter Egg nº 1

Assim como Marvin, o robô depressivo do Guia do Mochileiro, muitos bancos distribuídos também passam boa parte do tempo "pensando" se todos os nós ainda concordam entre si.

Essa conversa silenciosa entre servidores é muito mais frequente do que imaginamos.


Capítulo 4 — Replicação: Clones Não São Ficção Científica

Imagine que existe apenas um banco.

Todo mundo consulta.

Todo mundo grava.

Logo ele fica sobrecarregado.

Então surge uma ideia genial.

Copiar o banco.

Criamos:

Banco Principal

Replica 1

Replica 2

Replica 3

Agora milhões de usuários podem consultar as réplicas.

Enquanto apenas um servidor recebe gravações.


O segredo

Na maioria dos sistemas:

Leitura representa mais de 90%.

Escrita representa apenas uma pequena parcela.

Então distribuir leituras faz enorme diferença.


Tipos

Leader-Follower

Primary-Replica

Multi-Leader

Cada um possui vantagens diferentes.


Curiosidade

Em muitos bancos digitais brasileiros, milhões de consultas de saldo são atendidas por réplicas, preservando o banco principal para as operações financeiras.


Capítulo 5 — Sharding: Dividindo a Galáxia

Imagine uma tabela.

CLIENTES

2 bilhões de registros.

Não cabe mais.

Então fazemos algo brilhante.

Dividimos.

Clientes A-H

Clientes I-P

Clientes Q-Z

Ou:

Sul

Sudeste

Nordeste

Centro-Oeste

Norte

Cada servidor guarda apenas parte do universo.

Esse processo chama-se Sharding.


O desafio

Como descobrir em qual servidor determinado cliente está?

Entra em cena:

Hash.

Range.

Geo.

Tenant.

UUID.

Essa escolha parece simples.

Na prática pode definir o sucesso ou o fracasso de toda uma arquitetura.


Capítulo 6 — Cache: A Memória Fotográfica

Imagine uma página mostrando um produto.

Milhões consultam.

Pouquíssimos alteram.

Por que perguntar ao banco toda vez?

Melhor guardar em memória.

É isso que Redis faz.

É isso que Memcached faz.

É exatamente o mesmo princípio dos Buffer Pools do Db2.

Guardar o que é usado frequentemente para evitar acessar o disco.


Curiosidade Mainframe

Muitos iniciantes descobrem Redis antes de descobrirem Buffer Pools.

Na prática...

Os Buffer Pools do Db2 já aplicam esse conceito há décadas.

Mudam as tecnologias.

Os princípios permanecem.


Capítulo 7 — Read/Write Splitting

Outra técnica elegante.

Toda escrita vai para o servidor principal.

Toda leitura vai para as réplicas.

INSERT

Primary

SELECT

Replica

Resultado?

Muito menos carga.

Muito mais desempenho.


Capítulo 8 — Connection Pool

Abrir conexão custa caro.

Muito caro.

Imagine mil usuários.

Cada um abre.

Fecha.

Abre.

Fecha.

Abre.

Fecha.

O banco enlouquece.

Connection Pool mantém conexões abertas.

As aplicações apenas reutilizam.

É como um elevador.

Ninguém constrói um elevador novo toda vez que quer subir um andar.


Capítulo 9 — Índices: O Índice do Guia do Mochileiro

Imagine procurar uma palavra em um livro de mil páginas.

Sem índice.

Você folheia tudo.

Com índice.

Vai direto para a página.

É exatamente isso que um índice faz.


Mas cuidado

Todo índice precisa ser atualizado.

Mais índices significam:

INSERT mais lento.

UPDATE mais lento.

DELETE mais lento.

Existe equilíbrio.


Easter Egg nº 2

No universo de Douglas Adams existe um peixe chamado Babel Fish.

No universo dos bancos existe algo parecido.

Chama-se Índice.

Ele traduz bilhões de registros em poucos milissegundos.


Capítulo 10 — Arquivamento

Nem tudo precisa permanecer no banco principal.

Pedidos de dez anos atrás.

Logs antigos.

Eventos históricos.

Podem ir para armazenamento frio.

S3.

Glacier.

Arquivos históricos.

No mainframe, tabelas particionadas e estratégias de arquivamento mantêm o ambiente produtivo enxuto sem perder a rastreabilidade.


Capítulo 11 — Otimização de SQL

Talvez o maior superpoder de todos.

Um SQL ruim pode consumir minutos.

O mesmo SQL otimizado pode responder em milissegundos.

Ferramentas como EXPLAIN PLAN, Visual Explain e o EXPLAIN do Db2 revelam como o otimizador "pensa". Ler um plano de acesso é quase como acompanhar um mapa estelar: você enxerga por onde a consulta está viajando, onde ela desperdiça energia e onde encontra atalhos.

Pequenas mudanças fazem enorme diferença:

  • evitar SELECT *

  • filtrar cedo

  • usar índices adequados

  • reduzir JOINs desnecessários

  • manter estatísticas atualizadas com RUNSTATS

  • reorganizar tabelas quando necessário com REORG

Muitas vezes, um único índice ou uma condição de busca mais seletiva elimina milhões de leituras de páginas.


Capítulo 12 — Database Federation

Existe uma diferença importante entre dividir dados e dividir responsabilidades.

No Sharding, uma mesma tabela é repartida.

Na Federação, cada domínio possui seu próprio banco.

Financeiro.

RH.

CRM.

Logística.

Cada equipe evolui independentemente.

É o equivalente arquitetural de uma federação planetária: cada planeta governa seus próprios assuntos, mas todos cooperam quando necessário.


Capítulo 13 — Bancos Distribuídos: A Federação Interplanetária

Sistemas como Cassandra, CockroachDB, YugabyteDB e DynamoDB nasceram para funcionar em múltiplas regiões geográficas.

Eles já incorporam mecanismos para:

  • replicação automática;

  • tolerância a falhas;

  • eleição de líderes;

  • sincronização entre nós;

  • recuperação após falhas;

  • distribuição transparente dos dados.

A ideia é que a perda de um servidor — ou até de um data center inteiro — não interrompa o serviço.

É um objetivo ambicioso e exige algoritmos sofisticados, como Raft e Paxos, que coordenam o consenso entre máquinas espalhadas pelo mundo.


O Que Isso Tem a Ver com COBOL?

Aqui está o grande segredo.

Muitos iniciantes acreditam que essas discussões pertencem apenas ao universo da nuvem.

Não pertencem.

Um programa COBOL faz:

EXEC SQL
   SELECT ...
END-EXEC.

Ele não sabe se o dado veio:

  • do servidor principal;

  • de uma réplica;

  • de um cache;

  • de uma partição;

  • de um cluster distribuído.

Quem decide isso é a arquitetura.

É por isso que um bom programador COBOL não estuda apenas a linguagem. Ele entende como o ecossistema inteiro funciona.


O Paralelo com o IBM Z

No IBM Z, muitos desses conceitos existem há décadas, ainda que com nomes diferentes.

Os Buffer Pools funcionam como um cache inteligente.

O Parallel Sysplex permite múltiplas imagens do z/OS trabalhando juntas.

O Data Sharing do Db2 distribui a carga entre membros do grupo.

Ferramentas de replicação sincronizam bancos locais e remotos.

WLM (Workload Manager) distribui recursos conforme a prioridade do negócio.

Ou seja, quando alguém fala em "arquitetura moderna", um veterano de mainframe costuma sorrir discretamente. Diversas dessas ideias já eram aplicadas em ambientes IBM muito antes de se tornarem populares na computação em nuvem.


As Doze Ferramentas do Mochileiro de Banco de Dados

Antes de encerrar sua viagem, coloque estes itens na mochila:

  1. Scale Up — quando um servidor maior resolve.

  2. Scale Out — quando vários servidores trabalham juntos.

  3. Replicação — distribua leituras e aumente a disponibilidade.

  4. Sharding — divida dados gigantes em partes administráveis.

  5. Cache — mantenha o que é mais usado perto do processador.

  6. Read/Write Splitting — especialize quem lê e quem grava.

  7. Connection Pooling — reutilize conexões, não desperdice recursos.

  8. Índices Inteligentes — acelere buscas sem exagerar.

  9. Arquivamento — mantenha o banco principal enxuto.

  10. SQL Otimizado — o ganho mais barato e frequentemente o mais impactante.

  11. Federação — separe domínios de negócio.

  12. Bancos Distribuídos — pense globalmente quando o negócio exigir.


Curiosidades Galácticas

  • O primeiro gargalo raramente é a CPU; na maioria das vezes, é uma decisão arquitetural tomada anos antes.

  • O Db2 possui um dos otimizadores de consultas mais sofisticados do mercado, capaz de escolher automaticamente entre diferentes planos de acesso.

  • Em muitos sistemas corporativos, mais de 90% das operações são leituras, justificando o uso intenso de réplicas e caches.

  • Um índice pode acelerar uma consulta em milhares de vezes, mas também aumentar o custo de cada atualização da tabela.

  • Grandes empresas costumam combinar várias dessas técnicas simultaneamente: cache, replicação, particionamento, arquivamento e otimização de consultas trabalham em conjunto.


Última Página do Guia

No fim da jornada, o Padawan pergunta ao Mestre Bellacosa:

— Afinal... qual é a melhor técnica de escalabilidade?

O mestre sorri, toma mais um gole de café e responde:

— A melhor técnica é descobrir primeiro qual problema você realmente tem. Não existe algoritmo mágico, servidor infinito ou banco de dados perfeito. Existe observação, medição, entendimento da carga de trabalho e escolhas conscientes.

O Padawan olha para o 3270, vê o Db2 respondendo em poucos milissegundos e finalmente compreende.

Escalar um banco de dados não é construir o maior computador da galáxia.

É construir uma arquitetura capaz de continuar funcionando quando a galáxia inteira decidir acessá-la ao mesmo tempo.

E, como diria o Guia do Viajante das Galáxias, nunca se esqueça da sua toalha. No universo da engenharia de software, ela pode não limpar Buffer Pools nem reorganizar índices, mas certamente lembrará você de manter a calma enquanto procura o verdadeiro gargalo escondido entre bilhões de registros.


domingo, 8 de novembro de 2020

👻💀 Bellacosa Otaku Blog — Parte 33: Expressões de Horror, Terror e Fenômenos Sobrenaturais nos Animes 💀👻

 

Bellacosa Mainframe expressões de horror em anime

👻💀 Bellacosa Otaku Blog — Parte 33: Expressões de Horror, Terror e Fenômenos Sobrenaturais nos Animes 💀👻


🌌 O idioma do medo e do sobrenatural nos animes

(Versão Bellacosa: sombras, gritos, arrepios e forças que desafiam a realidade.)

Nos animes de horror, suspense sobrenatural e terror psicológico, o japonês se torna uma linguagem de medo, tensão e mistério absoluto.
Cada palavra amplifica a sensação de perigo, assombração e pavor, deixando o espectador imerso em mundos assustadores.
Vamos explorar as mais icônicas! 🕯️


😱 1. 幽霊 (yūrei)

Tradução: “Fantasma / espírito.”
👉 Palavra clássica para presenças sobrenaturais que assombram personagens.

📺 Anime vibe: Ghost Hunt, Another, Shiki.
💬 Exemplo: “Yūrei apareceu… ninguém está seguro!” 👻


🕳️ 2. 呪い (noroi)

Tradução: “Maldição.”
👉 Usada para feitiços malignos, assombrações ou consequências sobrenaturais.

📺 Anime vibe: Jujutsu Kaisen, The Curse of Ana.
💬 Exemplo: “Noroi lançado… o destino deles está selado.” 💀


🌑 3. 霊 (rei)

Tradução: “Espírito / alma.”
👉 Palavra para entidades espirituais ou presenças invisíveis.

📺 Anime vibe: Bleach, Ghost Hunt.
💬 Exemplo: “Rei aparece… algo estranho está acontecendo aqui.” 👁️


⚡ 4. 恐怖 (kyōfu)

Tradução: “Medo / terror.”
👉 Expressa o sentimento de pavor intenso diante do desconhecido.

📺 Anime vibe: Another, Paranoia Agent.
💬 Exemplo: “Kyōfu tomou conta… não consigo respirar!” 😨


🕷️ 5. 不気味 (bukimi)

Tradução: “Assustador / sinistro.”
👉 Palavra usada para criar atmosfera de mistério e desconforto.

📺 Anime vibe: Shiki, Paranoia Agent.
💬 Exemplo: “Bukimi… algo não está certo neste lugar.” 🌫️


👁️ 6. 幻 (maboroshi)

Tradução: “Ilusão / visão fantasmagórica.”
👉 Usada para fenômenos sobrenaturais que enganam os sentidos.

📺 Anime vibe: Paranoia Agent, Ghost Hunt.
💬 Exemplo: “Maboroshi… eu juro que vi algo se mover!” 👻


🌀 7. 闇 (yami)

Tradução: “Escuridão / trevas.”
👉 Representa tanto o físico quanto o psicológico, criando clima de tensão.

📺 Anime vibe: Tokyo Ghoul, Shiki.
💬 Exemplo: “Yami se aproxima… não há para onde correr.” 🌑


💀 8. 死 (shi)

Tradução: “Morte.”
👉 Palavra direta que intensifica a ameaça ou fatalidade em cenários de terror.

📺 Anime vibe: Another, Higurashi no Naku Koro ni.
💬 Exemplo: “Shi está perto… precisamos fugir!” ⚰️


🌪️ 9. 悪霊 (akuryō)

Tradução: “Espírito maligno / entidade demoníaca.”
👉 Termo para forças sobrenaturais hostis e perigosas.

📺 Anime vibe: Jujutsu Kaisen, Ghost Hunt.
💬 Exemplo: “Akuryō despertou… cuidado!” 👹


🌫️ 10. 不可解 (fukakai)

Tradução: “Inexplicável / misterioso.”
👉 Expressa fenômenos ou eventos que desafiam a lógica e compreensão.

📺 Anime vibe: Shiki, Paranoia Agent.
💬 Exemplo: “Fukakai… ninguém consegue entender o que aconteceu.” 🌌


🏮 Curiosidades Bellacosa:

  • Palavras como yūrei, rei e akuryō são essenciais para criar presenças sobrenaturais intensas e assustadoras.

  • Termos de medo e atmosfera (kyōfu, bukimi, yami) tornam as cenas tensas e arrepiantes.

  • Conceitos de fenômenos inexplicáveis e fatalidade (maboroshi, fukakai, shi) reforçam o terror psicológico. 😱


🌟 Dica Bellacosa:

  • Observe sombras, silêncio e efeitos sonoros: no terror, o impacto vem tanto do contexto quanto da palavra falada.

  • Frases curtas e diretas (noroi, akuryō, shi) aumentam a sensação de ameaça imediata.

  • Memorizar essas expressões ajuda a sentir o medo, mistério e tensão sobrenatural nos animes. 👻


👉 Resumo

O Bellacosa Otaku Blog Parte 33 representa mais um capítulo de uma jornada dedicada à cultura otaku, aos animes, aos mangás e às inúmeras curiosidades que cercam o entretenimento japonês. Assim como em outras edições da série, o conteúdo reúne reflexões, recomendações e observações sobre elementos que ajudaram a transformar os animes em um fenômeno cultural global.

O universo otaku é marcado por sua enorme diversidade. Existem obras voltadas para aventura, romance, ficção científica, fantasia, horror, drama psicológico e até discussões filosóficas profundas. Essa variedade permite que diferentes públicos encontrem histórias capazes de gerar identificação emocional e reflexão.

Além dos animes, a cultura japonesa também influencia música, gastronomia, moda, literatura, videogames e comportamento social. Muitos fãs acabam expandindo seus interesses para além das animações, explorando aspectos históricos e culturais do Japão.

Outro elemento importante é a nostalgia. Diversas séries clássicas continuam conquistando novas gerações, mostrando como determinadas obras permanecem relevantes mesmo décadas após seu lançamento. Ao mesmo tempo, novos animes surgem constantemente, renovando tendências e ampliando o alcance da cultura geek.

Mais do que simples entretenimento, o universo otaku funciona como um espaço de descoberta cultural, criatividade e troca de experiências entre fãs, mantendo viva uma comunidade apaixonada por histórias, personagens e mundos inesquecíveis.



🌸 Conclusão Bellacosa:

As expressões de horror e fenômenos sobrenaturais transformam o japonês em uma linguagem de pavor, mistério e tensão extrema.
Cada palavra, sombra ou suspiro aproxima o espectador do medo e do sobrenatural que os personagens enfrentam.

“Yūrei, noroi e bukimi… no mundo dos espíritos, o medo é real.” 💀👻



 

Acredito no Dr. Thomas 45 para prefeito de Itatiba

Itatiba acredita em mudanças. Por mais empregos, escolhemos seguir Dr. Thomas 45 #drthomas45 #itatibanossacidade #empregos #educacao #segurança #novotempo #por2021melhor #drthomas45itatiba #progresso #democracia #uniaofazforca #itatiba2021 #lazer #cultura #biblioteca #sp #itatibense #ecologia #saude #paz #eleicao

sábado, 7 de novembro de 2020

☕😌👁️ OS PERSONAGENS QUE FECHAM OS OLHOS E ENXERGAM TUDO — O CÓDIGO SECRETO DOS ANIMES JAPONESES QUE O OCIDENTE QUASE NUNCA ENTENDE

 

Bellacosa Mainframe e o fechar dos olhos em anime

☕😌👁️ OS PERSONAGENS QUE FECHAM OS OLHOS E ENXERGAM TUDO — O CÓDIGO SECRETO DOS ANIMES JAPONESES QUE O OCIDENTE QUASE NUNCA ENTENDE

Se existe um personagem capaz de deixar um espectador experiente desconfortável, não é necessariamente o guerreiro musculoso.

Não é o espadachim lendário.

Não é o mago mais poderoso.

Muitas vezes é aquele sujeito aparentemente inofensivo.

O que sorri o tempo inteiro.

O que mantém os olhos fechados.

O que fala baixo.

O que raramente demonstra emoções negativas.

E que, por alguma razão, parece sempre saber exatamente o que está acontecendo.

Quem assiste anime há alguns anos certamente já encontrou esse arquétipo.

Brock em Pokémon.

Gin Ichimaru em Bleach.

Lau em Black Butler.

Ling Yao em Fullmetal Alchemist.

Diversos mestres marciais.

Professores.

Conselheiros.

Monjes.

E estrategistas.

Existe algo de estranho nesses personagens.

Eles mantêm os olhos fechados durante episódios inteiros.

Mas nunca tropeçam.

Nunca erram um golpe.

Nunca parecem desorientados.

Pelo contrário.

Frequentemente são os indivíduos mais observadores da história.

A pergunta então surge naturalmente:

Como alguém que aparentemente não está olhando consegue enxergar mais do que todo mundo?

A resposta é fascinante.

E envolve psicologia, cultura japonesa, história da arte oriental, linguagem corporal, simbolismo religioso e até conceitos que lembram administração de ambientes críticos de TI.

Pegue seu café.

Hoje vamos abrir mais um dump da mente japonesa.


O paradoxo visual

No Ocidente, abrir os olhos costuma significar atenção.

Fechar os olhos costuma significar distração.

Sono.

Relaxamento.

Desinteresse.

Fraqueza.

Por isso, quando um espectador ocidental vê um personagem de olhos fechados, sua interpretação inicial costuma ser:

"Esse cara não está prestando atenção."

Mas nos animes acontece exatamente o contrário.

Quanto mais fechados os olhos estão...

Mais perigoso o personagem parece.

E isso não é acidente.

É um código visual.

Uma linguagem silenciosa.

Uma convenção narrativa que o público japonês aprendeu a interpretar há décadas.


O operador veterano do datacenter

Imagine uma sala de operações.

Os novatos estão correndo.

O console dispara mensagens.

Alertas aparecem.

Todo mundo fala ao mesmo tempo.

No canto da sala existe um operador com trinta anos de experiência.

Ele não corre.

Não levanta a voz.

Não demonstra preocupação.

Apenas observa.

Às vezes parece até desinteressado.

Então alguém pergunta:

— O que você acha?

E ele responde:

— O problema começou há duas horas. É o storage.

Silêncio absoluto.

Como ele sabia?

Porque enquanto todos olhavam para os sintomas, ele observava o comportamento.

Esse é exatamente o arquétipo do personagem de olhos fechados.

Ele não precisa enxergar mais.

Ele entende mais.


O significado oriental dos olhos fechados

No pensamento ocidental, ver está associado aos olhos.

No pensamento oriental, especialmente influenciado pelo budismo, taoismo e confucionismo, a percepção vai muito além da visão física.

Existe uma valorização enorme da observação interior.

Da contemplação.

Da percepção intuitiva.

Da compreensão silenciosa.

Por isso muitos sábios orientais são representados com:

  • olhos semicerrados;

  • olhar para baixo;

  • expressão tranquila;

  • semblante sereno.

A mensagem é simples:

Quem compreende profundamente não precisa olhar desesperadamente para tudo.


O mestre que não precisa provar nada

Uma característica recorrente desses personagens é a ausência de ansiedade.

Eles não precisam demonstrar competência.

Não precisam convencer ninguém.

Não precisam chamar atenção.

Isso é muito diferente do herói jovem.

O protagonista normalmente grita.

Corre.

Erra.

Tenta provar seu valor.

Já o personagem de olhos fechados parece confortável consigo mesmo.

Como se já tivesse visto aquela situação centenas de vezes.

Como se estivesse vários capítulos à frente dos demais.


Brock: o caso mais amigável

Talvez o exemplo mais conhecido do mundo seja Brock.

Milhões de crianças cresceram assistindo Pokémon.

E poucas delas pararam para refletir sobre algo curioso.

Brock passa praticamente a série inteira de olhos fechados.

Mesmo assim:

  • identifica Pokémon;

  • encontra trilhas;

  • cozinha;

  • luta;

  • percebe perigos.

Seu design comunica confiança.

Estabilidade.

Experiência.

Enquanto Ash é impulsivo, Brock é equilibrado.

Enquanto Ash aprende, Brock orienta.

Visualmente, os olhos fechados ajudam a transmitir maturidade.

Ele não precisa ficar impressionado com tudo.

Já viu aquilo antes.


Quando o sorriso vira ameaça

Agora chegamos ao lado sombrio do arquétipo.

Gin Ichimaru.

Poucos personagens ilustram melhor esse conceito.

Durante boa parte de Bleach ele mantém:

  • sorriso constante;

  • voz calma;

  • olhos fechados.

O resultado é perturbador.

Porque o cérebro humano utiliza os olhos para validar emoções.

Quando alguém sorri, normalmente verificamos os olhos.

Se os olhos acompanham o sorriso, percebemos sinceridade.

Se não acompanham, desconfiamos.

Com Gin, não temos acesso a essa informação.

Seu sorriso torna-se impossível de interpretar.

Ele está feliz?

Mentindo?

Planejando algo?

Divertindo-se?

Preparando uma traição?

Não sabemos.

E justamente por isso ele se torna tão inquietante.


A psicologia do desconforto

Existe uma razão científica para isso.

O cérebro humano evoluiu para interpretar rostos.

Especialmente olhos.

Quando essa informação desaparece, surge um fenômeno chamado ambiguidade social.

Não conseguimos determinar intenções.

E quando não conseguimos determinar intenções...

Assumimos risco.

É um mecanismo ancestral de sobrevivência.

Durante milhares de anos, não entender o comportamento de alguém podia significar morte.

Por isso personagens de olhos fechados costumam gerar estranheza.

Nosso cérebro não consegue classificá-los facilmente.


O perigo da calma absoluta

Existe outro detalhe interessante.

Na vida real, pessoas sob pressão demonstram sinais.

Mudanças de expressão.

Movimentos corporais.

Tensão facial.

Alterações de voz.

Personagens de olhos fechados frequentemente eliminam esses sinais.

Eles parecem estáveis em qualquer circunstância.

Imagine dois guerreiros.

O primeiro está gritando.

Suando.

Mostrando medo.

O segundo permanece sorrindo com os olhos fechados.

Quem parece mais perigoso?

Normalmente o segundo.

Porque ele transmite controle absoluto.


A metáfora do processamento invisível

No universo Bellacosa Mainframe, gosto de comparar esses personagens a processos batch.

Você não vê atividade.

Não vê movimentação.

Não vê interação.

Mas internamente milhões de instruções estão sendo executadas.

O operador iniciante confia apenas no que aparece na tela.

O veterano sabe que o processamento real ocorre nos bastidores.

Os personagens de olhos fechados representam exatamente isso.

A mente deles está trabalhando constantemente.

Mesmo quando parecem passivos.


O arquétipo do estrategista

Observe quantos estrategistas de anime utilizam expressões semelhantes.

Eles raramente exibem emoções intensas.

Preferem observar.

Coletar informações.

Construir hipóteses.

Analisar comportamentos.

Enquanto outros personagens enxergam acontecimentos.

Eles enxergam padrões.

E existe uma enorme diferença entre essas duas coisas.


A influência dos monges e sábios orientais

Grande parte dessa representação vem da iconografia religiosa asiática.

Monges budistas frequentemente são retratados com olhos parcialmente fechados.

Não porque estejam dormindo.

Mas porque estão concentrados.

Meditando.

Observando internamente.

O olhar recolhido simboliza domínio da mente.

Autocontrole.

Sabedoria.

Distanciamento emocional.

Muitos personagens de anime herdaram diretamente essa tradição visual.


O poder de esconder informações

Narrativamente falando, existe outra vantagem.

Quando o autor esconde os olhos do personagem, ele esconde informações do público.

Isso permite criar suspense.

Mistério.

Ambiguidade.

Imagine que Gin Ichimaru tivesse olhos totalmente visíveis o tempo inteiro.

Muitas cenas perderiam impacto.

O público poderia interpretar melhor suas emoções.

Ao ocultar essa informação, o autor mantém o espectador em dúvida.

E a dúvida gera interesse.


O momento em que os olhos se abrem

Talvez o recurso mais poderoso de todos seja justamente o contrário.

O momento em que esses personagens finalmente abrem os olhos.

Se você assiste anime há muito tempo, sabe exatamente do que estou falando.

Quando acontece, a cena ganha peso instantâneo.

O público entende imediatamente:

Algo sério está acontecendo.

É como um alerta vermelho em produção.

Como uma mensagem crítica no console.

Como um dump inesperado em um sistema que rodava perfeitamente.

A abertura dos olhos funciona como um evento narrativo.


O equivalente emocional do IPL

Em ambientes mainframe existe um momento raro.

O IPL.

A reinicialização completa do sistema.

É um acontecimento importante.

Algo que altera o estado do ambiente.

Abrir os olhos de um personagem que normalmente os mantém fechados produz efeito semelhante.

A narrativa muda de estado.

O espectador entende que a situação atingiu um novo nível.


O observador invisível

Outra característica comum desses personagens é perceber detalhes que ninguém nota.

Isso ocorre porque eles representam um ideal muito valorizado na cultura japonesa:

a observação silenciosa.

Ao contrário da cultura ocidental, que frequentemente recompensa quem fala mais, a cultura japonesa tradicional valoriza fortemente quem observa antes de agir.

O personagem de olhos fechados é a personificação desse princípio.

Ele escuta.

Analisa.

Compreende.

Só depois fala.


O que isso ensina sobre comportamento humano

Talvez o aspecto mais interessante desse arquétipo seja sua conexão com a realidade.

Na vida profissional encontramos pessoas semelhantes.

Os indivíduos mais competentes nem sempre são os mais barulhentos.

Nem sempre são os mais visíveis.

Nem sempre são os mais agressivos.

Frequentemente são aqueles que:

  • escutam mais;

  • falam menos;

  • observam padrões;

  • compreendem sistemas.

Enquanto todos olham para eventos isolados, eles observam relações.

Enquanto todos enxergam problemas, eles enxergam causas.


O Japão e o respeito pelo silêncio

Existe ainda um elemento cultural importante.

O silêncio possui um valor muito diferente no Japão.

No Ocidente, silêncio frequentemente gera desconforto.

No Japão, silêncio pode representar:

  • respeito;

  • reflexão;

  • sabedoria;

  • autocontrole.

Por isso muitos personagens considerados inteligentes falam pouco.

A ausência de palavras comunica profundidade.

A ausência de reações comunica equilíbrio.

Os olhos fechados reforçam exatamente essa mensagem.


Por que adoramos esses personagens?

Porque eles representam algo que admiramos.

Controle emocional.

Confiança.

Experiência.

Sabedoria.

Capacidade de compreender situações complexas.

No fundo, todos gostaríamos de enfrentar crises com a serenidade desses personagens.

Gostaríamos de entrar em uma reunião difícil sem ansiedade.

Gostaríamos de lidar com problemas sem perder o controle.

Gostaríamos de observar antes de reagir.

Esses personagens funcionam como uma idealização dessa competência.


Considerações finais

Quando vemos um personagem de anime caminhando calmamente com os olhos fechados, não estamos vendo apenas um desenho estilizado.

Estamos vendo séculos de simbolismo cultural condensados em uma única expressão facial.

Estamos vendo referências ao budismo.

À meditação.

À observação silenciosa.

À sabedoria oriental.

À psicologia humana.

À narrativa visual.

E talvez essa seja a verdadeira genialidade dos animes.

Eles conseguem transformar detalhes minúsculos em mensagens poderosas.

Um sorriso.

Uma sombra.

Um reflexo.

Um olhar.

Ou até mesmo a ausência dele.

Da próxima vez que encontrar um personagem sorrindo com os olhos fechados, tome cuidado.

Na maioria dos animes, isso raramente significa ingenuidade.

Normalmente significa algo muito mais perigoso.

Significa que ele já entendeu o sistema inteiro.

Enquanto os outros personagens ainda estão tentando descobrir onde fica o botão ENTER.


segunda-feira, 2 de novembro de 2020

CICS Conversacional e Pseudo-Conversacional - Parte III

 

Bellacosa Mainframe e a conversação em cics parte III

☕ Um Café no Bellacosa Mainframe

CICS Conversacional e Pseudo-Conversacional

Parte 3 — Channels, Containers, BMS Avançado, APIs, Observabilidade e o Futuro do CICS

"Salve novamente, jovem Padawan Mainframe! Já entendemos por que a pseudo-conversação venceu, como a COMMAREA funciona e como o CICS se integrou ao mundo REST. Agora vamos explorar o lado mais moderno do CICS, descobrir como ele conversa com aplicações em nuvem, conhecer boas práticas utilizadas em bancos e seguradoras e entender por que muitos engenheiros consideram o CICS uma das obras-primas da engenharia de software."

Pegue seu terceiro café, deixe o CEDF ligado, abra uma aba do OMEGAMON, outra do SDSF e vamos continuar.


O problema da COMMAREA

Durante décadas a COMMAREA foi suficiente.

64 KB.

Poucos campos.

Poucos estados.

Poucos dados.

Era perfeito.

Mas o mundo mudou.

Hoje temos:

JSON

JWT

XML

SOAP

REST

Objetos complexos

Payloads gigantes


A chegada dos Channels

A IBM precisava resolver isso.

E resolveu.

CICS TS 3.1

Introduziu:

Channels

Containers


O que é um Channel?

Pense em um diretório.

CLIENTE
│
├── CPF
├── ENDERECO
├── LIMITE
├── HISTORICO
└── TOKEN

O Channel funciona exatamente assim.

Um agrupador.

Pode conter vários Containers.


O que é um Container?

Container é um objeto.

Armazena informações.

Pode conter:

Texto

XML

JSON

Estruturas COBOL

Blobs

Imagens

Arquivos


Comparativo

TecnologiaCapacidade
COMMAREA64 KB
TSQMB
ContainerGB
DB2TB

Exemplo COBOL

Criando.


EXEC CICS PUT CONTAINER

CONTAINER('CLIENTE')

CHANNEL('CADASTRO')

FROM(WS-DADOS)

FLENGTH(WS-TAM)

END-EXEC.



Recuperando.


EXEC CICS GET CONTAINER

CONTAINER('CLIENTE')

CHANNEL('CADASTRO')

INTO(WS-DADOS)

END-EXEC.



BMS continua vivo?

Muito.

Talvez mais vivo do que muita gente imagina.


Grandes bancos.

Seguradoras.

Cartões.

Previdência.

Companhias aéreas.

Utilities.

Governo.


BMS avançado

Poucos desenvolvedores usam.


SEND MAP ACCUM

Acumula telas.

Exemplo


EXEC CICS SEND MAP

ACCUM

END-EXEC



SEND PAGE

Paginação.


SEND CONTROL

Controle terminal.


ERASEAUP

Limpa apenas campos editáveis.


CURSOR

Posicionamento dinâmico.


Exemplo

Cursor no CPF.



MOVE -1 TO CPFL



EXEC CICS SEND

MAP('TELA1')

CURSOR

END-EXEC




APIs no CICS

Aqui muita gente se surpreende.

O CICS é praticamente um Application Server.


Suporta.

HTTP

HTTPS

SOAP

REST

MQ

TCP/IP

JMS

JSON

XML


Exemplo moderno

Aplicativo Android.

API Gateway

z/OS Connect

CICS

COBOL

DB2


z/OS Connect

Talvez uma das melhores ideias da IBM.

Transforma.

COBOL

em

API REST.


Sem reescrever.

Sem Java.

Sem Node.

Sem Python.


Exemplo.

Cliente faz:

GET /clientes/123

Internamente.

CICS chama.


PERFORM CONSULTA-DB2


Retorna.

{

"id":123,

"nome":"Bellacosa"

}


Web Open Interface

WOI.

Pouco conhecido.

Muito poderoso.

Permite integração.

HTTP.

TCP.

Sockets.


Event Processing

Outro recurso fantástico.

CICS captura eventos.

Exemplo.

Cliente alterou endereço.


Evento.

Publica MQ.


Outro sistema consome.


Observabilidade

Década de 80.

Console.

Dump.

IPCS.


Hoje.

OpenTelemetry.

Prometheus.

Grafana.

OMEGAMON.

Instana.

Elastic.


Métricas interessantes

Task Time.

CPU.

Response.

DB2.

MQ.

VSAM.


O CICS morreu?

Pergunta clássica.

Resposta curta.

Não.


Resposta longa.

Muito pelo contrário.


Ele evoluiu.

Muito.


Anos 70

3270

Anos 80

BMS

Anos 90

MQ

2000

SOAP

2010

REST

2020

Containers

2025

OpenTelemetry

IA

APIs

Cloud híbrida


Problemas comuns

COMMAREA gigante

Erro clássico.


Não usar pseudo

Aplicação lenta.


Múltiplos SEND

Desnecessário.


Não verificar RESP

Perigoso.


MDT ligado em tudo

Tráfego excessivo.


Dicas Bellacosa Mainframe

Utilize sempre

DATAONLY.


Sempre valide

RESP.


Use CEDF


Use CECI


Use Channels

Projetos novos.


Mantenha COMMAREA pequena


Nomeie MAPSET adequadamente

Exemplo.


CLI001


CLI002


CLI003



Easter Eggs Mainframe

Programadores antigos adoravam esconder mensagens.

Exemplo.



* MAY THE COBOL BE WITH YOU




Outro clássico.



* IF IT WORKS



* DON'T TOUCH




Mais um.



* WRITTEN 1987



* STILL RUNNING




Curiosidade

Diversos sistemas escritos em 1986.

Rodam hoje.

No z16.

No z17.

Praticamente sem alterações.

Trocaram.

CPU.

Storage.

Rede.

Interface.

Mas o COBOL.

Continua.

O CICS.

Continua.

O DB2.

Continua.

E milhões de transações continuam acontecendo diariamente.


Considerações finais

Aprender CICS conversacional e pseudo-conversacional é muito mais do que aprender comandos.

É entender como a IBM resolveu problemas de escalabilidade décadas antes da popularização da computação em nuvem.

É descobrir que conceitos como:

Stateless

Session Management

API Gateway

Observabilidade

Microserviços

Persistência de contexto

Já estavam presentes, de certa forma, em arquiteturas concebidas nos anos 70.

Talvez seja por isso que o CICS continue sendo uma das tecnologias mais fascinantes do IBM Z.

Porque ele não apenas sobreviveu ao tempo.

Ele evoluiu com ele.

E provavelmente continuará executando aplicações críticas quando muitos frameworks modernos já forem apenas uma nota de rodapé na história da computação.

No IBM Z, cada transação conta uma história. Cada COMMAREA guarda uma memória. E cada RETURN é apenas uma promessa de que a próxima task continuará exatamente de onde paramos.

Até o próximo café no Bellacosa Mainframe.


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