JBoss EAP 애플리케이션을 Azure Red Hat OpenShift로 마이그레이션

이 가이드에서는 Azure Red Hat OpenShift에서 실행되도록 기존 JBoss EAP 애플리케이션을 마이그레이션할 때 알아야 할 사항에 대해 설명합니다.

사전 마이그레이션

마이그레이션을 성공적으로 수행하려면 시작하기 전에 다음 섹션에서 설명하는 평가 및 인벤토리 단계를 완료합니다.

대상이 마이그레이션 작업에 적합한 대상인지 확인합니다.

JBoss EAP 애플리케이션을 Azure로 성공적으로 마이그레이션하는 첫 번째 단계는 가장 적절한 마이그레이션 대상을 선택하는 것입니다. JBoss EAP는 Azure VM(가상 머신) 또는 Azure Red Hat OpenShift에서 잘 실행됩니다.

VM 대상은 온-프레미스 배포와 가장 유사하기 때문에 가장 쉬운 선택입니다. 가상 머신에 대한 관리 및 배포 환경은 온-프레미스에 있는 것과 유사합니다. VM을 선택하면 현대화를 연기할 수 있습니다.

Red Hat OpenShift는 테스트되고 신뢰할 수 있는 서비스를 결합하여 애플리케이션 개발, 현대화, 배포, 실행 및 관리의 마찰을 줄입니다. Azure Red Hat OpenShift는 Kubernetes를 기반으로 합니다. Azure Red Hat OpenShift는 퍼블릭 클라우드, 온-프레미스, 하이브리드 클라우드 또는 에지 아키텍처에서 일관된 환경을 제공합니다.

변경을 최소화하는 것이 마이그레이션 작업의 가장 중요한 요소인 경우 VM 기반 마이그레이션을 고려합니다. 이 경우 JBoss EAP 애플리케이션을 Azure VM의 JBoss EAP로 마이그레이션을 참조 하세요. 런타임 비용을 줄이기 위해 Red Hat OpenShift 내에서 실행되도록 애플리케이션을 변환하는 것을 허용할 수 있는 경우 Azure Red Hat OpenShift 기반 마이그레이션을 고려하세요. 이 경우 JBoss EAP 애플리케이션을 Azure Red Hat OpenShift의 JBoss EAP로 마이그레이션합니다. OpenShift용 JBoss EAP와 JBoss EAP의 차이점을 이해하려면 비교: JBoss EAP 및 OpenShift용 JBoss EAP를 참조하세요.

미리 빌드된 Azure Marketplace 제품이 좋은 시작점인지 확인

먼저 Azure Red Hat OpenShift가 적절한 배포 대상인지 결정합니다. 다음으로, 미리 빌드 된 Azure Marketplace 제품이 좋은 시작점인지 여부를 결정합니다. 미리 빌드된 Azure Marketplace 제품에 대해 다음 사항을 고려합니다.

  • Red Hat과 Microsoft는 Azure Red Hat OpenShift에서 JBoss EAP를 신속하게 프로비전할 수 있도록 이 제품을 만들었습니다.
  • 높은 수준에서 제품은 다음 단계를 자동화합니다.

미리 빌드된 Azure Marketplace 제품을 사용하지 않는 경우 EAP 운영자를 직접 사용하는 방법을 배워야 합니다. 연산자 마스터는 이 문서의 범위를 벗어납니다. EAP 운영자에 대한 전체 설명서는 Red Hat에서 확인할 수 있습니다.

이 섹션의 re기본der는 미리 빌드된 Azure Marketplace 제품을 사용하도록 결정하거나 운영자를 직접 사용하기 위한 몇 가지 고려 사항을 제공합니다.

JBoss EAP 버전이 호환되는지 확인

기존 JBoss EAP 버전은 연산자가 지원하는 버전 중 하나여야 합니다. 자세한 내용은 Red Hat 설명서의 버전 호환성 및 지원을 참조하세요.

인벤토리 서버 용량

현재 프로덕션 서버의 하드웨어(메모리, CPU, 디스크) 및 평균 및 최대 요청 수 및 리소스 사용률을 문서화합니다. 선택한 마이그레이션 경로에 관계없이 이 정보가 필요합니다. 다음과 같은 측면은 서버 용량에 대한 자세한 인벤토리를 통해 얻을 수 있습니다.

  • 노드 풀에서 VM 크기를 선택하는 방법을 안내합니다.
  • 컨테이너에서 사용할 메모리 양을 이해합니다.
  • 컨테이너에 필요한 CPU 공유 수를 파악합니다.

Azure Red Hat OpenShift에서 노드 풀의 크기를 조정할 수 있습니다. 자세한 내용은 Red Hat 설명서의 Microsoft Azure인 클러스터 크기 조정을 참조하세요.

모든 비밀 인벤토리

Azure Key Vault와 같은 "서비스로 구성" 기술이 도입되기 전에는 "비밀"이라는 개념이 잘 정의되지 않았습니다. 대신, 현재 "비밀"이라고 부르는 것으로 효과적으로 작동하는 서로 다른 구성 설정 집합이 있었습니다. JBoss EAP와 같은 앱 서버를 사용하는 경우 이러한 비밀은 다양한 구성 파일 및 구성 저장소에 있습니다. 프로덕션 서버의 모든 속성 및 구성 파일에서 비밀 및 암호를 확인합니다. 애플리케이션에서 custom-config.xml 또는 jboss-web.xml과 같은 구성 파일을 검사 합니다. 암호 또는 자격 증명을 포함하는 구성 파일도 애플리케이션 내에서 찾을 수 있습니다. 자세한 내용은 Azure Key Vault 기본 개념을 참조 하세요.

비밀의 견고한 인벤토리가 있으면 비밀에 대한 EAP 운영자 설명서를 참조하세요. 자세한 내용은 Red Hat 설명서에서 비밀 만들기를 참조하세요.

모든 인증서 인벤토리화

공용 SSL 엔드포인트에 사용되는 모든 인증서를 문서화합니다. 다음 명령을 실행하여 프로덕션 서버의 모든 인증서를 볼 수 있습니다.

keytool -list -v -keystore <path to keystore>

인증서의 견고한 인벤토리가 있으면 Azure Red Hat OpenShift에서 구성할 수 있습니다. 자세한 내용은 Red Hat 설명서의 OpenShift Container Platform(replace)의 TLS 구성을 참조하세요.

지원되는 Java 버전이 올바르게 작동하는지 확인

JBoss EAP에서 Azure Red Hat OpenShift로의 모든 마이그레이션 경로에는 각 경로에 따라 달라지는 특정 Java 버전이 필요합니다. 지원되는 버전을 사용하여 애플리케이션을 올바르게 실행할 수 있는지 확인해야 합니다.

참고 항목

이 유효성 검사는 현재 서버가 지원되지 않는 JDK(예: Oracle JDK 또는 IBM OpenJ9)에서 실행 중인 경우에 특히 중요합니다.

현재 Java 버전을 가져오려면 프로덕션 서버에 로그인하고 다음 명령을 실행합니다.

java -version

JNDI 리소스 인벤토리

모든 JNDI 리소스를 인벤토리화합니다. 예를 들어 데이터베이스와 같은 데이터 원본에는 JPA가 특정 데이터베이스에 EntityManager 인스턴스를 올바르게 바인딩할 수 있도록 하는 연결된 JNDI 이름이 있을 수 있습니다. JNDI 리소스 및 데이터베이스에 대한 자세한 내용은 Red Hat 설명서의 Datasource Management를 참조하세요. ActiveMQ Artemis 메시지 브로커와 같은 기타 JNDI 관련 리소스에는 마이그레이션 또는 재구성이 필요할 수 있습니다. ActiveMQ Artemis 구성에 대한 자세한 내용은 Red Hat 설명서에서 메시징 구성을 참조하세요.

세션 복제본(replica) 사용 여부 확인

애플리케이션이 Infinispan을 사용하거나 사용하지 않고 세션 복제본(replica) 의존하는 경우 다음 세 가지 옵션이 있습니다.

  • Infinispan은 Azure 가상 머신에서 잘 작동하지만 고가용성 기능을 제공하는 프로필을 사용하는 경우 JGroups 구성에 유의해야 합니다. 시스템이 관리되는 do기본 또는 독립 실행형 서버로 작동하고 있는지 확인합니다.
    • 관리되는 do기본 경우 ha 또는 full-ha 프로필은 JGroups를 처리합니다.
    • 독립 실행형 서버 의 경우 독립 실행형 ha.xml 또는 독립 실행형-full-ha.xml 구성 파일은 JGroups를 처리합니다.
    • Microsoft Azure는 UDP 멀티캐스트를 기반으로 하는 JGroups 검색 프로토콜을 지원하지 않습니다. 자세한 내용은 Red Hat 설명서의 Microsoft Azure에서 JBoss EAP 고가용성 사용을 참조하세요.
  • 세션 관리에 데이터베이스를 사용하도록 애플리케이션을 리팩터링합니다.
  • Azure Redis Service에 세션을 외부화하도록 애플리케이션을 리팩터링합니다. 자세한 내용은 Azure Cache for Redis를 참조하세요.

이러한 모든 옵션의 경우 JBoss EAP가 HTTP 세션 상태 복제를 수행하는 방법을 마스터하는 것이 좋습니다. 자세한 내용은 Red Hat 설명서의 HTTP 세션 복제 정보를 참조하세요.

문서 데이터 원본

애플리케이션에서 데이터베이스를 사용하는 경우 다음 정보를 캡처해야 합니다.

  • 데이터 원본 이름은 무엇인가요?
  • 연결 풀 구성이란?
  • JDBC 드라이버 JAR 파일은 어디에서 찾을 수 있나요?

JBoss EAP의 JDBC 드라이버에 대한 자세한 내용은 Red Hat 설명서의 Datasource Management를 참조하세요.

JBoss EAP가 사용자 지정되었는지 확인

다음 중 어떤 사용자 지정이 수행되었는지 확인하고 수행된 작업을 캡처합니다.

  • 시작 스크립트가 변경되었나요? 이러한 스크립트에는 호스트, eap_env, 독립 실행형할기본 포함됩니다.
  • JVM에 전달된 특정 매개 변수가 있나요?
  • 서버 클래스 경로에 JAR이 추가되어 있나요?

이러한 사용자 지정은 Azure Red Hat OpenShift에서 실행되는 컨테이너 이미지에서 캡처해야 합니다. 자세한 내용은 Red Hat 설명서에서 Java 애플리케이션 용 OpenShift 이미지용 JBoss EAP 구성을 참조하세요.

온-프레미스에 대한 연결이 필요한지 확인

애플리케이션이 온-프레미스 서비스에 액세스해야 하는 경우 Azure의 연결 서비스 중 하나를 프로비전해야 합니다. 자세한 내용은 온-프레미스 네트워크를 Azure에 연결하기 위한 솔루션 선택을 참조하세요. 또는 온-프레미스 리소스가 노출하는 공개적으로 사용 가능한 API를 사용하도록 애플리케이션을 리팩터링해야 합니다.

JMS(Java Message Service) 큐 또는 토픽을 사용하는지 확인

애플리케이션에서 JMS 큐 또는 토픽을 사용하는 경우 외부에 호스트된 JMS 서버로 마이그레이션할 수 있습니다. Azure Service Bus 및 고급 메시지 큐 프로토콜은 JMS를 사용하는 사람들에게 훌륭한 마이그레이션 전략이 될 수 있습니다. 자세한 내용은 Azure Service Bus 및 AMQP 1.0에서 JMS 사용을 참조 하세요.

JMS 영구 저장소가 구성된 경우 해당 구성을 캡처하고 마이그레이션 후에 적용해야 합니다.

자세한 내용은 Red Hat 설명서에서 메시징 구성을 참조하세요.

사용자 지정으로 만든 공유 Java EE 라이브러리를 사용하고 있는지 확인

공유 Java EE 라이브러리 기능을 사용하는 경우 다음과 같은 두 가지 옵션이 있습니다.

  • 애플리케이션 코드를 리팩터링하여 라이브러리에 대한 모든 종속성을 제거하고 대신 기능을 애플리케이션에 직접 통합합니다.
  • 서버 클래스 경로에 라이브러리를 추가합니다.

JBoss EAP가 사용자 지정되었는지 여부 확인 섹션에 설명된 것과 동일한 기술을 사용하여 이러한 라이브러리를 처리할 수 있습니다.

애플리케이션에 OS 관련 코드가 포함되어 있는지 확인

호스트 OS에 대한 종속성이 있는 코드가 애플리케이션에 포함되어 있는 경우 해당 종속성을 제거하려면 이 코드를 리팩터링해야 합니다. 예를 들어 파일 시스템 경로에서 사용하고 있는 / 또는 \File.Separator 또는 Paths.get으로 바꿔야 할 수 있습니다.

Azure Red Hat OpenShift는 RHCOS(Red Hat Enterprise Linux CoreOS)를 모든 컨트롤 플레인 및 작업자 노드의 운영 체제로 사용하여 OpenShift 4에서 실행됩니다. 모든 OS 관련 코드는 RHCOS와 호환되어야 합니다.

애플리케이션이 여러 WAR로 구성되었는지 확인

애플리케이션이 여러 WAR로 구성된 경우 각 WAR을 별도의 애플리케이션으로 처리하고 각 WAR에 대해 이 가이드를 진행해야 합니다.

애플리케이션이 EAR로 패키지되었는지 확인

애플리케이션이 EAR 파일로 패키지된 경우 해당 구성을 캡처해야 합니다.

프로덕션 서버에서 실행되는 모든 외부 프로세스 및 디먼 식별

애플리케이션 서버 외부에서 실행 중인 프로세스(예: 디먼 모니터링)가 있는 경우 해당 프로세스를 제거하거나 다른 곳으로 마이그레이션해야 합니다.

부하 분산 요구 사항 고려

부하 분산을 고려하는 가장 좋은 방법은 App Gateway 통합을 사용하는 것입니다. 자세한 내용은 Azure 애플리케이션 Gateway란?

마이그레이션

이 섹션의 단계에서는 분석을 통해 미리 빌드된 Azure Marketplace 제품을 사용하기로 결정한다고 가정합니다.

제품 프로비전

Azure Portal에서 제품을 열려면 Azure Red Hat OpenShift의 JBoss EAP를 참조하세요. 만들기를 선택한 다음 제품의 지침을 따릅니다.

애플리케이션 마이그레이션

이 제품은 JBoss EAP for OpenShift 이미지에서 Java 애플리케이션을 빌드하고 실행하는 S2I(Source-to-Image) 프로세스를 지원합니다. Red Hat에는 나중에 직접 배포하려는 경우 수동으로 수행하는 방법을 보여 주는 샘플이 있습니다. 자세한 내용은 2장을 참조 하세요. Red Hat 설명서의 OpenShift 이미지 용 JBoss EAP에서 Java 애플리케이션을 빌드하고 실행합니다.

마이그레이션 후

마이그레이션 전 단계에서 정의한 마이그레이션 목표에 도달한 후 일부 종단 간 승인 테스트를 수행하여 모든 것이 예상대로 작동하는지 확인합니다. 몇 가지 잠재적인 마이그레이션 후 개선 사항에 대한 자세한 내용은 다음 문서를 참조하세요.