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