Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Modernizza e implementa le applicazioni mainframe utilizzando e Terraform AWS Transform
Mason Cahill, Polaris Jhandi, Prachi Khanna, Sivasubramanian Ramani e Santosh Kumar Singh, Amazon Web Services
Riepilogo
AWS Transformpuò accelerare la modernizzazione su larga scala di .NET, VMware mainframe e carichi di lavoro. Implementa agenti di intelligenza artificiale specializzati che automatizzano attività complesse come valutazioni, analisi del codice, refactoring, scomposizione, mappatura delle dipendenze, convalida e pianificazione della trasformazione. Questo modello dimostra come modernizzare un'applicazione mainframe e quindi distribuirla nell' AWS Transform infrastruttura utilizzando Hashicorp Terraform. AWS Queste step-by-step istruzioni consentono di trasformare CardDemo, che è un esempio di applicazione mainframe open source, da COBOL a una moderna applicazione Java.
Prerequisiti e limitazioni
Prerequisiti
Limitazioni
AWS Transform è disponibile solo in alcuni. Regioni AWS Per un elenco completo delle regioni supportate, consulta Regioni supportate per AWS Transform.
È prevista una quota di servizio per le funzionalità di trasformazione del mainframe in AWS Transform. Per ulteriori informazioni, vedere Quotas for. AWS Transform
Per collaborare su uno spazio di lavoro condiviso, tutti gli utenti devono essere utenti registrati della stessa istanza associata all'istanza dell' AWS Transform applicazione Web. AWS IAM Identity Center
Il bucket AWS Transform Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) deve trovarsi nella stessa regione. Account AWS
Architettura
Il diagramma seguente mostra la end-to-end modernizzazione dell'applicazione legacy e la distribuzione in. Cloud AWS Le credenziali dell'applicazione e del database vengono AWS Secrets Manager archiviate e Amazon CloudWatch fornisce funzionalità di monitoraggio e registrazione.
Il diagramma mostra il flusso di lavoro seguente:
Tramite AWS IAM Identity Center, l'utente si autentica e accede in. AWS Transform Account AWS
L'utente carica il codice mainframe COBOL nel bucket Amazon S3 e avvia la trasformazione in. AWS Transform
AWS Transform modernizza il codice COBOL in codice Java nativo del cloud e archivia il codice modernizzato nel bucket Amazon S3.
Terraform crea l' AWS infrastruttura per distribuire l'applicazione modernizzata, tra cui un Application Load Balancer, un'istanza Amazon Elastic Compute Cloud (Amazon) e un database EC2 Amazon Relational Database Service (Amazon RDS). Terraform distribuisce il codice modernizzato sull'istanza Amazon. EC2
I file VSAM vengono caricati su Amazon EC2 e migrati da Amazon EC2 al database Amazon RDS.
Strumenti
Servizi AWS
Amazon Elastic Compute Cloud (Amazon EC2) fornisce capacità di elaborazione scalabile in. Cloud AWS Puoi avviare tutti i server virtuali di cui hai bisogno e dimensionarli rapidamente. In questo modello, le istanze del cluster di failover di SQL Server vengono installate sulle istanze Amazon EC2 .
AWS IAM Identity Centerti aiuta a gestire centralmente l'accesso Single Sign-On (SSO) alle tue applicazioni e a quelle cloud. Account AWS
Amazon Relational Database Service (Amazon RDS) ti aiuta a configurare, gestire e scalare un database relazionale in. Cloud AWS
Con AWS Secrets Manager puoi sostituire le credenziali nel codice,incluse le password, con una chiamata API a Secrets Manager in modo da recuperare il segreto a livello di codice.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
AWS Transformutilizza l'intelligenza artificiale agentica per aiutarti ad accelerare la modernizzazione dei carichi di lavoro legacy, come.NET, mainframe e carichi di lavoro. VMware
Altri strumenti
Apache Maven è uno strumento open source per la gestione di progetti software e l'automazione dello sviluppo per progetti Java.
Apache Tomcat è un contenitore Servlet open source e un server web per codice Java.
HashiCorp Terraform è uno strumento Infrastructure as Code (IaC) che consente di utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud.
Spring Boot è un framework open source basato su Spring Framework in Java.
Deposito di codice
Il codice per questo pattern è disponibile nel repository GitHub Mainframe Transformation E2E. Questo modello utilizza l'applicazione AWS CardDemomainframe open source come applicazione di esempio.
Best practice
Assegna la piena proprietà del codice e delle risorse destinate alla migrazione.
Sviluppa e testa un proof of concept prima di passare a una migrazione completa.
Garantisci l'impegno di tutte le parti interessate.
Stabilisci canali di comunicazione chiari.
Definisci e documenta i requisiti minimi di prodotto (MVP).
Stabilisci criteri di successo chiari.
Epiche
Attività | Descrizione | Competenze richieste |
---|
Creare un bucket. | Crea un bucket Amazon S3 nella stessa regione in cui AWS Transform è Account AWS abilitato. Questo bucket viene utilizzato per archiviare il codice dell'applicazione mainframe, i dati e gli script aggiuntivi necessari per creare ed eseguire l'applicazione. AWS Transform utilizza questo bucket per archiviare il codice rifattorizzato e altri file associati alla trasformazione. Per istruzioni, consulta Creazione di un bucket nella documentazione di Amazon S3. | AWS generale, amministratore AWS |
Imposta le autorizzazioni CORS per il bucket. | Quando configuri il bucket per AWS Transform l'accesso, devi configurare la condivisione delle risorse tra le origini (CORS) per il bucket. Se non è configurato correttamente, potresti non essere in grado di utilizzare le funzionalità di visualizzazione in linea o di confronto dei file di. AWS Transform Per istruzioni su come configurare CORS per un bucket, consulta Usare la condivisione di risorse tra origini diverse nel bucket Amazon S3. Per la policy, consulta le autorizzazioni CORS del bucket S3 nella documentazione. AWS Transform | AWS generale, amministratore AWS |
Preparare il codice applicativo mainframe di esempio. | Immettete il seguente comando per clonare il CardDemorepository sulla workstation locale: git clone https://github.com/aws-samples/aws-mainframe-modernization-carddemo.git
Comprimi la aws-mainframe-modernization-carddemo cartella in un file ZIP. Carica il file ZIP nel bucket Amazon S3 che hai creato. Per istruzioni, consulta Caricamento di oggetti nella documentazione di Amazon S3.
| General AWS, sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|
Configura il AWS Transform lavoro. | Accedi all'applicazione AWS Transform web effettuando il login con le tue credenziali. Crea un nuovo spazio di lavoro seguendo le istruzioni in Configurazione dell'area di lavoro nella documentazione. AWS Transform Nella pagina di destinazione del tuo spazio di lavoro, scegli Chiedi AWS Transform per creare un lavoro. Quindi, scegli Mainframe Modernization come tipo di lavoro. Nella finestra della chat, inserisci Transform code to Java. Controlla il tipo di lavoro, il nome e l'obiettivo suggeriti. Per confermare, inserisci Sì. Scegli Crea processo.
| Sviluppatore dell'app, proprietario dell'app |
Configura un connettore. | Configura un connettore con il bucket Amazon S3 che hai creato. Per istruzioni, consulta Configurare un connettore nella AWS Transform documentazione. Quando richiesto, inserisci il percorso del file aws-mainframe-modernization-carddemo zip nel bucket Amazon S3. Attendi il completamento del processo.
| Sviluppatore di app, proprietario dell'app |
Trasforma il codice. | Esamina i risultati dell'analisi del codice secondo le istruzioni in Analizza il codice nella AWS Transform documentazione. Rifattorizza il codice del mainframe in base alle istruzioni contenute nel codice Refactor nella documentazione. AWS Transform Per l'applicazione CardDemo mainframe di esempio, puoi accettare le impostazioni predefinite. Attendi il completamento del refactoring. Scegli Visualizza risultati per visualizzare il percorso del codice refactorizzato nel bucket Amazon S3. Prendi nota del percorso di questo file. Sarà necessario in seguito.
| Sviluppatore dell'app, proprietario dell'app |
Attività | Descrizione | Competenze richieste |
---|
Aggiorna i modelli. | Immettete il seguente comando per clonare il repository Mainframe Transformation E2E sulla workstation locale: git clone https://github.com/aws-samples/sample-mainframe-transformation-e2e.git
Immettete il seguente comando per recuperare il vostro attuale indirizzo IP pubblico: curl checkip.amazonaws.com
Immettete il seguente comando per accedere alla directory infra: cd mainframe-transformation-e2e/infra
Apri il file variables.tf . Sostituisci YOUR_IP_ADDRESS_HERE con il tuo indirizzo IP. Se disponi di una zona ospitata pubblica, procedi come segue: hosted_zone_name Sostituiscila con il nome della tua zona ospitata.
Imposta hosted_zone_enabled su true .
Se non disponi di una zona ospitata pubblica, procedi come segue: Inserisci i seguenti comandi per generare un certificato autofirmato: openssl genrsa 2048 > my-private-key.pem
openssl req -new -x509 -nodes -sha256 -days 365 -key my-private-key.pem -outform PEM -out my-certificate.pem
Immettete il seguente comando per importare il certificato in AWS Certificate Manager (ACM): aws acm import-certificate \
--certificate fileb://my-certificate.pem \
--private-key fileb://my-private-key.pem
L'output di questo comando include l'Amazon Resource Name (ARN) del certificato importato. Sostituisci self_signed_cert_arn con l'ARN del tuo certificato. Imposta hosted_zone_enabled su false .
Passa aws_region alla regione di destinazione. Il valore predefinito è us-east-1 . Salvare e chiudere il file variables.tf .
| AWS generale, amministratore AWS |
Implementa l'infrastruttura. | Inserisci il seguente comando per inizializzare Terraform: terraform init
Immettere il seguente comando per generare un piano di esecuzione: terraform plan
Rivedi il piano e convalida le risorse e i componenti dell'infrastruttura che verranno creati. Immettere il seguente comando per distribuire l'infrastruttura: terraform apply
Quando richiesto, inserisci yes per confermare la distribuzione. Attendi il completamento della distribuzione.
| Terraform |
Attività | Descrizione | Competenze richieste |
---|
Installa il software richiesto. | Connect alla tua EC2 istanza Amazon utilizzando AWS Systems Manager Session Manager. Inserisci il seguente comando per passare all'utente root: sudo su -
Immettere il comando seguente per andare alla directory scripts : cd /opt/scripts
Esamina lo script install_software.sh. Questo script installa Java 17, Apache Maven e Apache Tomcat 10.0.23. Aggiorna gli script secondo necessità per il tuo caso d'uso. Immettete il seguente comando per rendere eseguibile lo script: chmod +x install_software.sh
Immettete il seguente comando per eseguire lo script: ./install_software.sh
| Sviluppatore di app, tecnico addetto alla migrazione |
Verifica l'installazione del software. | Immettere il seguente comando per avviare il server Tomcat: /opt/tomcat/apache-tomcat-10.0.23/bin/startup.sh
Immettere il comando seguente per verificare la risposta del server Web: curl http://localhost:8080
L'output dovrebbe confermare che Tomcat sta servendo una pagina HTML.
| Sviluppatore di app, tecnico addetto alla migrazione |
Attività | Descrizione | Competenze richieste |
---|
Scarica ed estrai il codice generato. | Immettete il seguente comando per rendere eseguibile lo script download_and_extract.sh. Questo script scarica il codice refattorizzato e la libreria di runtime Gapwalk archiviata nel bucket Amazon S3: chmod +x /opt/scripts/download_and_extract.sh
Inserisci il comando seguente per eseguire lo script . Sostituisci <file_path> con il percorso del file generated.zip nel tuo bucket Amazon S3: ./download_and_extract.sh <file_path>
Il percorso del file è in genere. s3://<bucket-name>/transform_output/<aws_transform_job_id>/codetransformation/generated.zip Immettete il seguente comando per navigare all'interno della shared cartella: cd /opt/runtime/velocity/shared
Immettete il seguente comando per copiare lo deploy-velocity-runtimescript.sh: cp /opt/scripts/deploy-velocity-runtime.sh .
Immettete il comando seguente per rendere eseguibile lo script copiato: chmod +x deploy-velocity-runtime.sh
Inserisci il comando seguente per eseguire lo script . Questo script copia tutte le dipendenze WAR (Web Application Archive) richieste presenti nei file Project Object Model (POM) nella cartella del repository: ./deploy-velocity-runtime.sh
Verifica la corretta esecuzione controllando che non vi siano errori e che le dipendenze WAR richieste siano installate nel repository Maven locale.
| Sviluppatore di app, tecnico addetto alla migrazione |
Crea l'applicazione modernizzata. | Immettete il seguente comando per accedere alla directory del app-pom progetto: cd /opt/codebase/app-pom/
Inserisci il seguente comando per installare Maven: mvn clean install
Attendi il completamento dell'installazione e della compilazione. Quando si esegue questo comando per l' CardDemo applicazione, è possibile che vengano visualizzati messaggi di avviso relativi al app-web progetto. Puoi tranquillamente ignorare questi avvisi. Dopo aver completato con successo la build, conferma la presenza di app-service/target/app-service-1.0.0.war eapp-web/target/app-web-1.0.0.war . Non riavviare il server Tomcat in questa fase. Ciò comporterebbe errori dovuti all'assenza dei database richiesti. È necessario configurare il database prima di riavviare il server.
| Sviluppatore di app, tecnico addetto alla migrazione |
Attività | Descrizione | Competenze richieste |
---|
Creare il database e gli schemi JICS. | Immettere il seguente comando per rinominare la cartella incsd commands . csd_commands Questo rimuove gli spazi dal nome della cartella: mv /opt/codebase/extra/csd\ commands/ /opt/codebase/extra/csd_commands
Immettete il seguente comando per navigare nella scripts directory: cd /opt/scripts
Immettete il seguente comando per rendere eseguibile lo script di migrazione del database: chmod +x database_migration_setup.sh
Immettete i seguenti comandi per configurare le seguenti variabili come parametri: RDS_ENDPOINT=<database_endpoint>
SECRET_NAME=<secret_name>
JICS_SQL_SCRIPT_DIR=/opt/runtime/velocity/jics/sql/jics.sql
INIT_JICS_SQL_SCRIPT_DIR=/opt/codebase/extra/csd_commands/sql/aws-mainframe-modernization-carddemo-main/app/csd/initJics.sql
Dove: Immettere il seguente comando per eseguire lo script di migrazione del database: ./database_migration_setup.sh $RDS_ENDPOINT $SECRET_NAME $JICS_SQL_SCRIPT_DIR $INIT_JICS_SQL_SCRIPT_DIR
Inserisci il seguente comando per connetterti al database dalla tua EC2 istanza Amazon: psql -h <Your Amazon RDS Endpoint> -U foo -p 5432 postgres
Quando richiesto, inserisci le credenziali del database.
| Sviluppatore di app, tecnico addetto alla migrazione |
Convalida la creazione del database. | Immettete il seguente comando per visualizzare tutti i database: \l
Immettete il seguente comando per passare al jics database: \c jics
Immettete il comando seguente per rivedere un elenco delle tabelle create: \dt
| Sviluppatore di app, tecnico addetto alla migrazione |
Migra i dati nel database JICS. | Immettete il seguente comando per rendere eseguibile lo script execute_listcat_sql.sh: chmod +x execute_listcat_sql.sh
Immettete il comando seguente per configurare la PATH_TO_LISTCAT_SQL_FILES variabile, che è la directory che contiene i file SQL LISTCAT: PATH_TO_LISTCAT_SQL_FILES=/opt/codebase/extra/listcat/sql/cluster/aws-mainframe-modernization-carddemo-main/app/catlg
Assicurati che le PATH_TO_LISTCAT_SQL_FILES variabili RDS_ENDPOINT SECRET_NAME , e siano impostate correttamente in base alle istruzioni precedenti. Immettete il comando seguente per eseguire lo script execute_listcat_sql.sh: ./execute_listcat_sql.sh $RDS_ENDPOINT $SECRET_NAME $PATH_TO_LISTCAT_SQL_FILES
Questo script aggiorna le proprietà del file VSAM nel database JICS ed esegue le query necessarie per modificare il database.
| Sviluppatore di app, tecnico addetto alla migrazione |
Attività | Descrizione | Competenze richieste |
---|
Installa l'applicazione modernizzata sull' EC2 istanza Amazon. | Inserisci il seguente comando per rendere eseguibile lo script application_installer.sh: chmod +x /opt/scripts/application_installer.sh
Immettete i seguenti comandi per configurare le seguenti variabili come parametri: RDS_ENDPOINT=<database_endpoint>
SECRET_NAME=<secret_name>
AIX_JSON_FILE_PATH=/opt/codebase/extra/csd_commands/json/aws-mainframe-modernization-carddemo-main/jicsFileAix.json
LISTCAT_JSON_FILES_DIR=/opt/codebase/extra/listcat/json/cluster/default/aws-mainframe-modernization-carddemo-main/app/catlg
S3_PATH_FOR_EBCDIC_DATA_FILES=s3://<bucket_name>/transform-output/<job_id>/inputs/aws-mainframe-modernization-carddemo-main/app/data/EBCDIC
Dove: <database_endpoint> è l'endpoint del database Amazon RDS che hai distribuito tramite Terraform.
<secret_name> è il nome del AWS Secrets Manager segreto che hai distribuito tramite Terraform.
<bucket_name> è il nome del bucket Amazon S3 che contiene l'applicazione modernizzata.
<job_id> è l'ID del lavoro. AWS Transform
Immettete il comando seguente per eseguire lo script application_installer.sh: ./application_installer.sh $RDS_ENDPOINT $SECRET_NAME $AIX_JSON_FILE_PATH $LISTCAT_JSON_FILES_DIR $S3_PATH_FOR_EBCDIC_DATA_FILES
Nella /opt/tomcat/apache-tomcat-10.0.23/workingdir/config cartella, nel file application-utility-pgm.yml, modificate il parametro di codifica nel modo seguente: encoding : CP1047
| Sviluppatore di app, architetto cloud |
Riavvia il server Tomcat. | Immettete il seguente comando per navigare nella directory di lavoro: cd /opt/tomcat/apache-tomcat-10.0.23/workingdir
Immettete i seguenti comandi per arrestare e avviare il server Tomcat: /opt/tomcat/apache-tomcat-10.0.23/bin/shutdown.sh
/opt/tomcat/apache-tomcat-10.0.23/bin/startup.sh
Immettere il seguente comando per monitorare i log di avvio del servizio Tomcat: tail -f /opt/tomcat/apache-tomcat-10.0.23/logs/catalina.out
| Sviluppatore di app, architetto cloud |
Esegui la migrazione del set di dati VSAM. | Apri la EC2 console Amazon. Nel riquadro di navigazione selezionare Load Balancers (Sistemi di bilanciamento del carico). Scegli il sistema di bilanciamento del carico creato tramite Terraform. Individua il nome DNS (Domain Name System) del tuo Application Load Balancer, ad esempio. application-load-balancer-<id>.<region>.elb.amazonaws.com Nel browser, accedi ahttp://<dns_name>/gapwalk-application/scripts/data-load , <dns_name> dov'è il nome DSN dell'Application Load Balancer. Questo avvia lo script di caricamento dei dati. Attendi il completamento dello script. Al termine, il browser mostrerà DONE. Nell' EC2 istanza Amazon, apri un nuovo terminale. Inserisci il seguente comando per connetterti al database Amazon RDS, sostituendolo <database_endpoint> con il tuo valore: psql -h <database_endpoint> -U foo -p 5432 postgres
Quando richiesto, inserisci le tue credenziali per connetterti al database. Immettete il seguente comando per visualizzare tutti i database: \l
Immettete il seguente comando per passare al bluesam database: \c bluesam
Immettete il comando seguente per rivedere un elenco delle tabelle create: \dt
Immettete il comando seguente per convalidare il caricamento dei dati: SELECT * FROM public.aws_m2_carddemo_usrsec_vsam_ksds;
L'output dovrebbe mostrare 10 record restituiti.
| Sviluppatore di app, tecnico addetto alla migrazione |
Aggiorna i parametri negli script Groovy. | Immettete il seguente comando per navigare nella directory degli script: cd /opt/tomcat/apache-tomcat-10.0.23/webapps/workingdir/scripts
In tutti i file Groovy che contengono riferimenti a file flat, aggiorna le seguenti configurazioni di file: Percorso del file locale: il percorso del file flat nella directory locale dell' EC2 istanza Amazon Tipo di file system: il file system che contiene i file flat Dimensione del record: la dimensione del file flat
Per riferimento, vedete lo script di esempio dusrSecj.jcl.Groovy nel repository del codice. Salvate e chiudete i file.
| Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|
Prova l'applicazione modernizzata. | Accedere all'applicazione online tramite Application Load Balancer (http://<your-load-balancer-dns> ) o tramite la zona ospitata (https://myhostedzone.dev/ ). Per l'ID della transazione, immettereCC00 . Per il nome utente, immettereUSER0001 . Per la password, immetterePASSWORD . Dopo aver effettuato correttamente l'accesso, viene visualizzato il menu principale.
| Sviluppatore di app, tecnico di test |
Verifica gli script batch. | Accedi all'interfaccia degli script tramite Application Load Balancer http://<your-load-balancer-dns>/gapwalk-application/scripts () o tramite la zona https://myhostedzone.dev/gapwalk-application/scripts ospitata (). Scegliete uno script da eseguire, ad esempio lo script DUSRSecj.jcl.groovy. Verificate che lo script venga eseguito correttamente. Di seguito è riportato un esempio di output dopo un'esecuzione riuscita. { "exitCode": 0, "stepName": "STEP03", "program": "IDCAMS", "status": "Succeeded" }
| Sviluppatore di app, tecnico di test |
Attività | Descrizione | Competenze richieste |
---|
Preparati a eliminare l'infrastruttura. | Inserisci il seguente comando per rimuovere la protezione da eliminazione dall'istanza Amazon RDS: aws rds modify-db-instance \
--db-instance-identifier <your-db-instance-name> \
--no-deletion-protection \
--apply-immediately
Immettete il seguente comando per rimuovere la protezione da eliminazione dall'Application Load Balancer: aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn <your-load-balancer-arn> \
--attributes Key=deletion_protection.enabled,Value=false
Inserisci i seguenti comandi per eliminare il contenuto dei bucket Amazon S3: ACCOUNT_NUMBER=$(aws sts get-caller-identity --query Account --output text)
aws s3 rm s3://mf-carddemo-$ACCOUNT_NUMBER --recursive
aws s3 rm s3://mf-carddemo-logs-$ACCOUNT_NUMBER --recursive
| Informazioni generali su AWS |
Eliminare l'infrastruttura. | Questi passaggi elimineranno definitivamente le tue risorse. Assicurati di aver eseguito il backup di tutti i dati importanti prima di procedere. Immettete il seguente comando per navigare all'interno della infra cartella: cd /mainframe-transformation-e2e/infra
Immettere il seguente comando per eliminare l'infrastruttura: terraform destroy --auto-approve
| Informazioni generali su AWS |
Risoluzione dei problemi
Problema | Soluzione |
---|
Autenticazione Terraform | Assicurati che le AWS credenziali siano configurate correttamente. Verifica di aver selezionato il AWS profilo corretto. Conferma di disporre delle autorizzazioni necessarie.
|
Errori relativi a Tomcat | Controlla catalina.out per eventuali eccezioni. /opt/tomcat/apache-tomcat-10.0.23/logs Immetti il seguente comando per cambiare la proprietà della cartella Tomcat all'utente Tomcat: chown -R tomcat:tomcat /opt/tomcat/*
|
Il nome dell'URL non viene caricato | Assicurati che il gruppo di sicurezza Application Load Balancer abbia il tuo indirizzo IP nella regola in entrata come origine. |
Problema di autenticazione nel registro di Tomcat | Verifica che la password segreta del database in AWS Secrets Manager e la password in server.xml corrispondano. |
Risorse correlate
AWS Guida prescrittiva
AWS documentazione del servizio
AWS post sul blog