Translate

Mostrar mensagens com a etiqueta modernizacao mainframe. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta modernizacao mainframe. Mostrar todas as mensagens

quinta-feira, 18 de junho de 2026

Git, GitHub e DevOps para Profissionais IBM Z Por que COBOL Developers, Sysprogs e Sysadmins precisam dominar Git em 2026

 

Bellacosa Mainframe e o Git Github e DevOps para Mainframers

☕🚀 Um Café no Bellacosa Mainframe

Git, GitHub e DevOps para Profissionais IBM Z

Por que COBOL Developers, Sysprogs e Sysadmins precisam dominar Git em 2026

"Deleted your code by mistake? Without Git, it's gone forever."

Confesso que, ao observar aqueles infográficos coloridos sobre Git e DevOps, senti algo curioso.

Em poucos segundos eles conseguiram condensar uma transformação tecnológica que levou quase quarenta anos para acontecer.

Para muitos jovens desenvolvedores, Git sempre existiu.

Para nós, veteranos do Mainframe, sabemos que não foi assim.

Nós vivemos outra realidade.

Vivemos a era dos datasets PDS.

Vivemos a era dos backups manuais.

Vivemos a era do Panvalet.

Do Librarian.

Do Endevor.

Do Changeman.

Do SCLM.

Do ISPW.

Do membro COBOL001.

Do COBOL001.BKP.

Do COBOL001.OLD.

Do COBOL001.TESTE.

Do COBOL001.NOVO.

Do COBOL001.NOVO2.

Do COBOL001.NOVO3.

E, inevitavelmente, do lendário:

COBOL001.FINAL

COBOL001.FINAL2

COBOL001.FINAL_DEFINITIVO

COBOL001.FINAL_DEFINITIVO_OK

COBOL001.AGORA_VAI

Parece piada.

Mas muitos de nós trabalhamos exatamente dessa maneira.

E foi justamente para resolver esse caos que surgiu uma das ferramentas mais importantes da história da Engenharia de Software.

Git.

E não estou exagerando.

Git talvez seja tão revolucionário para o desenvolvimento moderno quanto o JES2 foi para processamento batch, quanto o CICS foi para processamento online ou quanto o DB2 foi para persistência transacional.

Git mudou a maneira como produzimos software.

Bellacosa Mainframe e a evolucao da gestao dos fontes

A primeira geração do controle de versões

Antes do Git existiam várias abordagens.

RCS.

SCCS.

CVS.

Visual SourceSafe.

Subversion.

ClearCase.

Perforce.

Cada um tentou resolver o mesmo problema.

Como permitir que múltiplas pessoas trabalhem no mesmo código sem destruir o trabalho umas das outras?

No Mainframe, resolvemos isso de forma diferente.

Panvalet.

Librarian.

Endevor.

ISPW.

Changeman.

Essas ferramentas foram brilhantes.

E continuam sendo.

Especialmente em ambientes regulados.

Bancos.

Seguradoras.

Governo.

Utilities.

Mas havia uma diferença.

Grande parte delas era centralizada.

Tudo dependia de um servidor.

Git mudou isso.

Git é distribuído.

E isso altera completamente a arquitetura do desenvolvimento.

O que realmente é Git?

A maioria dos cursos ensina:

Git é um sistema de versionamento.

Tecnicamente está correto.

Mas é uma definição pobre.

Git é muito mais.

Git é um banco de dados.

Git é uma máquina do tempo.

Git é um mecanismo de auditoria.

Git é uma ferramenta de colaboração.

Git é um sistema de rastreabilidade.

Git é um gatilho para automação.

Git é praticamente o sistema nervoso central do DevOps moderno.

Cada commit registra:

Quem alterou.

Quando alterou.

Por que alterou.

Qual requisito atendeu.

Qual incidente corrigiu.

Qual sprint participou.

Qual história de usuário foi implementada.

Qual vulnerabilidade foi mitigada.

Git não apenas salva arquivos.

Git preserva conhecimento organizacional.

O segredo escondido do Git

Poucos profissionais conhecem sua arquitetura interna.

Git não armazena arquivos.

Git armazena objetos.

Blob.

Tree.

Commit.

Tag.

Blob representa dados.

Tree representa diretórios.

Commit representa estados.

Tag representa marcos.

Cada commit possui um hash.

Durante muitos anos SHA-1.

Hoje caminhando para SHA-256.

Um commit não é uma diferença.

Ele é uma fotografia completa.

Um snapshot.

É por isso que Git consegue voltar meses no passado.

Como um SMF para código-fonte.

Aliás...

Talvez essa seja a analogia perfeita para um sysprog.

Git é quase um SMF de desenvolvimento.

Cada alteração gera um registro permanente.

O Sysprog e o Git

Talvez alguns sysprogs pensem:

"Mas Git é coisa de desenvolvedor."

Não.

Não mais.

Hoje praticamente toda infraestrutura está migrando para Infrastructure as Code.

Parmlibs.

Policies.

WLM.

NetView.

SA z/OS.

Ansible.

Terraform.

Scripts REXX.

Procedures.

JCL.

USS scripts.

Tudo pode estar em Git.

Imagine uma alteração em uma política WLM.

Antigamente:

Editar.

Salvar.

Copiar.

Torcer.

Hoje:

Criar branch.

Modificar.

Commit.

PR.

Review.

Merge.

Deploy automatizado.

Rollback imediato.

A governança melhora absurdamente.

O Sysadmin moderno também virou desenvolvedor

Existe uma transformação interessante acontecendo.

Sysadmins estão programando.

Desenvolvedores estão automatizando infraestrutura.

DBAs escrevem pipelines.

Sysprogs utilizam APIs REST.

Todos começam a convergir.

A linha entre operações e desenvolvimento desaparece.

Foi exatamente isso que criou DevOps.

DevOps não é ferramenta

Essa talvez seja a maior confusão do mercado.

DevOps não é Jenkins.

Não é GitHub.

Não é Kubernetes.

Não é Docker.

Não é Ansible.

DevOps é cultura.

É reduzir silos.

Eliminar burocracias.

Aproximar pessoas.

Automatizar processos.

Aumentar feedback.

Reduzir tempo de entrega.

No Mainframe isso é extremamente relevante.

Porque o Mainframe sempre teve uma cultura muito compartimentalizada.

Equipe COBOL.

Equipe DB2.

Equipe CICS.

Equipe Storage.

Equipe RACF.

Equipe Sysprog.

Equipe Operações.

Equipe Middleware.

Equipe Rede.

Equipe Segurança.

DevOps propõe outra visão.

Todos trabalham pelo mesmo objetivo.

Entregar valor ao negócio.

GitHub não é Git

Muitos iniciantes confundem.

Git é tecnologia.

GitHub é plataforma.

GitLab é plataforma.

Bitbucket é plataforma.

Azure DevOps é plataforma.

Git continua sendo Git.

Independentemente da hospedagem.

GitHub adicionou uma camada extremamente poderosa.

Issues.

Actions.

Codespaces.

Security.

Dependabot.

Packages.

Container Registry.

Wiki.

Pull Requests.

Tudo integrado.

Pull Request: a maior revolução social do desenvolvimento

Eu particularmente considero Pull Request uma das melhores invenções da engenharia moderna.

Porque ela resolve algo difícil.

Compartilhar conhecimento.

Imagine um desenvolvedor COBOL júnior.

Ele escreve:

MOVE WS-CPF TO WS-TEMP

Um desenvolvedor sênior comenta:

"Poderíamos validar antes."

Outro comenta:

"Talvez usar EVALUATE seja melhor."

Outro:

"Precisamos mascarar LGPD."

Resultado?

O código melhora.

O profissional melhora.

A equipe melhora.

A empresa melhora.

PR é mentoria embutida.

O medo do merge conflict

Todo desenvolvedor já sentiu frio na barriga.

git pull

CONFLICT

Automatic merge failed.

Para iniciantes parece um desastre.

Para equipes maduras é rotina.

Conflitos indicam colaboração.

Duas pessoas trabalharam na mesma área.

Git apenas pede ajuda.

Ele não consegue decidir sozinho.

Você decide.

Git apenas documenta.

Git Flow versus GitHub Flow

Durante anos utilizamos Git Flow.

Main.

Develop.

Feature.

Release.

Hotfix.

Funciona muito bem.

Especialmente em bancos.

Porém empresas modernas começaram simplificar.

GitHub Flow.

Main.

Feature.

PR.

Merge.

Deploy.

Google foi além.

Trunk Based Development.

Branches curtíssimas.

Commits pequenos.

Integração contínua.

Menos divergência.

Menos conflitos.

Mais velocidade.

Git para COBOL Developers

Aqui entramos em um ponto fascinante.

Durante muito tempo dizia-se:

COBOL não combina com Git.

Hoje isso é completamente falso.

IBM DBB.

IBM Dependency Based Build.

zAppBuild.

Z Open Editor.

Rocket Git.

Git Integration for Endevor.

ISPW Git Integration.

IDz.

Wazi Developer.

VS Code.

Tudo isso mudou o cenário.

Hoje um desenvolvedor COBOL pode trabalhar assim.

Abrir VS Code.

Editar programa COBOL.

Executar testes.

Commit.

Push.

Criar PR.

Executar pipeline.

Compilar.

Linkedit.

DB2 Bind.

Newcopy CICS.

Deploy.

Exatamente como Java.

Exatamente como Python.

Exatamente como Node.

Jenkins: o operador automático

Se Git é o cérebro.

Jenkins é o operador.

Ele observa commits.

Dispara builds.

Executa testes.

Compila COBOL.

Gera relatórios.

Aciona SonarQube.

Publica artefatos.

Executa deploy.

Notifica equipes.

No fundo, Jenkins faz o papel que muitos operadores humanos executavam.

Só que 24 horas por dia.

Sem esquecer etapas.

Sem distrações.

GitOps: talvez a próxima revolução

GitOps é simples.

Tudo é Git.

Deseja mudar um cluster Kubernetes?

Commit.

Deseja alterar firewall?

Commit.

Deseja atualizar pipeline?

Commit.

Deseja modificar política?

Commit.

Git torna-se a fonte única da verdade.

Single Source of Truth.

Isso é extremamente poderoso.

Porque elimina configurações manuais.

Elimina servidores "snowflake".

Elimina ambientes misteriosos.

Tudo fica reproduzível.

E a segurança?

Segurança também mudou.

DevSecOps nasceu justamente aqui.

SAST.

DAST.

Dependency Scan.

Secrets Detection.

SBOM.

Tudo integrado ao pipeline.

O desenvolvedor faz commit.

Ferramentas verificam.

Bibliotecas vulneráveis.

Credenciais expostas.

Falhas conhecidas.

Antes de chegar em produção.

No Mainframe isso pode incluir:

RACF reviews.

JCL analysis.

CICS security checks.

DB2 privilege validation.

SMF auditing.

O papel do Sysprog em 2026

Antigamente o Sysprog era apenas administrador.

Hoje é arquiteto.

Automatizador.

Consultor.

Especialista em APIs.

Especialista em observabilidade.

Especialista em pipelines.

Especialista em integração.

Especialista em segurança.

Sysprog moderno entende:

Git.

GitHub.

GitLab.

Ansible.

Python.

REXX.

Jenkins.

OpenShift.

Containers.

z/OSMF.

Zowe.

REST APIs.

Porque o Mainframe deixou de ser uma ilha.

Ele tornou-se parte do ecossistema corporativo.

O novo profissional IBM Z

Acredito que o profissional IBM Z de maior valor em 2026 possui uma característica interessante.

Ele pensa como um desenvolvedor.

Age como um administrador.

Automatiza como um engenheiro DevOps.

Protege como um especialista em segurança.

E governa como um arquiteto.

Ele consegue conversar com:

Desenvolvedor Java.

Equipe Cloud.

Kubernetes.

Segurança.

Storage.

Networking.

Data Science.

IA.

Sem abandonar aquilo que torna o Mainframe único.

Confiabilidade.

Escalabilidade.

Disponibilidade.

Integridade transacional.

Processamento massivo.

Pensando durante o café

Talvez a grande mensagem escondida por trás daqueles simpáticos desenhos coloridos seja esta:

Git não substitui o conhecimento Mainframe.

Git potencializa o conhecimento Mainframe.

Ele não aposenta COBOL.

Ele amplia o alcance do COBOL.

Ele não elimina o Sysprog.

Ele transforma o Sysprog em um engenheiro de plataforma.

Ele não mata operações.

Ele automatiza operações repetitivas.

A próxima geração de profissionais IBM Z provavelmente não conhecerá Panvalet.

Talvez nunca utilize Librarian.

Possivelmente jamais veja um Changeman clássico.

Mas certamente abrirá um Pull Request.

Criará uma branch.

Executará uma pipeline.

Fará deploy automatizado.

E continuará processando bilhões de transações por dia em um IBM Z.

Porque, no final das contas, o objetivo nunca foi Git.

Nunca foi GitHub.

Nunca foi Jenkins.

Nunca foi Kubernetes.

O objetivo sempre foi o mesmo desde os tempos do System/360.

Entregar software confiável.

Mais rápido.

Mais seguro.

Mais auditável.

Mais sustentável.

E, se possível, com uma boa xícara de café ao lado do teclado 3270.

domingo, 2 de maio de 2021

☕💣🚀 PADAWAN, O ZUNIT É O MOMENTO EM QUE O MAINFRAME APRENDEU A DESCONFIAR DOS PROGRAMADORES!

 

Bellacosa Mainframe e o zunit testes unitarios em ibm mainframe 

☕💣🚀 PADAWAN, O ZUNIT É O MOMENTO EM QUE O MAINFRAME APRENDEU A DESCONFIAR DOS PROGRAMADORES!

Durante décadas, o desenvolvedor COBOL vivia numa realidade curiosa.

Ele alterava um programa de 30.000 linhas.

Compilava.

Executava.

Rezava.

Se nada explodisse em produção, considerava um sucesso.

Foi assim em milhares de empresas durante mais de 50 anos.

Então surgiu uma pergunta perigosa:

"E se o COBOL pudesse ser testado automaticamente antes de chegar à produção?"

Foi dessa necessidade que nasceu o IBM ZUnit.

Uma das tecnologias mais subestimadas do ecossistema z/OS moderno.


O QUE É O ZUNIT?

O IBM ZUnit é um framework de testes unitários para aplicações desenvolvidas no ambiente IBM Z.

Seu objetivo é simples:

  • testar programas COBOL

  • testar programas PL/I

  • validar regras de negócio

  • automatizar regressões

  • integrar testes ao DevOps

Antes do ZUnit:

Alteração
↓
Compilação
↓
Execução Manual
↓
Análise de Resultado
↓
Torcer para funcionar

Com ZUnit:

Alteração
↓
Compilação
↓
Execução Automática
↓
Validação Automática
↓
Relatório
↓
Deploy

É a filosofia do:

"Confiar é bom. Testar é melhor."


HISTÓRIA

Até meados dos anos 2000, o conceito de testes automatizados era dominado pelo mundo Java.

Existiam:

  • JUnit

  • NUnit

  • xUnit

Enquanto isso, no mainframe:

TESTE = EXECUTAR O JOB

A IBM percebeu que isso não era sustentável.

O crescimento de:

  • DevOps

  • Agile

  • CI/CD

exigia automação.

Então nasceu o projeto que mais tarde se tornaria:

IBM ZUnit Test Framework

integrado ao ambiente de desenvolvimento IBM.


DATA DE LANÇAMENTO

O ZUnit apareceu inicialmente integrado ao:

IBM Rational Developer for System z (RDz)

por volta de:

2014–2015

Posteriormente evoluiu para:

IBM Developer for z/OS (IDz)

onde continua sendo desenvolvido.

Atualmente faz parte do ecossistema:

  • IBM Developer for z/OS

  • IBM Dependency Based Build

  • IBM Wazi

  • IBM DevOps for Z


A GRANDE IDEIA

Imagine um programa COBOL:

CALCULA-DESCONTO.

Entrada:

VALOR = 1000

Saída esperada:

DESCONTO = 100

O ZUnit permite registrar:

Entrada
↓
Execução
↓
Saída Esperada

e repetir esse teste automaticamente milhares de vezes.


FILOSOFIA DO TESTE UNITÁRIO

Padawan...

O teste unitário não verifica o sistema inteiro.

Ele verifica uma unidade.

Normalmente:

Programa COBOL
ou
Subprograma COBOL

Exemplo:

CALCJUROS

Recebe:

VALOR
TAXA
PRAZO

Retorna:

JUROS

O ZUnit verifica apenas essa lógica.


COMO FUNCIONA

O framework captura:

INPUT

Parâmetros
Arquivos
Áreas de memória

PROCESSAMENTO

Executa o programa.

OUTPUT

Compara com resultado esperado.


ARQUITETURA

IDz
 │
 │
 ▼
 Test Case
 │
 ▼
 Test Runner
 │
 ▼
 Programa COBOL
 │
 ▼
 Resultado
 │
 ▼
 Relatório

COMPONENTES PRINCIPAIS

Test Case

Define:

Dados de Entrada

Test Scenario

Conjunto de testes.

Exemplo:

Cliente VIP
Cliente Normal
Cliente Inadimplente

Test Runner

Executa automaticamente.


Assertions

Comparam resultados.

Exemplo:

Esperado = 100
Obtido = 100

PASSOU.


INSTALAÇÃO

Normalmente o ZUnit não é instalado isoladamente.

Ele vem integrado ao:

IBM Developer for z/OS

IBM Developer for z/OS

Componentes comuns:

z/OS
IDz
JES
ISPF
COBOL Compiler
ZUnit Runtime

PRÉ-REQUISITOS

Geralmente:

  • Enterprise COBOL

  • z/OS

  • IDz

  • USS configurado

  • JES ativo

Em ambientes corporativos:

LPAR DEV
LPAR QA

normalmente já possuem tudo configurado.


EXEMPLO PRÁTICO

Programa

IDENTIFICATION DIVISION.
PROGRAM-ID. SOMA.

WORKING-STORAGE SECTION.

01 NUM1 PIC 9(4).
01 NUM2 PIC 9(4).
01 RESULTADO PIC 9(5).

PROCEDURE DIVISION.

ADD NUM1 TO NUM2
GIVING RESULTADO.

GOBACK.

CRIANDO O TESTE

No IDz:

File
 ↓
 New
 ↓
 ZUnit Test Case

Selecionar:

Programa SOMA

Definir:

NUM1 = 10
NUM2 = 20

Resultado esperado:

30

EXECUÇÃO

Runner executa:

SOMA

Obtém:

30

Compara:

Esperado = 30
Obtido = 30

Resultado:

PASS

EXEMPLO DE FALHA

Esperado:

30

Obtido:

31

Relatório:

FAIL

com indicação do campo divergente.


TESTANDO CENTENAS DE CENÁRIOS

Padawan...

Aqui está o verdadeiro poder.

Você cria:

0 + 0
10 + 20
9999 + 1
5000 + 5000

Tudo executado automaticamente.

Em segundos.


TESTANDO PROGRAMAS CICS

O ZUnit consegue testar componentes que normalmente seriam executados sob CICS.

Exemplo:

EXEC CICS LINK

Através de stubs e ambientes controlados.

Isso reduz enormemente o tempo de validação.


TESTANDO DB2

Também é possível criar cenários envolvendo:

SELECT
INSERT
UPDATE
DELETE

utilizando ambientes isolados.


MOCKS E STUBS

Conceito muito usado no mundo distribuído.

Exemplo:

Programa chama:

CONSULTA-CLIENTE

Mas o programa real não existe no ambiente.

Criamos um:

Stub

que responde:

CLIENTE VÁLIDO

Assim o teste continua funcionando.


INTEGRAÇÃO COM DEVOPS

O ZUnit tornou-se peça importante do pipeline moderno.

Fluxo:

Git
 ↓
Build
 ↓
Compilação COBOL
 ↓
ZUnit
 ↓
Deploy

Se um teste falhar:

Deploy Bloqueado

BENEFÍCIOS REAIS

Menos regressões

Alterou um cálculo?

Execute 500 testes.


Mais confiança

Mudanças menores tornam-se seguras.


Documentação viva

Os testes mostram como o programa deveria funcionar.


Onboarding

Novo desenvolvedor entende rapidamente a lógica.


CURIOSIDADES

Curiosidade 1

Muitos sistemas COBOL possuem mais de:

20 milhões de linhas

Sem testes automatizados.


Curiosidade 2

Alguns bancos executam milhares de testes ZUnit por dia.

Antes mesmo do primeiro usuário acessar o sistema.


Curiosidade 3

Em muitos projetos, o maior esforço não é criar o teste.

É descobrir qual deveria ser o resultado correto.


Curiosidade 4

A adoção do ZUnit foi impulsionada pelo movimento:

Shift Left Testing

Testar mais cedo.

Corrigir mais barato.


DICAS DE MESTRE JEDI MAINFRAME

Não teste programas gigantes primeiro

Comece pelos módulos menores.


Teste regras de negócio

Prioridade:

Cálculos
Tarifas
Juros
Impostos
Limites

Automatize regressões

Todo defeito corrigido deve virar um teste.


Integre com Git

Cada commit deve executar testes.


Pense como um auditor

Pergunta:

"Como provo que este cálculo continua correto após a alteração?"

Se o ZUnit responde essa pergunta, você está usando a ferramenta corretamente.


O VERDADEIRO SIGNIFICADO DO ZUNIT

Padawan...

O ZUnit não foi criado para testar COBOL.

Ele foi criado para proteger conhecimento corporativo acumulado durante décadas.

Quando um banco possui um programa escrito em 1987, alterado por 200 pessoas diferentes ao longo de 40 anos, o risco não está na compilação.

O risco está em quebrar silenciosamente uma regra de negócio que movimenta milhões de reais por dia.

O ZUnit é a resposta moderna para um problema antigo:

"Como mudar um sistema legado sem destruir aquilo que o tornou valioso?"

E é justamente por isso que muitos arquitetos consideram o ZUnit uma das tecnologias mais importantes da modernização do IBM Z: não porque ele substitui o COBOL, mas porque permite evoluí-lo com segurança. ☕💣🚀


quinta-feira, 28 de janeiro de 2021

☕💣 O DIA EM QUE O MAINFRAME GANHOU UM "SERVIDOR DE APLICAÇÕES GIGANTE": COMO WEB SERVICES CONECTAM z/OS E LINUXONE AO MUNDO MODERNO


Bellacosa Mainframe e uma visão do servidor LinuxOne no Mainframe



☕💣 O DIA EM QUE O MAINFRAME GANHOU UM "SERVIDOR DE APLICAÇÕES GIGANTE": COMO WEB SERVICES CONECTAM z/OS E LINUXONE AO MUNDO MODERNO

Introdução

Durante décadas, o Mainframe foi visto como uma fortaleza isolada. Enquanto servidores Unix, Windows e Linux dominavam o mundo da internet, o z/OS continuava processando milhões de transações bancárias, governamentais e corporativas sem precisar aparecer para o usuário final.

Mas o mundo mudou.

Aplicativos móveis precisavam consultar saldos bancários.

Sites de e-commerce precisavam verificar estoques.

APIs precisavam conversar com programas COBOL.

Microsserviços precisavam acessar dados armazenados em DB2.

Foi nesse momento que surgiu uma das arquiteturas mais interessantes da computação corporativa moderna:

LinuxONE executando aplicações web e APIs enquanto o z/OS continua processando o negócio.

Na prática, o LinuxONE tornou-se uma espécie de "porta de entrada" para o Mainframe.

Hoje vamos entender como tudo isso funciona.


A Origem do Problema

Imagine um programa COBOL criado em 1985.

Ele processa contas correntes.

Funciona perfeitamente.

Executa milhares de transações por segundo.

Mas existe um problema:

Ele não fala HTTP.

Não entende JSON.

Não sabe o que é REST.

Não conhece APIs.

O programa espera receber informações através de:

  • CICS

  • MQ

  • Arquivos VSAM

  • DB2

  • Transações 3270

Enquanto isso, um aplicativo Android espera algo como:

{
   "conta":"12345",
   "saldo":2500.50
}

Era necessário criar uma ponte.


Surge o LinuxONE

LinuxONE é uma plataforma Linux executando diretamente sobre hardware IBM Z.

Fisicamente ele utiliza o mesmo equipamento do Mainframe.

Porém logicamente é outro ambiente.

Podemos ter:

IBM Z

├── LPAR z/OS
│   ├── CICS
│   ├── DB2
│   ├── IMS
│   └── COBOL
│
└── LPAR LinuxONE
    ├── Apache
    ├── NGINX
    ├── Java
    ├── Spring Boot
    ├── Node.js
    └── Python

Os dois ambientes compartilham o mesmo hardware.

A comunicação ocorre internamente.

Sem sair do datacenter.

Sem atravessar a internet.

Com latência extremamente baixa.


Arquitetura Moderna

Visualmente temos:

Internet
    │
    ▼
Load Balancer
    │
    ▼
NGINX / Apache
(LinuxONE)
    │
    ▼
API REST
(Spring Boot)
    │
    ▼
IBM MQ
    │
    ▼
CICS
(z/OS)
    │
    ▼
COBOL
    │
    ▼
DB2

Observe que:

O usuário nunca acessa o COBOL diretamente.

Ele conversa com uma API.

A API conversa com o Mainframe.

O Mainframe responde.

A API devolve JSON.


O Papel do Servidor de Páginas

Normalmente utilizamos:

  • Apache HTTP Server

  • NGINX

  • IBM HTTP Server

Exemplo:

Cliente
   │
   ▼
Apache
   │
   ▼
Spring Boot
   │
   ▼
MQ
   │
   ▼
COBOL

O Apache recebe:

GET /clientes/123

E encaminha para a aplicação Java.


Criando uma API no LinuxONE

Suponha que queremos consultar saldo bancário.

Endpoint:

GET /saldo/12345

Aplicação Spring Boot:

@RestController
public class SaldoController {

   @GetMapping("/saldo/{conta}")
   public Saldo obterSaldo(
      @PathVariable String conta) {

      return servico.consultar(conta);
   }
}

Quando a chamada chega:

GET /saldo/12345

o Spring Boot inicia o fluxo.


Como o LinuxONE Conversa com o z/OS

Existem várias opções.

1. IBM MQ

Mais utilizada.

Fluxo:

API
 │
 ▼
MQ REQUEST
 │
 ▼
z/OS
 │
 ▼
COBOL
 │
 ▼
MQ RESPONSE
 │
 ▼
API

O Java envia mensagem.

O COBOL processa.

A resposta retorna.


Exemplo de Mensagem MQ

JSON enviado:

{
  "conta":"12345"
}

Fila:

REQ.SALDO

Resposta:

{
   "saldo":2500.50
}

Fila:

RESP.SALDO

Exemplo COBOL Consumindo MQ

Pseudo código:

CALL 'MQGET'

MOVE CONTA TO WS-CONTA

EXEC SQL
   SELECT SALDO
   INTO :WS-SALDO
   FROM CONTAS
   WHERE NUMERO = :WS-CONTA
END-EXEC

CALL 'MQPUT'

Comunicação Via CICS Web Services

Outra possibilidade.

O CICS pode expor serviços diretamente.

Arquitetura:

LinuxONE
   │
HTTP
   │
CICS
   │
COBOL

Nesse caso não usamos MQ.

A API chama o próprio CICS.


Exemplo de Chamada

Java:

RestTemplate rest =
    new RestTemplate();

String resposta =
    rest.getForObject(
       url,
       String.class
    );

Chamando:

https://cics.banco.com/saldo

Comunicação Via z/OS Connect

Hoje é uma das soluções mais elegantes.

Arquitetura:

Aplicativo
    │
    ▼
API REST
    │
    ▼
z/OS Connect
    │
    ▼
CICS
IMS
DB2
COBOL

O z/OS Connect converte:

JSON ↔ COBOL

automaticamente.


Exemplo

Cliente envia:

{
   "conta":"12345"
}

z/OS Connect converte para:

01 REQUISICAO.
   05 CONTA PIC X(10).

Sem programação manual.


Configurando Apache no LinuxONE

Instalação:

sudo yum install httpd

Iniciar:

systemctl start httpd

Habilitar:

systemctl enable httpd

Teste:

curl localhost

Configurando Proxy para API

Arquivo:

/etc/httpd/conf/httpd.conf

Exemplo:

ProxyPass /api http://localhost:8080

ProxyPassReverse /api
http://localhost:8080

Fluxo:

Apache
    │
    ▼
Spring Boot

Configurando Spring Boot

Aplicação:

server.port=8080

Executar:

java -jar banco.jar

Teste:

curl http://localhost:8080/saldo/12345

Configurando IBM MQ

Criar Queue Manager:

crtmqm QM1

Iniciar:

strmqm QM1

Criar fila:

DEFINE QLOCAL(REQ.SALDO)

Criar fila resposta:

DEFINE QLOCAL(RESP.SALDO)

Fluxo Completo da Transação

Passo 1

Usuário abre aplicativo.

Android

Passo 2

Aplicativo envia:

GET /saldo/12345

Passo 3

Apache recebe.

Passo 4

Apache encaminha para Spring Boot.

Passo 5

Spring Boot envia mensagem MQ.

Passo 6

MQ entrega ao z/OS.

Passo 7

COBOL processa.

Passo 8

DB2 retorna saldo.

Passo 9

COBOL responde MQ.

Passo 10

Spring Boot recebe.

Passo 11

Spring Boot gera JSON.

Passo 12

Apache devolve ao cliente.

Resultado:

{
   "conta":"12345",
   "saldo":2500.50
}

Segurança da Arquitetura

Normalmente utilizamos:

RACF

Controla acesso no z/OS.

TLS

Criptografia HTTPS.

JWT

Autenticação moderna.

OAuth2

Integração com aplicações externas.

Fluxo:

Cliente
   │
JWT
   ▼
API
   │
MQ
   ▼
COBOL

Vantagens do LinuxONE

Não altera o COBOL

O sistema continua funcionando.

Escalabilidade

Mais APIs podem ser criadas.

Segurança

Tudo permanece dentro do IBM Z.

Menor latência

Comunicação interna.

Modernização gradual

Não exige reescrever aplicações.


Caso Real de Banco

Muitos bancos utilizam:

App Mobile
      │
      ▼
Kubernetes
(LinuxONE)
      │
      ▼
APIs Java
      │
      ▼
MQ
      │
      ▼
CICS
      │
      ▼
COBOL
      │
      ▼
DB2

O cliente acredita estar falando com uma aplicação moderna.

Mas no fundo uma rotina COBOL criada décadas atrás continua executando a lógica principal do negócio.


O Futuro

Hoje vemos LinuxONE executando:

  • Docker

  • Kubernetes

  • OpenShift

  • Python

  • Java

  • Node.js

  • IA Generativa

  • APIs REST

  • Microsserviços

Enquanto o z/OS continua executando:

  • COBOL

  • CICS

  • IMS

  • DB2

  • Batch

Os dois mundos coexistem.

Não existe substituição.

Existe integração.


Conclusão

O LinuxONE transformou a forma como o Mainframe conversa com o mundo moderno. Em vez de expor diretamente aplicações COBOL, as organizações passaram a utilizar APIs REST, servidores web, microsserviços e containers executando lado a lado com o z/OS no mesmo hardware IBM Z.

Na prática, o LinuxONE atua como uma camada de apresentação e integração, enquanto o z/OS continua sendo o coração do processamento transacional. O resultado é uma arquitetura capaz de unir décadas de investimento em aplicações COBOL com tecnologias modernas como Spring Boot, Kubernetes, OpenShift, APIs REST, JSON e autenticação OAuth.

É por isso que muitos especialistas afirmam que o futuro do Mainframe não está em substituir sistemas legados, mas em conectá-los ao ecossistema digital. E nessa missão, LinuxONE e z/OS formam uma das parcerias mais poderosas já criadas dentro da computação corporativa.