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, 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 aceitar, consulte Supported Regions for AWS Transform.
Há uma cota de serviço para recursos de transformação de mainframe no 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 Centro de Identidade do AWS IAM 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 Centro de Identidade do AWS IAM, 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 no 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.
Centro de Identidade do AWS IAMajuda 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 na 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 criaçã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.
O HashiCorp Terraform é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código.
O Spring Boot é um framework de código aberto baseado no 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
Atribuir a propriedade total do código e dos recursos destinados para migração.
Desenvolver e testar uma prova de conceito antes de escalar para uma migração completa.
Garantir o comprometimento de todas as partes interessadas.
Estabelecer canais de comunicação claros.
Definir e documentar os requisitos de produto mínimo viável (MVP).
Estabelecer critérios claros de sucesso.
Épicos
| Tarefa | Description | 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 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 de 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 Usar o compartilhamento de recursos de origem cruzada 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 da aplicação 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
Compacte a pasta aws-mainframe-modernization-carddemo em um arquivo ZIP. Faça upload do arquivo ZIP no 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 | Description | 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 Mainframe Modernization como o tipo de trabalho. Na janela de chat, insira Transform code to 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 for solicitado, insira o caminho para o arquivo zip aws-mainframe-modernization-carddemo 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 | Description | Habilidades necessárias |
|---|
Atualize os modelos. | Insira o seguinte comando 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
Insira o seguinte comando para recuperar seu endereço IP público atual: curl checkip.amazonaws.com
Insira o seguinte comando para acessar o diretório infra: cd mainframe-transformation-e2e/infra
Abra o arquivo variables.tf. Substitua YOUR_IP_ADDRESS_HERE pelo seu endereço IP. Se você tiver uma zona hospedada pública, faça o seguinte: Substitua hosted_zone_name 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 nome do recurso da Amazon (ARN) do certificado importado. Substitua self_signed_cert_arn pelo ARN do seu certificado. Defina hosted_zone_enabled como false.
Mude aws_region 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. | Insira o seguinte comando para inicializar o Terraform: terraform init
Insira o seguinte comando 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 seguinte comando para implantar a infraestrutura: terraform apply
Quando solicitado, insira sim para confirmar a implantação. Espere até que a implantação seja concluída.
| Terraform |
| Tarefa | Description | Habilidades necessárias |
|---|
Instale o software necessário. | Conecte-se à sua EC2 instância da Amazon usando AWS Systems Manager Session Manager. Insira o seguinte comando para alternar para o usuário-raiz: 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. Insira o seguinte comando para tornar o script executável: chmod +x install_software.sh
Insira o seguinte comando para executar o script: ./install_software.sh
| Desenvolvedor de aplicativos, engenheiro de migração |
Verifique a instalação de softwares. | Insira o seguinte comando para iniciar o servidor Tomcat: /opt/tomcat/apache-tomcat-10.0.23/bin/startup.sh
Insira o seguinte comando para verificar a resposta do servidor da web: curl http://localhost:8080
A saída deve confirmar que o Tomcat está veiculando uma página HTML.
| Desenvolvedor de aplicativos, engenheiro de migração |
| Tarefa | Description | Habilidades necessárias |
|---|
Faça o download e extraia o código gerado. | Insira 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 runtime 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 . Substitua <file_path> pelo caminho para o arquivo generated.zip no 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. Insira o seguinte comando para navegar até a pasta shared: cd /opt/runtime/velocity/shared
Digite o comando a seguir para copiar o deploy-velocity-runtimescript.sh: cp /opt/scripts/deploy-velocity-runtime.sh .
Insira o seguinte comando 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 uma aplicação modernizada. | Insira o seguinte comando para acessar o diretório do projeto app-pom: cd /opt/codebase/app-pom/
Insira o seguinte comando para instalar o Maven: mvn clean install
Aguarde até que a instalação e a compilação sejam concluídas. Ao executar esse comando para o CardDemo aplicativo, você pode encontrar mensagens de aviso para o app-web projeto. Você pode ignorar tranquilamente esses avisos. Após a conclusão bem-sucedida da compilação, confirme a presença de app-service/target/app-service-1.0.0.war e app-web/target/app-web-1.0.0.war. 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 reiniciar o servidor.
| Desenvolvedor de aplicativos, engenheiro de migração |
| Tarefa | Description | Habilidades necessárias |
|---|
Crie o banco de dados e os esquemas JICS. | Insira o comando a seguir para renomear a pasta csd commands como csd_commands. Isso remove os espaços do nome da pasta: mv /opt/codebase/extra/csd\ commands/ /opt/codebase/extra/csd_commands
Insira o seguinte comando para navegar até o diretório scripts: cd /opt/scripts
Insira o seguinte comando para tornar o script de migração do banco de dados executável: chmod +x database_migration_setup.sh
Insira os seguintes comandos 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: Insira o seguinte comando 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 as credenciais do seu banco de dados.
| Desenvolvedor de aplicativos, engenheiro de migração |
Valide a criação de banco de dados. | Insira o seguinte comando para exibir todos os bancos de dados: \l
Insira o seguinte comando para alternar para o banco de dados jics: \c jics
Insira o seguinte comando para analisar uma lista das tabelas criadas: \dt
| Desenvolvedor de aplicativos, engenheiro de migração |
Migre dados para o banco de dados JICS. | Insira o seguinte comando para tornar o script execute_listcat_sql.sh executável: chmod +x execute_listcat_sql.sh
Insira o seguinte comando para configurar a variável PATH_TO_LISTCAT_SQL_FILES, que é o diretório que contém seus arquivos LISTCAT SQL: PATH_TO_LISTCAT_SQL_FILES=/opt/codebase/extra/listcat/sql/cluster/aws-mainframe-modernization-carddemo-main/app/catlg
Certifique-se de que as variáveis RDS_ENDPOINT, SECRET_NAME e PATH_TO_LISTCAT_SQL_FILES estejam definidas corretamente de acordo com as instruções anteriores. Insira o seguinte comando 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 | Description | Habilidades necessárias |
|---|
Instale o aplicativo modernizado na EC2 instância da Amazon. | Insira o seguinte comando para tornar o script application_installer.sh executável: chmod +x /opt/scripts/application_installer.sh
Insira os seguintes comandos 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 do Amazon S3 que contém a aplicação modernizada.
<job_id>é a ID do AWS Transform trabalho.
Insira o seguinte comando 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 em log no arquivo application-main.yml da aplicação. 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. | Insira o seguinte comando para navegar até o diretório de trabalho: cd /opt/tomcat/apache-tomcat-10.0.23/workingdir
Insira os seguintes comandos para interromper 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
Insira o seguinte comando para monitorar os logs de startup do servidor 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 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> é o nome do DSN do Application Load Balancer. Isso inicia o script de carregamento de dados. Aguarde a conclusão do script. Quando terminar, o navegador exibirá DONE. Na EC2 instância da Amazon, abra um novo terminal. Insira o seguinte comando para se conectar ao banco de dados do Amazon RDS, substituindo <database_endpoint> pelo seu valor: psql -h <database_endpoint> -U foo -p 5432 postgres
Quando for solicitado, insira as credenciais para se conectar ao banco de dados. Insira o seguinte comando para exibir todos os bancos de dados: \l
Insira o seguinte comando para alternar para o banco de dados bluesam: \c bluesam
Insira o seguinte comando para analisar uma lista das tabelas criadas: \dt
Insira o seguinte comando para validar o carregamento dos dados: SELECT * FROM public.aws_m2_carddemo_usrsec_vsam_ksds;
A saída deve mostrar dez registros retornados.
| Desenvolvedor de aplicativos, engenheiro de migração |
Atualize os parâmetros nos scripts do Groovy. | Insira o seguinte comando para navegar até o diretório de scripts: cd /opt/tomcat/apache-tomcat-10.0.23/webapps/workingdir/scripts
Em todos os arquivos do 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 | Description | Habilidades necessárias |
|---|
Teste a aplicação modernizada. | Acesse a aplicação 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, insira CC00. Para o nome do usuário, insira USER0001. Para a senha, insira PASSWORD. 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 ser executado, como o script DUSRSECJ.jcl.groovy. Verifique se o script foi executado com êxito Este é um exemplo de saída após uma execução bem-sucedida. { "exitCode": 0, "stepName": "STEP03", "program": "IDCAMS", "status": "Succeeded" }
| Desenvolvedor de aplicativos, engenheiro de testes |
| Tarefa | Description | Habilidades necessárias |
|---|
Preparar 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 seguinte comando 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. Insira o seguinte comando para navegar até a pasta infra: cd /mainframe-transformation-e2e/infra
Insira o seguinte comando para excluir a infraestrutura: terraform destroy --auto-approve
| AWS geral |
Solução de problemas
| Problema | Solução |
|---|
Autenticação do Terraform | Certifique-se de que as AWS credenciais estejam configuradas corretamente. Verifique se você selecionou o AWS perfil correto. Confirem se você tem as permissões necessárias.
|
Erros relacionados ao Tomcat | Verifique se há exceções em catalina.out em /opt/tomcat/apache-tomcat-10.0.23/logs. Insira o seguinte comando 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 log 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