Migre do Oracle WebLogic para o Apache Tomcat (TomEE) na Amazon ECS - Recomendações da AWS

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á.

Migre do Oracle WebLogic para o Apache Tomcat (TomEE) na Amazon ECS

Criado por Anya Epishcheva (AWS) e Harshad Gohil () AWS

Tipo R: redefinir a plataforma

Origem: contêineres

Alvo: Apache Tomcat (TomEE) na Amazon ECS

Criado por: AWS

Ambiente: PoC ou piloto

Tecnologias: contêineres e microsserviços; migração

Workload: Oracle

AWSserviços: Amazon ECS

Resumo

Esse padrão discute as etapas para migrar um SPARC sistema Oracle Solaris local executando Oracle para uma instalação baseada em contêiner Docker executando o Apache TomEE (Apache Tomcat com suporte adicional de contêiner) com o Amazon Elastic Container Service (Amazon). WebLogic ECS

Para obter informações sobre a migração de bancos de dados associados aos aplicativos que você está migrando do Oracle WebLogic para o Tomcat, consulte os padrões de migração de banco de dados neste catálogo. 

Práticas recomendadas

As etapas para migrar aplicativos web Java e Java Enterprise Edition (Java EE) variam, dependendo do número de recursos específicos do contêiner usados pelo aplicativo. Os aplicativos baseados em Spring geralmente são mais fáceis de migrar, porque eles têm um pequeno número de dependências no contêiner de implantação. Por outro lado, os aplicativos Java EE que usam Enterprise JavaBeans (EJBs) e recursos gerenciados de contêiner, como pools de threads, Java Authentication and Authorization Service (JAAS) e Container-Managed Persistence (CMP) exigem mais esforço. 

Os aplicativos desenvolvidos para o Oracle Application Server frequentemente usam o pacote Oracle Identity Management. Os clientes que migram para servidores de aplicativos de código aberto frequentemente optam por reimplementar o gerenciamento de identidade e acesso usando SAML a federação baseada. Outros usam o Oracle HTTP Server Webgate para casos em que migrar do pacote Oracle Identity Management não é uma opção. 

Os aplicativos web Java e Java EE são ótimos candidatos para implantação em AWS serviços baseados em Docker, como AWS Fargate e Amazon. ECS Os clientes frequentemente escolhem uma imagem do Docker com a versão mais recente do servidor de aplicativos de destino (como TomEE) e o Java Development Kit (JDK) pré-instalado. Eles instalam seus aplicativos em cima da imagem base do Docker, a publicam no registro do Amazon Elastic Container Registry (AmazonECR) e a usam para a implantação escalável de seus aplicativos no AWS Fargate ou na Amazon. ECS 

Idealmente, a implantação do aplicativo é elástica; ou seja, o número de instâncias do aplicativo aumenta ou diminui, dependendo do tráfego ou da workload. Isso significa que as instâncias do aplicativo precisam ficar on-line ou ser encerradas para ajustar a capacidade à demanda. 

Ao mover um aplicativo Java paraAWS, considere torná-lo sem estado. Esse é um princípio arquitetônico fundamental do AWS Well-Architected Framework que permitirá o escalonamento horizontal usando a conteinerização. Por exemplo, a maioria dos aplicativos web baseados em Java armazena localmente as informações da sessão do usuário. Para sobreviver ao encerramento da instância do aplicativo devido ao escalonamento automático no Amazon Elastic Compute Cloud EC2 (Amazon) ou por outros motivos, as informações da sessão do usuário devem ser armazenadas globalmente para que os usuários do aplicativo web possam continuar trabalhando de forma contínua e transparente sem se reconectar ou se reconectar a um aplicativo web. Há várias opções de arquitetura para essa abordagem, incluindo Amazon ElastiCache for Redis ou armazenar o estado da sessão em um banco de dados global. Servidores de aplicativos, como o TomEE, têm plug-ins que permitem o armazenamento e o gerenciamento de sessões via Redis, bancos de dados e outros armazenamentos de dados globais.

Use uma ferramenta comum e centralizada de registro e depuração que seja facilmente integrada ao Amazon e ao X-Ray. CloudWatch AWS A migração oferece uma oportunidade de melhorar os recursos do ciclo de vida do aplicativo. Por exemplo, talvez você queira automatizar o processo de criação para que as alterações sejam feitas com facilidade usando um pipeline de integração contínua e entrega contínua (CI/CD). Isso pode exigir alterações no aplicativo para que ele possa ser implantado sem qualquer tempo de inatividade. 

Pré-requisitos e limitações

Pré-requisitos

  • Uma AWS conta ativa 

  • Código-fonte Java e JDK

  • Aplicativo de origem criado com Oracle WebLogic

  • Solução definida para gerenciamento de identidade e acesso (SAMLou Oracle Webgate)

  • Solução definida para gerenciamento de sessões de aplicativos (migrando like-for-like ou com a Amazon ElastiCache, ou tornando o aplicativo sem estado, se necessário)

  • Entendendo se a equipe precisa refatorar bibliotecas específicas do J2EE para portabilidade para o Apache toMEE (consulte Status de implementação do Java EE 7 no site do Apache)

  • Imagem TomEE reforçada com base nos seus requisitos de segurança

  • Imagem do contêiner com destino pré-instalado TomEE 

  • Correção de aplicativos acordada e implementada, se necessário (por exemplo, registro em log de debug de criação, autenticação)

Versões do produto

  • Oracle WebLogic OC4J, 9i, 10g 

  • Tomcat 7 (com Java 1.6 ou superior)

Arquitetura

 Pilha de tecnologia de origem

  • Aplicativo web criado usando Oracle WebLogic

  • Aplicativo Web usando Oracle Webgate ou autenticação SAML

  • Aplicativos Web conectados ao Oracle Database versão 10g e posterior

Pilha de tecnologias de destino

Arquitetura de destino

Nuvem AWS architecture diagram showing VPC, application subnets, and shared services integration.

Ferramentas

Para operar no TomEE, um aplicativo Java deve ser reconstruído em um arquivo .war. Em alguns casos, podem ser necessárias alterações no aplicativo para operar o aplicativo no TomEE; você deve verificar se as opções de configuração e as propriedades do ambiente necessárias estão definidas corretamente.  

Além disso, as pesquisas Java Naming and Directory Interface (JNDI) e os namespaces JavaServer Pages (JSP) devem ser definidos corretamente. Considere verificar os nomes dos arquivos usados pelo aplicativo para evitar colisões de nomes com bibliotecas T integradas. Por exemplo, persistence.xml é um nome de arquivo usado pela JPA estrutura Apache Open (que vem junto com o Open EJB in TomEE) para fins de configuração. O arquivo persistence.xml PUI contém declarações de bean do Spring framework.  

A versão 7.0.3 e posterior do ToMee (Tomcat 8.5.7 e posterior) retorna uma resposta HTTP 400 (solicitação inválida) para raw (não codificada) com caracteres especiais. URLs A resposta do servidor aparece como uma página em branco para o usuário final. As versões anteriores do TomEE e do Tomcat permitiam o uso de certos caracteres especiais não codificados emURLs; no entanto, isso é considerado inseguro, conforme declarado no site -2016-6816. CVE Para resolver o problema URL de codificação, o URLs passado diretamente para o navegador JavaScript deve ser codificado com o método encode URI () em vez de ser usado como strings brutas.

Depois de implantar o arquivo.war no TomEE, monitore o log de inicialização no Linux cat em busca de bibliotecas compartilhadas ausentes e extensões específicas do Oracle para adicionar componentes ausentes das bibliotecas Tomcat. 

Procedimento geral

  • Configure o aplicativo no TomEE.

  • Identifique e reconfigure arquivos e recursos de configuração específicos do servidor de aplicativos, do formato de origem ao de destino.

  • Identifique e reconfigure JNDI recursos.

  • Ajuste o EJB namespace e as pesquisas para o formato exigido pelo servidor do aplicativo de destino (se aplicável).

  • Reconfigure as funções de segurança e os mapeamentos principais específicos do contêiner do JAAS aplicativo (se aplicável).

  • Empacote o aplicativo e as bibliotecas compartilhadas em um arquivo .war.

  • Implante o arquivo .war no TomEE usando o contêiner do Docker fornecido.

  • Monitore o log de início para identificar qualquer biblioteca compartilhada ausente e extensões de descritor de implantação. Se algum for encontrado, volte para a primeira tarefa.

  • Teste o aplicativo instalado em relação ao RDS banco de dados restaurado da Amazon.

  • Inicie a arquitetura completa com um balanceador de carga e um ECS cluster da Amazon seguindo as instruções em Implantar contêineres do Docker.

  • Atualize o URLs para apontar para o balanceador de carga.

  • Atualize o banco de dados de gerenciamento de configuração (CMDB).

Épicos

TarefaDescriçãoHabilidades necessárias
Executar a descoberta de aplicativos (pegada do estado atual e linha de base de desempenho).BA, líder de migração
Validar versões e mecanismos do banco de dados de origem e de destino.DBA
Validar o design do aplicativo de origem e de destino (gerenciamento de identidade e sessão).DBA, engenheiro de migração, proprietário do aplicativo
Identificar os requisitos de hardware e armazenamento para a instância do servidor de destino.DBA, SysAdmin
Escolha o tipo de instância adequado com base na capacidade, nos atributos de armazenamento e nos atributos de rede.DBA, SysAdmin
Identifique os requisitos de segurança do acesso à rede para os bancos de dados de origem e de destino.DBA, SysAdmin
Identificar a estratégia e as ferramentas de migração de aplicativos.DBA, Líder de migração
Concluir o projeto da migração e o guia de migração do aplicativo.Líder de desenvolvimento, líder de migração
Concluir o runbook de migração do aplicativo.Líder de construção, líder de substituição, líder de teste, líder de migração
TarefaDescriçãoHabilidades necessárias
Crie uma nuvem privada virtual (VPC).SysAdmin
Criar grupos de segurança.SysAdmin
Configure e inicie a instância de RDS banco de dados Amazon.DBA, SysAdmin
Configure a ECS implantação da Amazon.SysAdmin
Empacotar seu aplicativo como uma imagem do Docker.SysAdmin
Envie a imagem para o ECR registro da Amazon (ou pule esta etapa e envie-a para o ECS cluster da Amazon).SysAdmin
Configure a definição da tarefa para o aplicativo e as opções ECS de serviços da Amazon.SysAdmin
Configure seu cluster, revise as configurações de segurança e defina as funções de AWS Identity and Access Management (IAM).SysAdmin
Iniciar sua configuração e execute testes de acordo com o runbook de migração do aplicativo.SysAdmin
TarefaDescriçãoHabilidades necessárias
Obtenha a permissão da sua equipe de garantia de segurança para mover os dados de produção para AWS o.DBA, engenheiro de migração, proprietário do aplicativo
Criar e obter acesso aos endpoints para buscar arquivos de backup do banco de dados.DBA
Usar o mecanismo de banco de dados nativo ou ferramentas de terceiros para migrar objetos e dados do banco de dados.DBA
Executar os testes necessários no runbook de migração de aplicativos para confirmar a migração de dados bem-sucedida.DBA, engenheiro de migração, proprietário do aplicativo
TarefaDescriçãoHabilidades necessárias
Criar uma solicitação de alteração (CR) para migração.Líder de substituição
Obter a aprovação de CR para migração.Líder de substituição
Seguir a estratégia de migração de aplicativos no runbook de migração de aplicativos.DBA, engenheiro de migração, proprietário do aplicativo
Atualizar o aplicativo (se necessário).DBA, engenheiro de migração, proprietário do aplicativo
Conclua testes funcionais e não funcionais, de validação de dados e de desempenho. SLALíder de teste, proprietário do aplicativo, usuários do aplicativo
TarefaDescriçãoHabilidades necessárias
Obter a aprovação do aplicativo ou do proprietário da empresa.Líder de substituição
Fazer um exercício com tópicos de tabela para percorrer todas as etapas do runbook de substituição.DBA, engenheiro de migração, proprietário do aplicativo
Mudar os clientes do aplicativo para a nova infraestrutura.DBA, engenheiro de migração, proprietário do aplicativo
TarefaDescriçãoHabilidades necessárias
Encerre AWS os recursos temporários.DBA, Engenheiro de migração, SysAdmin
Revise e valide os documentos do projeto.Líder de migração
Reunir métricas sobre o tempo de migração, porcentagem de manual versus ferramenta, economia de custos, etc.Líder de migração
Feche o projeto e forneça feedback.Líder de migração, proprietário do aplicativo

Referências

Tutoriais e vídeos