As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Modernize e implante aplicativos de mainframe usando o Terraform AWS Transform
Mason Cahill, Polaris Jhandi, Prachi Khanna, Sivasubramanian Ramani e Santosh Kumar Singh, da Amazon Web Services
Resumo
AWS Transformpode acelerar a modernização em grande escala do.NET, mainframe e cargas de trabalho. VMware Ele implanta agentes de IA especializados que automatizam tarefas complexas, como avaliações, análise de código, refatoração, decomposição, mapeamento de dependências, validação e planejamento de transformação. Esse padrão demonstra como usá-lo para AWS Transform modernizar um aplicativo de mainframe e depois implantá-lo na AWS infraestrutura usando o Hashicorp Terraform. Essas step-by-step instruções ajudam você a transformar CardDemo, que é um exemplo de aplicativo de mainframe de código aberto, de COBOL em um aplicativo Java moderno.
Pré-requisitos e limitações
Pré-requisitos
Limitações
AWS Transform está disponível apenas em alguns Regiões da AWS. Para obter uma lista completa das regiões suportadas, consulte Regiões suportadas para AWS Transform.
Há uma cota de serviço para recursos de transformação de mainframe em. AWS Transform Para mais informações, consulte Cotas para o AWS Transform.
Para colaborar em um espaço de trabalho compartilhado, todos os usuários devem ser usuários registrados da AWS IAM Identity Center mesma instância associada à sua instância do aplicativo AWS Transform web.
O bucket AWS Transform do Amazon Simple Storage Service (Amazon S3) deve estar na mesma região Conta da AWS .
Arquitetura
O diagrama a seguir mostra a end-to-end modernização do aplicativo legado e a implantação no Nuvem AWS. As credenciais do aplicativo e do banco de dados são AWS Secrets Manager armazenadas e a Amazon CloudWatch fornece recursos de monitoramento e registro.
O diagrama mostra o seguinte fluxo de trabalho:
Por meio de AWS IAM Identity Center, o usuário se autentica e acessa AWS Transform no. Conta da AWS
O usuário carrega o código do mainframe COBOL no bucket do Amazon S3 e inicia a transformação em. AWS Transform
AWS Transform moderniza o código COBOL em código Java nativo da nuvem e armazena o código modernizado no bucket do Amazon S3.
O Terraform cria a AWS infraestrutura para implantar o aplicativo modernizado, incluindo um Application Load Balancer, uma instância Amazon Elastic Compute Cloud EC2 (Amazon) e um banco de dados Amazon Relational Database Service (Amazon RDS). O Terraform implanta o código modernizado na instância da Amazon. EC2
Os arquivos VSAM são enviados para a Amazon EC2 e migrados da Amazon EC2 para o banco de dados do Amazon RDS.
Ferramentas
Serviços da AWS
O Amazon Elastic Compute Cloud (Amazon EC2) fornece capacidade de computação escalável no. Nuvem AWS Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente. Nesse padrão, as instâncias do cluster de failover do SQL Server são instaladas nas EC2 instâncias da Amazon.
AWS IAM Identity Centerajuda você a gerenciar centralmente o acesso de login único (SSO) aos seus Contas da AWS aplicativos e à nuvem.
O Amazon Relational Database Service (Amazon RDS) ajuda você a configurar, operar e escalar um banco de dados relacional no. Nuvem AWS
O AWS Secrets Manager ajuda a substituir credenciais codificadas, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo por programação.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
AWS Transformusa IA agente para ajudá-lo a acelerar a modernização de cargas de trabalho legadas, como.NET, mainframe e cargas de trabalho. VMware
Outras ferramentas
O Apache Maven é uma ferramenta de gerenciamento de projetos e automação de construção de software de código aberto para projetos Java.
O Apache Tomcat é um contêiner Servlet de código aberto e servidor web para código Java.
HashiCorp O Terraform é uma ferramenta de infraestrutura como código (IaC) que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem.
O Spring Boot é uma estrutura de código aberto construída sobre o Spring Framework em Java.
Repositório de código
O código desse padrão está disponível no repositório GitHub Mainframe Transformation E2E. Esse padrão usa o aplicativo de AWS CardDemomainframe de código aberto como um aplicativo de amostra.
Práticas recomendadas
Atribua a propriedade total do código e dos recursos destinados à migração.
Desenvolva e teste uma prova de conceito antes de escalar para uma migração completa.
Garanta o comprometimento de todas as partes interessadas.
Estabeleça canais de comunicação claros.
Defina e documente os requisitos mínimos de produto viável (MVP).
Estabeleça critérios claros de sucesso.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|
Crie um bucket. | Crie um bucket do Amazon S3 na mesma Conta da AWS região em que AWS Transform está habilitado. Você usa esse bucket para armazenar o código, os dados e os scripts adicionais do aplicativo de mainframe necessários para criar e executar o aplicativo. AWS Transform usa esse bucket para armazenar o código refatorado e outros arquivos associados à transformação. Para obter instruções, consulte Criação de um bucket na documentação do Amazon S3. | AWS geral, administrador da AWS |
Defina as permissões do CORS para o bucket. | Ao configurar seu bucket para AWS Transform acesso, você precisa configurar o compartilhamento de recursos de origem cruzada (CORS) para o bucket. Se isso não estiver configurado corretamente, talvez você não consiga usar as funcionalidades de visualização em linha ou comparação de arquivos do. AWS Transform Para obter instruções sobre como configurar o CORS para um bucket, consulte Uso do compartilhamento de recursos entre origens no bucket do Amazon S3. Para a política, consulte as permissões CORS do bucket S3 na AWS Transform documentação. | AWS geral, administrador da AWS |
Prepare o exemplo de código do aplicativo de mainframe. | Digite o comando a seguir para clonar o CardDemorepositório na sua estação de trabalho local: git clone https://github.com/aws-samples/aws-mainframe-modernization-carddemo.git
Comprima a aws-mainframe-modernization-carddemo pasta em um arquivo ZIP. Faça o upload do arquivo ZIP para o bucket do Amazon S3 que você criou. Para obter instruções, consulte Fazer uploads de objetos na documentação do Amazon S3.
| AWS geral, desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|
Configure o AWS Transform trabalho. | Acesse o aplicativo AWS Transform da web fazendo login com suas credenciais. Crie um novo espaço de trabalho seguindo as instruções em Configurando seu espaço de trabalho na AWS Transform documentação. Na página inicial do seu espaço de trabalho, escolha Perguntar AWS Transform para criar um trabalho. Em seguida, escolha Modernização do mainframe como o tipo de trabalho. Na janela de bate-papo, insira Transformar código em Java. Analise o tipo de trabalho, o nome e o objetivo sugeridos. Para confirmar, insira Sim. Escolha Criar trabalho.
| Desenvolvedor do aplicativo, proprietário do aplicativo |
Configure um conector. | Configure um conector com o bucket do Amazon S3 que você criou. Para obter instruções, consulte Configurar um conector na AWS Transform documentação. Quando solicitado, insira o caminho para o arquivo aws-mainframe-modernization-carddemo zip no bucket do Amazon S3. Aguarde a conclusão da análise.
| Desenvolvedor do aplicativo, proprietário do aplicativo |
Transforme o código. | Revise os resultados da análise do código de acordo com as instruções em Analisar código na AWS Transform documentação. Refatore o código do mainframe de acordo com as instruções em Refactor code na documentação. AWS Transform Para o aplicativo de CardDemo mainframe de amostra, você pode aceitar as configurações padrão. Aguarde a conclusão da refatoração. Escolha Exibir resultados para ver o caminho do código refatorado no bucket do Amazon S3. Anote esse caminho de arquivo. Você precisará disso mais tarde.
| Desenvolvedor do aplicativo, proprietário do aplicativo |
Tarefa | Descrição | Habilidades necessárias |
---|
Atualize os modelos. | Insira o comando a seguir para clonar o repositório Mainframe Transformation E2E em sua estação de trabalho local: git clone https://github.com/aws-samples/sample-mainframe-transformation-e2e.git
Digite o comando a seguir para recuperar seu endereço IP público atual: curl checkip.amazonaws.com
Digite o seguinte comando para navegar até o diretório infra: cd mainframe-transformation-e2e/infra
Abra o arquivo variables.tf . YOUR_IP_ADDRESS_HERE Substitua pelo seu endereço IP.
Se você tiver uma zona hospedada pública, faça o seguinte: hosted_zone_name Substitua pelo nome da sua zona hospedada.
Defina hosted_zone_enabled como true .
Se você não tiver uma zona hospedada pública, faça o seguinte: Insira os seguintes comandos para gerar um certificado autoassinado: 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
Digite o seguinte comando para importar o certificado para o AWS Certificate Manager (ACM): aws acm import-certificate \
--certificate fileb://my-certificate.pem \
--private-key fileb://my-private-key.pem
A saída desse comando inclui o Amazon Resource Name (ARN) do certificado importado. self_signed_cert_arn Substitua pelo ARN do seu certificado.
Defina hosted_zone_enabled como false .
aws_region Mude para a região de destino. O padrão é us-east-1 .
Salve e feche o arquivo variables.tf .
| AWS geral, administrador da AWS |
Implantar a infraestrutura. | Digite o seguinte comando para inicializar o Terraform: terraform init
Insira o comando a seguir para gerar um plano de execução: terraform plan
Revise o plano e valide os recursos e os componentes da infraestrutura que serão criados. Insira o comando a seguir para implantar a infraestrutura: terraform apply
Quando solicitado, digite sim para confirmar a implantação. Espere até que a implantação seja concluída.
| Terraform |
Tarefa | Descrição | Habilidades necessárias |
---|
Instale o software necessário. | Conecte-se à sua EC2 instância da Amazon usando AWS Systems Manager Session Manager. Digite o comando a seguir para alternar para o usuário root: sudo su -
Digite o comando a seguir para navegar para o diretório scripts : cd /opt/scripts
Revise o script install_software.sh. Esse script instala o Java 17, o Apache Maven e o Apache Tomcat 10.0.23. Atualize os scripts conforme necessário para seu caso de uso. Digite o comando a seguir para tornar o script executável: chmod +x install_software.sh
Digite o comando a seguir para executar o script: ./install_software.sh
| Desenvolvedor de aplicativos, engenheiro de migração |
Verifique a instalação do software. | Digite o seguinte comando para iniciar o servidor Tomcat: /opt/tomcat/apache-tomcat-10.0.23/bin/startup.sh
Digite o comando a seguir para verificar a resposta do servidor web: curl http://localhost:8080
A saída deve confirmar que o Tomcat está servindo uma página HTML.
| Desenvolvedor de aplicativos, engenheiro de migração |
Tarefa | Descrição | Habilidades necessárias |
---|
Baixe e extraia o código gerado. | Digite o comando a seguir para tornar o script download_and_extract.sh executável. Esse script baixa o código refatorado e a biblioteca de tempo de execução do Gapwalk armazenados no bucket do Amazon S3: chmod +x /opt/scripts/download_and_extract.sh
Insira o comando a seguir para executar o script . <file_path> Substitua pelo caminho para o arquivo generated.zip em seu bucket do Amazon S3: ./download_and_extract.sh <file_path>
Normalmente, o caminho do arquivo és3://<bucket-name>/transform_output/<aws_transform_job_id>/codetransformation/generated.zip . Digite o seguinte comando para navegar até a shared pasta: cd /opt/runtime/velocity/shared
Digite o comando a seguir para copiar o deploy-velocity-runtimescript.sh: cp /opt/scripts/deploy-velocity-runtime.sh .
Digite o comando a seguir para tornar o script copiado executável: chmod +x deploy-velocity-runtime.sh
Insira o comando a seguir para executar o script . Esse script copia todas as dependências necessárias do Web Application Archive (WAR) presentes nos arquivos do Project Object Model (POM) na pasta do repositório: ./deploy-velocity-runtime.sh
Verifique se a execução foi bem-sucedida verificando se não há erros e se as dependências WAR necessárias estão instaladas no seu repositório Maven local.
| Desenvolvedor de aplicativos, engenheiro de migração |
Crie o aplicativo modernizado. | Digite o comando a seguir para navegar até o diretório app-pom do projeto: cd /opt/codebase/app-pom/
Digite o seguinte comando para instalar o Maven: mvn clean install
Aguarde a conclusão da instalação e da construção. Ao executar esse comando para o CardDemo aplicativo, você pode encontrar mensagens de aviso para o app-web projeto. Você pode ignorar esses avisos com segurança. Após a conclusão bem-sucedida da construção, confirme a presença de app-service/target/app-service-1.0.0.war app-web/target/app-web-1.0.0.war e. Não reinicie o servidor Tomcat nesse estágio. Isso resultaria em erros devido à ausência dos bancos de dados necessários. Você deve configurar o banco de dados antes de poder reiniciar o servidor.
| Desenvolvedor de aplicativos, engenheiro de migração |
Tarefa | Descrição | Habilidades necessárias |
---|
Crie o banco de dados e os esquemas JICS. | Digite o comando a seguir para renomear a csd commands csd_commands pasta. Isso remove os espaços do nome da pasta: mv /opt/codebase/extra/csd\ commands/ /opt/codebase/extra/csd_commands
Digite o seguinte comando para navegar até o scripts diretório: cd /opt/scripts
Digite o comando a seguir para tornar o script de migração do banco de dados executável: chmod +x database_migration_setup.sh
Insira os comandos a seguir para configurar as seguintes variáveis como parâmetros: 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
Em que: Digite o comando a seguir para executar o script de migração do banco de dados: ./database_migration_setup.sh $RDS_ENDPOINT $SECRET_NAME $JICS_SQL_SCRIPT_DIR $INIT_JICS_SQL_SCRIPT_DIR
Digite o seguinte comando para se conectar ao banco de dados da sua EC2 instância Amazon: psql -h <Your Amazon RDS Endpoint> -U foo -p 5432 postgres
Quando solicitado, insira suas credenciais do banco de dados.
| Desenvolvedor de aplicativos, engenheiro de migração |
Valide a criação do banco de dados. | Digite o comando a seguir para visualizar todos os bancos de dados: \l
Digite o seguinte comando para alternar para o jics banco de dados: \c jics
Digite o comando a seguir para revisar uma lista das tabelas criadas: \dt
| Desenvolvedor de aplicativos, engenheiro de migração |
Migre dados para o banco de dados JICS. | Digite o comando a seguir para tornar o script execute_listcat_sql.sh executável: chmod +x execute_listcat_sql.sh
Insira o comando a seguir para configurar a PATH_TO_LISTCAT_SQL_FILES variável, que é o diretório que contém seus arquivos SQL LISTCAT: PATH_TO_LISTCAT_SQL_FILES=/opt/codebase/extra/listcat/sql/cluster/aws-mainframe-modernization-carddemo-main/app/catlg
Certifique-se de que as PATH_TO_LISTCAT_SQL_FILES variáveis RDS_ENDPOINT SECRET_NAME , e estejam definidas corretamente de acordo com as instruções anteriores. Digite o comando a seguir para executar o script execute_listcat_sql.sh: ./execute_listcat_sql.sh $RDS_ENDPOINT $SECRET_NAME $PATH_TO_LISTCAT_SQL_FILES
Esse script atualiza as propriedades do arquivo VSAM no banco de dados JICS e executa as consultas necessárias para modificar o banco de dados.
| Desenvolvedor de aplicativos, engenheiro de migração |
Tarefa | Descrição | Habilidades necessárias |
---|
Instale o aplicativo modernizado na EC2 instância da Amazon. | Digite o comando a seguir para tornar o script application_installer.sh executável: chmod +x /opt/scripts/application_installer.sh
Insira os comandos a seguir para configurar as seguintes variáveis como parâmetros: 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
Em que: <database_endpoint> é o endpoint do banco de dados Amazon RDS que você implantou por meio do Terraform.
<secret_name> é o nome do AWS Secrets Manager segredo que você implantou por meio do Terraform.
<bucket_name> é o nome do bucket Amazon S3 que contém o aplicativo modernizado.
<job_id> é a ID do AWS Transform trabalho.
Digite o comando a seguir para executar o 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
Na /opt/tomcat/apache-tomcat-10.0.23/workingdir/config pasta, no application-utility-pgmarquivo.yml, altere o parâmetro de codificação para o seguinte: encoding : CP1047
Ao refatorar aplicativos AWS Transform automaticamente usando o AWS Blu Age, você configura o aplicativo e seu ambiente de execução por meio de arquivos YAML. Por exemplo, você pode configurar o registro no arquivo application-main.yml do aplicativo. Para obter mais informações sobre as propriedades disponíveis, consulte Habilitar propriedades para o AWS Blu Age Runtime.
| Desenvolvedor de aplicativos, arquiteto de nuvem |
Reinicie o servidor Tomcat. | Digite o comando a seguir para navegar até o diretório de trabalho: cd /opt/tomcat/apache-tomcat-10.0.23/workingdir
Insira os seguintes comandos para parar e iniciar o servidor Tomcat: /opt/tomcat/apache-tomcat-10.0.23/bin/shutdown.sh
/opt/tomcat/apache-tomcat-10.0.23/bin/startup.sh
Digite o comando a seguir para monitorar os registros de inicialização do serviço Tomcat: tail -f /opt/tomcat/apache-tomcat-10.0.23/logs/catalina.out
| Desenvolvedor de aplicativos, arquiteto de nuvem |
Migre o conjunto de dados do VSAM. | Abra o EC2 console da Amazon. No painel de navegação, escolha Load balancers. Escolha o balanceador de carga que foi criado por meio do Terraform. Localize o nome do Sistema de Nomes de Domínio (DNS) do seu Application Load Balancer, como. application-load-balancer-<id>.<region>.elb.amazonaws.com No seu navegador, navegue atéhttp://<dns_name>/gapwalk-application/scripts/data-load , onde <dns_name> está o nome do DSN do Application Load Balancer. Isso inicia o script de carregamento de dados. Aguarde até que o script seja concluído. Quando terminar, o navegador exibirá CONCLUÍDO. Na EC2 instância da Amazon, abra um novo terminal. Insira o seguinte comando para se conectar ao banco de dados do Amazon RDS, <database_endpoint> substituindo-o pelo seu valor: psql -h <database_endpoint> -U foo -p 5432 postgres
Quando solicitado, insira suas credenciais para se conectar ao banco de dados. Digite o comando a seguir para visualizar todos os bancos de dados: \l
Digite o seguinte comando para alternar para o bluesam banco de dados: \c bluesam
Digite o comando a seguir para revisar uma lista das tabelas criadas: \dt
Insira o comando a seguir para validar o carregamento de dados: SELECT * FROM public.aws_m2_carddemo_usrsec_vsam_ksds;
A saída deve mostrar 10 registros retornados.
| Desenvolvedor de aplicativos, engenheiro de migração |
Atualize os parâmetros nos scripts do Groovy. | Digite o comando a seguir para navegar até o diretório do script: cd /opt/tomcat/apache-tomcat-10.0.23/webapps/workingdir/scripts
Em todos os arquivos Groovy que contêm referência a arquivos simples, atualize as seguintes configurações de arquivo: Caminho do arquivo local — O caminho para o arquivo simples no diretório local da sua EC2 instância da Amazon Tipo de sistema de arquivos — O sistema de arquivos que contém os arquivos simples Tamanho do registro — O tamanho do arquivo simples
Para referência, consulte o exemplo do script dusrsecj.jcl.groovy no repositório de código. Salve e feche os arquivos.
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|
Teste o aplicativo modernizado. | Acesse o aplicativo on-line por meio do Application Load Balancer (http://<your-load-balancer-dns> ) ou da zona hospedada (https://myhostedzone.dev/ ). Para o ID da transação, insiraCC00 . Para o nome do usuário, insiraUSER0001 . Para a senha, insiraPASSWORD . Após o login bem-sucedido, o menu principal é exibido.
| Desenvolvedor de aplicativos, engenheiro de testes |
Verifique os scripts em lote. | Acesse a interface de scripts por meio do Application Load Balancer (http://<your-load-balancer-dns>/gapwalk-application/scripts ) ou da zona hospedada (https://myhostedzone.dev/gapwalk-application/scripts ). Escolha um script para executar, como o script dusrsecj.jcl.Groovy. Verifique se o script foi executado com êxito. Veja a seguir um exemplo de saída após a execução bem-sucedida. { "exitCode": 0, "stepName": "STEP03", "program": "IDCAMS", "status": "Succeeded" }
| Desenvolvedor de aplicativos, engenheiro de testes |
Tarefa | Descrição | Habilidades necessárias |
---|
Prepare-se para excluir a infraestrutura. | Insira o seguinte comando para remover a proteção contra exclusão da instância do Amazon RDS: aws rds modify-db-instance \
--db-instance-identifier <your-db-instance-name> \
--no-deletion-protection \
--apply-immediately
Insira o comando a seguir para remover a proteção contra exclusão do Application Load Balancer: aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn <your-load-balancer-arn> \
--attributes Key=deletion_protection.enabled,Value=false
Insira os seguintes comandos para excluir o conteúdo dos buckets do 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
| AWS geral |
Exclua a infraestrutura. | Essas etapas excluirão permanentemente seus recursos. Certifique-se de ter feito backup de todos os dados importantes antes de continuar. Digite o seguinte comando para navegar até a infra pasta: cd /mainframe-transformation-e2e/infra
Digite o comando a seguir para excluir a infraestrutura: terraform destroy --auto-approve
| AWS geral |
Solução de problemas
Problema | Solução |
---|
Autenticação Terraform | Certifique-se de que as AWS credenciais estejam configuradas corretamente. Verifique se você selecionou o AWS perfil correto. Confirme se você tem as permissões necessárias.
|
Erros relacionados ao Tomcat | Verifique se há exceções em /opt/tomcat/apache-tomcat-10.0.23/logs catalina.out. Digite o comando a seguir para alterar a propriedade da pasta Tomcat para o usuário Tomcat: chown -R tomcat:tomcat /opt/tomcat/*
|
O nome do URL não está carregando | Certifique-se de que o grupo de segurança do Application Load Balancer tenha seu endereço IP na regra de entrada como fonte. |
Problema de autenticação no registro do Tomcat | Confirme se a senha secreta do banco de dados AWS Secrets Manager e a senha em server.xml coincidem. |
Recursos relacionados
AWS Orientação prescritiva
AWS documentação de serviço
AWS postagens no blog