Il rehosting è un modo per eseguire applicazioni mainframe legacy, intatte, in un sistema aperto. Questo percorso è il modo più rapido per togliere le applicazioni dall'hardware mainframe ed eseguirle in una piattaforma Windows o Linux in un ambiente nativo del cloud. Il codice dell'applicazione scritto in linguaggi legacy come COBOL o PL/1 viene migrato così com'è e ricompilato nel nuovo ambiente senza alcuna modifica alla logica di business. Il rehosting consente di mantenere la logica dell'applicazione. Allo stesso tempo, il rehosting riduce al minimo il rischio e i costi associati alla ripetizione dell'applicazione per il nuovo ambiente.
Il rehosting è un metodo conveniente per affrontare le sfide legate alla gestione dell'hardware mainframe precedente. Comunemente definito lift-and-shift, il rehosting sposta le applicazioni cruciali e principali al di fuori del mainframe e le esegue la migrazione al cloud. Con questo approccio, l'hardware sottostante cambia, ad esempio da un mainframe IBM a x86. Tuttavia, la logica funzionale e di business non è toccato. Questa migrazione è la più rapida e meno interessata dal punto di vista dell'utente finale. L'applicazione mantiene le stesse interfacce e sembra che gli utenti siano a proprio agio.
Per i team che esplorano le funzionalità cloud, il rehosting delle applicazioni è un ottimo modo per usare funzionalità cloud come scalabilità automatica, archiviazione gestita e contenitori. Questa architettura mostra un esempio di rehosting generale che evidenzia due metodologie per distribuire i carichi di lavoro. È possibile usare servizio Azure Kubernetes (servizio Azure Kubernetes) o Azure Macchine virtuali. Il metodo usato dipende dalla portabilità dell'applicazione e dalle preferenze.
Potenziali casi d'uso
Molti scenari possono trarre vantaggio dal rehosting in Azure. Ecco alcuni possibili casi d'uso:
- Ottimizzazione dei costi: si vuole ridurre significativamente i costi elevati di gestione e manutenzione dell'hardware dei mainframe e delle licenze o del software associati.
- Posizione indipendente: si intende pianificare l'uscita di un data center e si vuole una piattaforma alternativa a disponibilità elevata, sicura e affidabile per ospitare le applicazioni legacy.
- Interruzione minima: è necessario eseguire la migrazione di applicazioni mainframe cruciali mantenendo al tempo stesso la continuità delle operazioni aziendali quotidiane.
- Impatto minimo sull'utente: spostare le applicazioni dall'hardware precedente, ma continuare a fornire agli utenti le stesse interfacce o migliori.
- Upskilling trascurabile: le applicazioni vengono ospitate nel cloud senza modifiche significative al codice. Continuano a fornire al team di sviluppo la base di codice familiare e allo stesso tempo eliminano costose attività di sviluppo, test e reskilling in un linguaggio più recente.
Architettura dei mainframe
Questa è l'architettura di pre-migrazione.
Scaricare un file di Visio di questa architettura.
Flusso di dati mainframe
L'input si verifica su TCP/IP, tra cui TN3270, HTTP e HTTPS.
L'input nel mainframe usa protocolli di comunicazione mainframe standard.
La ricezione di applicazioni può essere batch o sistemi online.
COBOL, PL/I, Assembler e altri linguaggi compatibili vengono eseguiti in un ambiente abilitato.
I dati e i servizi di database usati sono database gerarchici, di rete e relazionali.
I servizi comuni includono l'esecuzione del programma, le operazioni di I/O, il rilevamento degli errori e la protezione all'interno dell'ambiente.
Il middleware e le utilità gestiscono servizi come archiviazione su nastro, accodamento, output e servizi Web all'interno dell'ambiente.
I sistemi operativi forniscono l'interfaccia tra il motore e il software in esecuzione.
Le partizioni sono necessarie per eseguire carichi di lavoro separati e separare i tipi di lavoro all'interno dell'ambiente.
Architettura
Questa architettura illustra una soluzione di cui viene eseguito il rehosting in Microsoft Azure.
Scaricare un file di Visio di questa architettura.
Flusso di dati
L'input viene in genere fornito tramite ExpressRoute da client remoti o da altre applicazioni attualmente eseguite in Azure. In entrambi i casi, le connessioni TCP/IP sono i mezzi principali di connessione al sistema. L'accesso utente viene fornito tramite la porta TLS 443 per accedere alle applicazioni basate sul Web. Il livello di presentazione dell'applicazione basata sul Web può essere mantenuto invariato per ridurre al minimo il training dell'utente finale. Per l'accesso amministratore alle macchine virtuali, è possibile usare gli host Azure Bastion per ottimizzare la sicurezza riducendo al minimo le porte aperte.
L'accesso ai cluster di calcolo delle applicazioni viene eseguito usando un servizio di bilanciamento del carico di Azure. Con questo approccio, è possibile aumentare le risorse di calcolo per elaborare il lavoro di input. Sono disponibili sia il livello di applicazione 7 che i servizi di bilanciamento del carico a livello di protocollo di rete di livello 4. Il tipo usato dipende dal modo in cui l'input dell'applicazione raggiunge il punto di ingresso del cluster di computer.
L'uso dei cluster di calcolo delle applicazioni dipende dal fatto che l'applicazione supporti macchine virtuali (VM) in un cluster di calcolo o che l'applicazione venga eseguita in un contenitore distribuito in un cluster di calcolo del contenitore come Kubernetes. La maggior parte del software partner mainframe per le applicazioni scritte in linguaggi legacy preferisce usare le macchine virtuali. Alcuni software partner di sistemi mainframe possono supportare anche la distribuzione nei contenitori.
I server applicazioni ricevono l'input nei cluster di calcolo e condividono lo stato e i dati dell'applicazione usando Cache Redis di Azure o l'accesso diretto alla memoria remota (RDMA). I server applicazioni ospitano vari programmi applicazione COBOL o PL/1. Un gestore di sistema delle transazioni è un emulatore in Azure che può gestire i carichi di lavoro dei sistemi di controllo delle informazioni dei clienti (CICS) e dei sistemi di gestione delle informazioni (IMS). Un emulatore di sistema batch in Azure svolge il ruolo del linguaggio JCL (Job Control Language).
È possibile usare i servizi di Azure o altri software partner ospitati nelle macchine virtuali per la gestione dei dati, delle utilità e del sistema.
Viene eseguita la migrazione dei dati del mainframe ai database di Azure. Azure offre vari servizi di archiviazione dei dati efficienti, ad esempio database SQL di Azure, SQL Server in Azure Macchine virtuali e Istanza gestita di SQL di Azure. Esistono molti fattori da considerare quando si effettua una scelta, ad esempio il tipo di carico di lavoro, le query tra database e i requisiti di commit in due fasi. I servizi dati di Azure offrono un'archiviazione dati scalabile e a disponibilità elevata che è possibile condividere tra più risorse di calcolo in un cluster. È possibile rendere questi servizi con ridondanza geografica e quindi configurarli in modo che, in caso di failover, l'istanza del database di ripristino di emergenza diventi attiva.
Il servizio Azure Kubernetes consente di aumentare e ridurre i carichi di lavoro di modernizzazione del mainframe in Azure per sfruttare i vantaggi della piattaforma cloud. Quando si distribuiscono più cluster del servizio Azure Kubernetes, scegliere le aree in cui tale servizio è disponibile. È quindi possibile usare le aree abbinate per un'architettura altamente resiliente. È importante eseguire più istanze di un cluster del servizio Azure Kubernetes in più aree e in configurazioni a disponibilità elevata.
Azure Data Factory offre l'inserimento e la sincronizzazione dei dati con più origini dati, sia all'interno di Azure che da origini esterne. Archiviazione BLOB di Azure è una zona di destinazione comune per le origini dati esterne.
Usare Azure Site Recovery per il ripristino di emergenza dei componenti della macchina virtuale e del cluster contenitore. Azure Site Recovery replica e sincronizza l'ambiente di produzione nell'area di failover.
Componenti
Macchine virtuali: Macchine virtuali è una risorsa di calcolo scalabile su richiesta. Una VM di Azure offre la flessibilità della virtualizzazione senza dover acquistare e gestire l'hardware fisico su cui è in esecuzione la macchina virtuale.
Azure Rete virtuale: Rete virtuale è il blocco predefinito fondamentale per la rete privata in Azure. Rete virtuale consente a molti tipi di risorse di Azure, ad esempio Macchine virtuali, di comunicare in modo sicuro tra loro, Internet e reti locali. Rete virtuale è come una rete tradizionale che si opera nel proprio data center. Tuttavia, offre i vantaggi dell'infrastruttura di Azure, ad esempio scalabilità, disponibilità e isolamento.
Schede di interfaccia di Azure Rete virtuale: un'interfaccia di rete consente a una macchina virtuale di Azure di comunicare con internet, Azure e le risorse locali. Come illustrato in questa architettura, è possibile aggiungere altre schede di interfaccia di rete alla stessa macchina virtuale di Azure. In questo modo, le macchine virtuali figlio Solaris hanno un proprio dispositivo di interfaccia di rete dedicato e un indirizzo IP.
Archiviazione su disco di Azure: i dischi gestiti sono volumi di archiviazione a livello di blocco gestiti da Azure e usati con le macchine virtuali di Azure. I tipi di dischi disponibili sono Archiviazione su disco Ultra di Azure, UNITÀ SSD Premium di Azure, UNITÀ SSD Standard di Azure e HDD Standard di Azure. Per questa architettura, è consigliabile usare Archiviazione su disco Ultra o SSD Premium.
File di Azure: File di Azure offre condivisioni file completamente gestite nel cloud accessibili tramite il protocollo SMB (Server Message Block) standard del settore. È possibile montare le condivisioni file di Azure contemporaneamente tramite distribuzioni cloud o locali di Windows, Linux e macOS.
Azure ExpressRoute: con ExpressRoute è possibile estendere le reti locali nel cloud Microsoft tramite una connessione privata facilitata da un provider di connettività. È anche possibile stabilire connessioni ai servizi cloud Microsoft, ad esempio Microsoft Azure e Microsoft 365.
Servizio Azure Kubernetes: distribuire e gestire più facilmente applicazioni in contenitori con un servizio Kubernetes completamente gestito. Il servizio Azure Kubernetes offre Kubernetes serverless, un'esperienza CI/CD integrata, oltre a sicurezza e governance di livello enterprise. È possibile unificare i team di sviluppo e delle operazioni in una singola piattaforma per velocizzare le attività di compilazione, distribuzione e ridimensionamento delle applicazioni, in tutta sicurezza.
Registro Azure Container: compilare, archiviare, proteggere, analizzare, replicare e gestire immagini e artefatti del contenitore con un'istanza completamente gestita e con replica geografica della distribuzione OCI. Connettersi tra ambienti come servizio Azure Kubernetes e Azure Red Hat OpenShift e tra servizi di Azure, ad esempio servizio app, Machine Learning e Batch.
Site Recovery: Site Recovery offre facilità di distribuzione, efficienza dei costi e affidabilità. Usa Site Recovery per distribuire processi di replica, failover e ripristino e consentire l'esecuzione delle applicazioni anche in caso di interruzioni pianificate e non pianificate.
Considerazioni
Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Microsoft Azure Well-Architected Framework.
Affidabilità
L'affidabilità garantisce che l'applicazione possa soddisfare gli impegni che l'utente ha preso con i clienti. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per l'affidabilità.
- Per sfruttare al meglio le funzionalità di Azure, usare un approccio basato su contenitori per la distribuzione. Questo approccio è utile se l'applicazione deve essere ridimensionata su richiesta e ottenere il provisioning elastico della capacità senza la necessità di gestire l'infrastruttura. Consente inoltre di aggiungere trigger e scalabilità automatica basati su eventi. Un contenitore aggrega tutto il software necessario per l'esecuzione in un unico pacchetto eseguibile. Include il codice di un'applicazione insieme ai file di configurazione, alle librerie e alle dipendenze correlati necessari per eseguire l'app.
- È necessario orchestrare e gestire i servizi in contenitori e i relativi componenti di rete e archiviazione associati. Il servizio Azure Kubernetes è un'ottima opzione perché automatizza la gestione dei cluster e delle risorse. Si definisce il numero di nodi necessari e il servizio Azure Kubernetes si adatta ai contenitori nei nodi giusti per sfruttare al meglio le risorse. Il servizio Azure Kubernetes supporta anche implementazioni e rollback automatizzati, individuazione dei servizi, bilanciamento del carico e orchestrazione dell'archiviazione. Il servizio Azure Kubernetes supporta la riparazione automatica. Se un contenitore ha esito negativo, il servizio Azure Kubernetes ne avvia uno nuovo. È anche possibile archiviare in modo sicuro i segreti e le impostazioni di configurazione all'esterno dei contenitori.
- L'architettura usa Site Recovery per eseguire il mirroring delle macchine virtuali di Azure in un'area di Azure secondaria per il failover rapido e il ripristino di emergenza in caso di errore di un data center di Azure.
- Per ottimizzare il tempo di attività dei carichi di lavoro nell'approccio di distribuzione del servizio Azure Kubernetes, è consigliabile distribuire l'applicazione in più cluster del servizio Azure Kubernetes in aree diverse. Lo stato dell'applicazione può essere disponibile in più cluster perché il servizio Azure Kubernetes consente la replica di archiviazione in più aree.
- Per ottimizzare il tempo di attività dei carichi di lavoro in un approccio di distribuzione basato su macchine virtuali, è consigliabile usare Azure set di scalabilità di macchine virtuali. Con set di scalabilità di macchine virtuali è possibile creare e gestire un gruppo di macchine virtuali con carico bilanciato. Il numero di istanze di macchine virtuali può aumentare o diminuire automaticamente in risposta alla domanda o a una pianificazione definita. I set di scalabilità offrono disponibilità elevata per le applicazioni e consentono di gestire, configurare e aggiornare in modo centralizzato un numero elevato di macchine virtuali.
Sicurezza
La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per Security.
- Questa soluzione usa un gruppo di sicurezza di rete di Azure per gestire il traffico tra le risorse di Azure. Per altre informazioni, vedere Gruppi di sicurezza di rete.
- Azure Bastion ottimizza la sicurezza degli accessi amministrativi riducendo al minimo le porte aperte. Bastion offre connettività RDP/SSH facile e sicura alle macchine virtuali della rete virtuale direttamente dal portale di Azure tramite TLS.
Ottimizzazione costi
L'ottimizzazione dei costi consiste nell'esaminare i modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per l'ottimizzazione dei costi.
Azure offre l'ottimizzazione dei costi eseguendo in macchine virtuali Windows. Con le macchine virtuali Windows, è possibile disattivare le macchine virtuali quando non sono in uso e creare uno script per una pianificazione per i modelli di utilizzo noti. Azure identifica il numero corretto o i tipi di risorse, analizza la spesa nel tempo e aumenta in base alle esigenze aziendali senza sovraccaricare le esigenze aziendali.
Usare il calcolatore prezzi di Azure per stimare il costo dei servizi in questa architettura.
Eccellenza operativa
L'eccellenza operativa copre i processi operativi che distribuiscono un'applicazione e lo mantengono in esecuzione nell'ambiente di produzione. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per l'eccellenza operativa.
- L'architettura di destinazione è funzionale con Azure Servizi cloud.
- La distribuzione basata su contenitori promuove l'adozione dei principi di lavoro DevOps e Agile.
- È possibile usufruire della massima flessibilità delle opzioni di sviluppo e distribuzione di produzione.
Efficienza delle prestazioni
L'efficienza delle prestazioni è la capacità del carico di lavoro di ridimensionarsi per soddisfare le esigenze poste dagli utenti in modo efficiente. Per altre informazioni, vedere Elenco di controllo per l'efficienza delle prestazioni.
- L'efficienza delle prestazioni è integrata in questa soluzione a causa dei servizi di bilanciamento del carico. Se un server di presentazione o transazione ha esito negativo, il server dietro il servizio di bilanciamento del carico esegue il carico di lavoro.
- Kubernetes offre un'utilità di scalabilità automatica del cluster. Il ridimensionamento automatico regola il numero di nodi in base alle risorse di calcolo richieste nel pool di nodi.
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.
Autore principale:
- Sunnyma Ghosh | Senior Program Manager
Altro collaboratore:
- Bhaskar Bandam | Senior Program Manager
Passaggi successivi
- White paper di Azure sugli argomenti del mainframe
- Rehosting di mainframe in macchine virtuali di Azure
- Carichi di lavoro mainframe supportati in Azure
Per ulteriori informazioni, contatta legacy2azure@microsoft.com.