Questa architettura di riferimento illustra come usare Azure per riprogettare un'applicazione batch mainframe z/OS per offrire un sistema sicuro, scalabile e a disponibilità elevata nel cloud tramite Azure. A causa delle esigenze aziendali in continua evoluzione, i dati e le applicazioni devono funzionare ed essere sottoposti a ridimensionamento senza influire sull'infrastruttura. La riprogettazione nel cloud consente alle aziende nel settore finanziario, sanitario, assicurativo e di vendita al dettaglio di ridurre i costi nonché i tempi di consegna dei prodotti o delle funzionalità.
Architettura del mainframe
Il primo diagramma illustra l'architettura di una tipica applicazione batch in esecuzione in un mainframe z/OS.
Scaricare un file di Visio di questa architettura.
Workflow
I processi batch mainframe possono essere attivati a un'ora specifica tramite un'utilità di pianificazione OPC (Operation, Planning, Control). Tali processi possono anche essere attivati da un messaggio inserito in una coda, ad esempio un messaggio che comunica la creazione di un file.
Un dispositivo di archiviazione ad accesso diretto (DASD, Direct Access Storage Device) mainframe viene usato per archiviare i file di input e di output, ad esempio file flat richiesti dall'applicazione. È possibile attivare il processo batch creando un file nell'archiviazione DASD.
Il processo batch prevede l'esecuzione di un set di processi, ad esempio un processo che esegue internamente un programma utente o di sistema per completare un'attività specifica. In genere, i processi batch vengono eseguiti senza alcuna interazione da parte dell'utente. Tutti i processi batch in un mainframe vengono eseguiti sotto il controllo di un sistema JES (Job Execution System).
I programma in processi batch possono leggere/scrivere dati da o nei componenti seguenti:
- Un database basato su file, come VSAM (Virtual Storage Access Method).
- Un database relazionale, come Db2 o Informix.
- Un database non relazionale, come IMS (Information Management System).
- Una coda di messaggi.
L'output dell'esecuzione del processo può essere monitorato tramite un'utilità di pianificazione OPC o TWS (Tivoli Workload Scheduler). Nel mainframe viene usata anche una funzionalità SDSF (System Display and Search Facility) in JES per controllare lo stato di esecuzione del processo.
A livello di gestione sono presenti i servizi seguenti:
- Controllo del codice sorgente, ad esempio Endevor o Changeman.
- Sicurezza, ad esempio RACF (Resource Access Control Facility). Tale opzione di sicurezza offre l'autenticazione per l'esecuzione di batch, nonché per l'accesso ai file e al database.
- Gestione dell'output che supporta l'archiviazione e la ricerca dei log di esecuzione del processo.
Architettura di Azure
Il secondo diagramma illustra come usare i servizi di Azure per riprogettare un'applicazione simile con funzionalità e flessibilità aggiuntive.
Scaricare un file di Visio di questa architettura.
Workflow
Usare uno dei trigger seguenti per avviare il processo batch di Azure.
- Usare l'utilità di pianificazione di processi di Azure Databricks o l'utilità di pianificazione di Funzioni di Azure.
- Creare un'attività di processo ricorrente con App per la logica di Azure.
- Usare un evento di archiviazione, ad esempio la creazione o l'eliminazione di un file in Archiviazione BLOB di Azure oppure in File di Azure.
- Usare un trigger basato su messaggio, ad esempio l'arrivo di un messaggio nel bus di servizio di Azure.
- Creare un trigger di Azure Data Factory.
Archiviare i file migrati dal mainframe tramite Archiviazione BLOB di Azure o File di Azure. I processi batch riprogettati in Azure possono leggere/scrivere dati in questa archiviazione.
Azure offre vari servizi per implementare un carico di lavoro batch mainframe. Selezionare i servizi specifici in base ai requisiti aziendali, ad esempio la potenza di calcolo necessaria, il tempo di esecuzione totale, la possibilità di suddividere il processo batch mainframe in unità di dimensioni minori e la sensibilità ai costi.
- Azure Databricks è una piattaforma di analisi basata su Apache Spark. I processi possono essere scritti in R, Python, Java, Scala e Spark SQL. La piattaforma offre un ambiente di calcolo con tempi di avvio del cluster rapidi, nonché terminazione e scalabilità automatiche. Include l'integrazione predefinita con servizi di archiviazione di Azure, ad esempio Archiviazione BLOB di Azure e Azure Data Lake Storage. Usare Azure Databricks se è necessario elaborare grandi quantità di dati in breve tempo. La piattaforma è anche una scelta ideale se è necessario eseguire carichi di lavoro di estrazione, trasformazione e caricamento (ETL, Extract, Transform, Load).
- Il servizio Azure Kubernetes e Service Fabric rappresentano un'infrastruttura per implementare un'architettura di applicazione basata su servizi. Potrebbe non essere conveniente usarli per una singola applicazione. È possibile effettuare il refactoring dell'applicazione mainframe tramite Java Spring Boot. Il modo migliore per eseguire app Spring Boot in Azure consiste nell'usare Azure Spring Apps, un servizio Spring completamente gestito. Gli sviluppatori Java possono usarlo per compilare ed eseguire facilmente microservizi Spring Boot in Azure.
- È possibile riprogettare l'applicazione batch mainframe anche con .NET o Java. Il servizio Batch offre l'infrastruttura per eseguire questa applicazione su larga scala. Il servizio crea e gestisce un pool di macchine virtuali, installa le applicazioni e quindi pianifica l'esecuzione dei processi nelle macchine virtuali stesse. Non è necessario installare, gestire o dimensionare cluster o software di pianificazione dei processi. È possibile scrivere applicazioni in qualsiasi linguaggio di programmazione supportato da Windows o Linux.
- È possibile riprogettare programmi batch COBOL o PL/1 con esecuzione breve. Per questi programmi, usare servizi di Azure come Funzioni, Processi Web o App per la logica.
Azure offre numerosi servizi dati per archiviare e recuperare i dati.
- È possibile eseguire la migrazione di database relazionali mainframe come Db2 e Informix con modifiche minime alla visibilità delle offerte di database relazionali di Azure, ad esempio servizi di database relazionali come VM di Azure SQL, database SQL di Azure o Istanza gestita di Azure SQL. È anche possibile usare qualsiasi sistema di gestione di database relazionali (RDBMS, Relational Database Management System) open source, come Azure PostgreSQL. La selezione di un database di Azure dipende dal tipo di carico di lavoro, dalle query tra database, dai requisiti di protocollo 2PC e da molti altri fattori.
- È possibile eseguire la migrazione di database mainframe non relazionali, come IMS, IDMS (Integrated Data Management System) o VSAM, in Azure Cosmos DB. Azure Cosmos DB offre tempi di risposta rapidi, scalabilità automatica e immediata e velocità garantita per ogni esigenza di scalabilità. È un'opzione conveniente per carichi di lavoro imprevedibili o sporadici di qualsiasi dimensione. Gli sviluppatori possono iniziare facilmente le attività senza la necessità di pianificare o gestire la capacità.
- È possibile usare cache di Azure per Redis per accelerare un'applicazione riprogettata.
Le applicazioni, il sistema operativo e le risorse di Azure possono usare gli agenti per inviare log e metriche ai log di Monitoraggio di Azure.
- Application Insight monitora l'applicazione migrata. Oltre a rilevare automaticamente le anomalie nelle prestazioni, include strumenti di analisi avanzati che consentono di diagnosticare i problemi.
- Azure Log Analytics consente di archiviare, indicizzare, eseguire query e derivare analisi dai dati di log raccolti.
È possibile usare l'output di Log Analytics e Application Insights per creare avvisi e dashboard oppure per l'esportazione in servizi esterni. È anche possibile usare l'output per eseguire un'azione come il ridimensionamento di una macchina virtuale.
Questo livello dispone di servizi di Azure per il controllo del codice sorgente, la sicurezza e la gestione dell'output. Questi servizi possono essere costituiti da Azure DevOps e microsoft Entra ID.
Componenti
Rete e identità
- Azure ExpressRoute: consente di estendere le reti locali nel cloud Microsoft tramite una connessione privata fornita da un provider di connettività. Con ExpressRoute è possibile stabilire connessioni ai servizi cloud Microsoft, come Microsoft Azure e Office 365.
- Gateway VPN di Azure: un gateway VPN è un tipo specifico di gateway di rete virtuale usato per inviare traffico crittografato tra una rete virtuale di Azure e una posizione locale attraverso la rete Internet pubblica.
- Microsoft Entra ID: Microsoft Entra ID è un servizio di gestione delle identità e degli accessi che può essere sincronizzato con una directory locale.
Applicazione
- App per la logica: consente di creare ed eseguire processi e attività ricorrenti automatizzati in base a una pianificazione. È possibile chiamare servizi all'interno e all'esterno di Azure, ad esempio endpoint HTTP o HTTPS. È possibile anche inviare messaggi a servizi di Azure, come bus di servizio di Azure, o caricare file in una condivisione file.
- Bus di servizio: è possibile usare il bus di servizio per la messaggistica tra un'interfaccia utente e i servizi back-end. Questo sistema può separare applicazioni e servizi e migliorare l'affidabilità e l'uso.
- Azure Databricks: Azure Databricks è uno strumento di ingegneria dei dati basato sul cloud usato per l'elaborazione e la trasformazione di grandi quantità di dati. È quindi possibile esplorare i dati tramite modelli di Machine Learning.
- App Spring di Azure: Azure Spring Apps semplifica la distribuzione, la gestione e l'esecuzione di microservizi Spring in Azure. Supporta sia Java sia .NET Core.
- Servizio Azure Kubernetes: il servizio Azure Kubernetes semplifica la distribuzione di un cluster Kubernetes gestito in Azure tramite l'offload del sovraccarico operativo in Azure.
- Batch: Batch è progettato per eseguire batch computing per utilizzo generico nel cloud tra numerose macchine virtuali che possono essere dimensionate in base al carico di lavoro da eseguire. Si tratta di una soluzione ideale per i casi d'uso di estrazione, trasformazione e caricamento o di intelligenza artificiale in cui più attività vengono eseguite in parallelo, in modo indipendente l'una dall'altra.
- Functioni: usare Funzioni per eseguire piccole parti di codice senza preoccuparsi dell'infrastruttura dell'applicazione. Con Funzioni, nell'infrastruttura cloud sono disponibili tutti i server aggiornati necessari per consentire l'esecuzione dell'applicazione su larga scala.
- Servizio App di Azure: con Processi Web, una funzionalità del servizio app, è possibile codificare la logica di business riutilizzabile in background come processi Web.
- Cache di Azure per Redis: le applicazioni che usano un volume elevato di dati back-end possono essere sviluppate per ridimensionare e offrire prestazioni altamente ottimizzate grazie all'integrazione con un archivio dati in memoria, ad esempio Redis. Cache di Azure per Redis offre sia il prodotto Redis open source (OSS Redis) sia un prodotto commerciale di Redis Labs (Redis Enterprise) come servizio gestito.
Storage
Archiviazione di Azure offre più livelli di dati di archiviazione, ad accesso frequente e ad accesso sporadico. L'uso efficace di tali livelli di archiviazione può offrire vantaggi che variano dal prezzo alle prestazioni.
- Archiviazione BLOB: servizio di archiviazione scalabile e sicuro per carichi di lavoro nativi del cloud, archivi, data lake, elaborazione ad alte prestazioni e apprendimento automatico.
- File di Azure: condivisioni file sul cloud di livello aziendale semplici, sicure e serverless. File di Azure è particolarmente utile per soluzioni mainframe riprogettate. Rappresenta un componente aggiuntivo efficace per l'archiviazione SQL gestita.
- Archiviazione tabelle: archivio chiave-valore non SQL per lo sviluppo rapido che usa set dati semi-strutturati di grandi dimensioni.
- Archiviazione code di Azure: servizio per l'accodamento di messaggi semplice, conveniente e durevole per carichi di lavoro di grandi dimensioni.
- Azure SQL: famiglia di servizi completamente gestiti di Azure per SQL Server. È possibile eseguire la migrazione e usare i dati relazionali in modo efficiente con altri servizi di Azure, ad esempio Istanza gestita di SQL di Azure, SQL Server in Macchine virtuali di Microsoft Azure e Database di Azure per MariaDB.
- Azure Cosmos DB: offerta non SQL che consente di migrare dati non tabulari dai mainframe.
Monitoraggio
- Monitoraggio di Azure: offre una soluzione completa per la raccolta, l'analisi e l'esecuzione di operazioni sui dati di telemetria dal cloud e dagli ambienti locali. Contiene le funzionalità Application Insights, log di Monitoraggio di Azure e Azure Log Analytics.
Gestione
Azure DevOps: consente di riprogettare applicazioni mainframe di Azure durante ogni fase dello sviluppo software e della collaborazione tra team. DevOps include i servizi seguenti:
- Azure Boards: strumento agile per la pianificazione, il rilevamento degli elementi di lavoro, la visualizzazione e la creazione di report.
- Azure Pipelines: linguaggio, base e piattaforma CI/CD indipendente dal cloud con supporto per contenitori o Kubernetes.
- Azure Repos: include repository Git privati ospitati nel cloud.
- Azure Artifacts: consente la gestione integrata di pacchetti con supporto per feed di pacchetti Maven, npm, Python e NuGet da origini pubbliche o private.
- Azure Test Plans: soluzione di test integrata, pianificata ed esplorativa.
Dettagli dello scenario
I mainframe vengono usati principalmente per elaborare grandi quantità di dati. La modalità batch consente di elaborare un volume elevato di transazioni raggruppate e quindi di eseguire aggiornamenti in blocco sul database. Dopo l'attivazione, è richiesta un'interazione minima o nessuna interazione dell'utente. I sistemi mainframe, ad esempio, rendono possibile alle banche e ad altri istituti finanziari di elaborare e generare report di fine trimestre, ad esempio rendiconti di titoli azionari o previdenziali.
Potenziali casi d'uso
Questa soluzione è ideale per i settori finanziari, assicurativi, sanitari e retail. Usare questa architettura per riprogettare le applicazioni mainframe in Azure. Questa architettura è ideale per le applicazioni seguenti:
- Applicazioni batch mainframe con elevato uso di risorse.
- Applicazioni batch che necessitano di un'elevata elaborazione durante un determinato periodo di tempo, ad esempio a fine mese, trimestre o anno.
- Processi batch mainframe ripetitivi senza un elevato uso di risorse, ma che potrebbero richiedere l'uso di sistemi esterni.
Considerazioni
Disponibilità
- L'architettura batch in questo articolo usa un ambiente di calcolo a più nodi oppure i servizi PaaS, che offrono disponibilità elevata.
- I servizi di database di Azure supportano la ridondanza della zona e possono essere progettati per eseguire il failover in un nodo secondario in caso di interruzione o durante una finestra di manutenzione.
Scalabilità
I servizi di Azure seguenti presenti in questa architettura dispongono di funzionalità di scalabilità automatica:
- Azure Databricks
- Servizio Azure Kubernetes
- Spring Apps
- Batch
- Funzioni di Azure
- App per la logica
Per altre informazioni sulla scalabilità automatica in Azure, vedere la guida alla scalabilità automatica.
Sicurezza
- Questa architettura di riferimento usa ExpressRoute per una connessione privata ed efficiente ad Azure dall'ambiente locale. È anche possibile creare, comunque, una rete privata virtuale da sito a sito.
- È possibile autenticare le risorse di Azure usando Microsoft Entra ID. È possibile gestire le autorizzazioni con il controllo degli accessi in base al ruolo.
- I servizi di database in Azure supportano diverse opzioni di sicurezza, ad esempio la crittografia dei dati inattivi.
- Per altre informazioni sulla progettazione di soluzioni sicure, vedere la documentazione sulla sicurezza di Azure.
Resilienza
- È possibile usare Monitoraggio di Azure e Application Insights, oltre a Log Analytics, per monitorare l'integrità di una risorsa di Azure. Impostare gli avvisi per gestire in modo proattivo l'integrità delle risorse.
- Per altre informazioni sulla resilienza in Azure, vedere Progettare applicazioni Azure affidabili.
Ottimizzazione dei costi
Per stimare i costi per le risorse di Azure, usare il Calcolatore prezzi di Azure.
Per una stima di esempio dei costi dei servizi, vedere Applicazione batch mainframe in Azure.
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.
Autore principale:
- Ashish Kndelwal | Principal Engineering Architecture Manager
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
- Per ulteriori informazioni, contatta datasqlninja@microsoft.com.
- Vedere le Guide alla migrazione di database di Azure.