JBoss EAP 애플리케이션을 Azure VM의 JBoss EAP로 마이그레이션
이 가이드에서는 Azure VM의 JBoss EAP에서 실행되도록 기존 JBoss EAP 애플리케이션을 마이그레이션할 때 알아야 할 사항에 대해 설명합니다.
사전 마이그레이션
마이그레이션을 성공적으로 수행하려면 시작하기 전에 다음 섹션에서 설명하는 평가 및 인벤토리 단계를 완료합니다.
"마이그레이션 완료"의 의미 정의
이 가이드와 해당 Azure Marketplace 제품은 JBoss EAP 워크로드를 Azure로의 마이그레이션을 가속화하기 위한 시작점입니다. 마이그레이션 작업의 범위를 정의하는 것이 중요합니다. 예를 들어 기존 인프라에서 Azure Virtual Machines로 엄격한 "리프트 앤 시프트"를 수행하고 있나요? 그렇다면 마이그레이션할 때 일부 "리프트 앤 개선"에서 작업하려는 유혹을 받을 수 있습니다.
이 가이드에 설명된 대로 필요한 변경 사항을 고려하여 가능한 한 순수한 "리프트 앤 시프트"에 가깝게 고수하는 것이 좋습니다. 이 중요 시점에 도달했을 때 알 수 있도록 "마이그레이션 완료"의 의미를 정의합니다. "마이그레이션 완료"에 도달하면 가상 하드 디스크의 스냅샷 만들기에 설명된 대로 가상 머신의 스냅샷을 만들 수 있습니다. 스냅샷에서 성공적으로 복원할 수 있는지 확인한 후 향상된 기능을 수행하는 것이 더 안전합니다. 이렇게 하면 지금까지 달성한 마이그레이션 진행 상황을 잃을 까봐 두려워하지 않고 진행할 수 있습니다.
미리 빌드된 Azure Marketplace 제품이 좋은 시작점인지 확인
Red Hat과 Microsoft는 Azure로 마이그레이션하기 위한 견고한 시작점을 제공하기 위해 Azure Marketplace에 Azure 솔루션 템플릿 세트를 가져오기 위해 파트너로 협력했습니다. Azure의 Red Hat JBoss EAP에 있는 Azure Virtual Machines의 JBoss EAP 섹션에서 제안 목록을 볼 수 있습니다.
미리 빌드된 Azure Marketplace 제품에 대한 느낌을 얻으려면 빠른 시작: Azure VM(Virtual Machines)에 JBoss EAP 클러스터 배포를 참조하세요.
기존 제품이 좋은 시작점이 없는 경우 Azure Virtual Machines에서 사용할 수 있는 리소스를 사용하여 배포를 직접 재현해야 합니다. 자세한 내용은 IaaS란?을 참조하세요.
JBoss EAP 버전이 호환되는지 확인
기존 JBoss EAP 버전은 IaaS(Infrastructure-as-a-Service) 제품의 버전과 호환되어야 합니다. 제품에 대한 Azure Portal 페이지에는 사용할 수 있는 JBoss EAP 버전이 표시됩니다. 자세한 내용은 Azure Portal의 VM 제품에서 JBoss EAP 클러스터를 참조하세요. 기존 JBoss EAP 버전이 제품에서 사용할 수 있는 버전과 호환되지 않는 경우 Azure IaaS 리소스를 사용하여 배포를 직접 재현해야 합니다. 자세한 내용은 IaaS란?을 참조하세요.
필요한 라이선스가 있는지 확인합니다.
미리 빌드된 Azure Marketplace 제품을 사용하는 경우 모든 JBoss EAP 서버에 대한 Red Hat의 현재 라이선스가 있어야 합니다. Azure로 이동하면 요구 사항에 맞게 다음 배포 옵션 중에서 선택할 수 있습니다.
- Red Hat Enterprise Linux 종량제 가상 머신에 배포합니다. 이 옵션을 PAYG라고합니다.
- Red Hat Cloud Access 프로그램을 통해 Red Hat JBoss EAP 및 Red Hat Enterprise Linux 구독을 Azure로 이동합니다. 이 옵션을 BYOS라고 합니다.
두 옵션 모두 라이선스 이식성을 위해 Red Hat의 풀 ID를 묻는 메시지가 표시됩니다. 제품을 시도하기 전에 이 ID가 있는지 확인합니다.
미리 빌드된 Azure Marketplace 제품에는 라이선스 관리를 위한 Red Hat Satellite 지원이 포함됩니다. Red Hat Satellite에 대한 개요는 Red Hat Satellite를 참조하세요.
참고 항목
EAP 자격이 없는 경우 Red Hat 개인 개발자 구독을 통해 무료 개발자 구독에 등록할 수 있습니다. 미리 빌드된 Azure Marketplace 제품에서 RHSM 사용자 이름 및 RHSM 암호로 사용할 계정 세부 정보를 따로 저장합니다.
풀 ID를 검색하는 단계는 빠른 시작: Azure VM(Virtual Machines)에 JBoss EAP 클러스터 배포의 필수 구성 요소 섹션에 설명되어 있습니다.
서버 용량 인벤토리화
현재 프로덕션 서버의 하드웨어(메모리, CPU, 디스크) 및 평균 및 최대 요청 수 및 리소스 사용률을 문서화합니다. 선택한 마이그레이션 경로에 관계없이 이 정보가 필요합니다. 예를 들어 노드 풀의 VM 크기 선택, 컨테이너에서 사용할 메모리 양 및 컨테이너에 필요한 CPU 공유 수를 안내하는 데 유용합니다.
AKS에서 노드 풀의 크기를 조정할 수 있습니다. 방법을 알아보려면 AKS(Azure Kubernetes Service)의 노드 풀 크기 조정을 참조하세요.
모든 비밀 인벤토리화
프로덕션 서버 또는 서버의 모든 속성 및 구성 파일에서 비밀 및 암호를 확인합니다. WAR에서 jboss-web.xml 파일을 확인해야 합니다. 암호 또는 자격 증명이 포함된 구성 파일도 애플리케이션 내에서 찾을 수 있습니다.
이러한 비밀을 Azure KeyVault에 저장하는 것이 좋습니다. 자세한 내용은 Azure Key Vault 기본 개념을 참조 하세요.
모든 인증서 인벤토리화
공용 SSL 엔드포인트에 사용되는 모든 인증서를 문서화합니다. 다음 명령을 실행하여 프로덕션 서버에서 모든 인증서를 볼 수 있습니다.
keytool -list -v -keystore <path to keystore>
지원되는 Java 버전이 올바르게 작동하는지 확인
Azure VM의 JBoss EAP에는 지원되는 버전의 Java가 필요합니다. 사용할 JDK 버전에 대한 지침은 Red Hat 설명서의 지원되는 구성을 참조하세요.
참고 항목
이 유효성 검사는 현재 서버가 지원되지 않는 JDK(예: Oracle JDK 또는 IBM OpenJ9)에서 실행 중인 경우에 특히 중요합니다.
현재 Java 버전을 가져오려면 프로덕션 서버에 로그인하고 다음 명령을 실행합니다.
java -version
인벤토리 외부 리소스
데이터 원본, JMS 메시지 브로커 등과 같은 외부 리소스는 JNDI(Java 명명 및 디렉터리 인터페이스)를 통해 삽입됩니다. 이러한 리소스 중 일부는 마이그레이션 또는 재구성이 필요할 수 있습니다.
애플리케이션 내부
WEB-INF/jboss-web.xml 및/또는 WEB-INF/web.xml 파일을 검사합니다. <Context>
요소 내에서 <Resource>
요소를 찾습니다.
Datasources
데이터 원본은 특성이 type
.로 설정된 javax.sql.DataSource
JNDI 리소스입니다. 각 데이터 원본에 대해 다음 정보를 문서화합니다.
- 데이터 원본 이름은 무엇인가요?
- 연결 풀 구성이란?
- JDBC 드라이버 JAR 파일은 어디에서 찾을 수 있나요?
자세한 내용은 JBoss EAP 설명서의 JBoss EAP 데이터 원본 정보를 참조하세요.
기타 모든 외부 리소스
이 가이드에서 가능한 모든 외부 종속성을 문서화하는 것은 불가능합니다. 마이그레이션 후 애플리케이션의 모든 외부 종속성을 충족할 수 있는지 확인하는 것은 팀의 책임입니다.
파일 시스템의 사용 여부 및 방법 확인
애플리케이션 서버에서 파일 시스템을 사용하려면 재구성 또는 드문 경우 아키텍처 변경이 필요합니다. JBoss EAP 모듈 또는 애플리케이션 코드는 파일 시스템을 사용할 수 있습니다. 다음 섹션에서 설명하는 시나리오의 일부 또는 전부를 식별할 수 있습니다.
읽기 전용 정적 콘텐츠
애플리케이션에서 현재 정적 콘텐츠를 제공하는 경우 이를 대체할 위치가 필요합니다. 정적 콘텐츠를 Azure Blob Storage로 이동하고 전역적으로 빠른 다운로드를 위해 Azure CDN을 추가하는 것이 좋습니다. 자세한 내용은 Azure Storage에서 정적 웹 사이트 호스팅 및 빠른 시작: Azure CDN과 Azure Storage 계정 통합을 참조하세요.
동적으로 게시된 정적 콘텐츠
애플리케이션이 애플리케이션에서 업로드/생성되었지만 생성 후 변경할 수 없는 정적 콘텐츠를 허용하는 경우, 위에서 설명한 대로 Azure Blob Storage 및 Azure CDN과 Azure Function을 사용하여 업로드 및 CDN 새로 고침을 처리할 수 있습니다. Azure Functions를 사용하여 정적 콘텐츠 업로드 및 CDN 사전 로드에서 사용할 샘플 구현을 제공했습니다.
온-프레미스 연결이 필요한지 확인
애플리케이션에서 온-프레미스 서비스에 액세스해야 하는 경우 Azure의 연결 서비스 중 하나를 프로비저닝해야 합니다. 자세한 내용은 온-프레미스 네트워크를 Azure에 연결을 참조하세요. 또는 온-프레미스 리소스에서 노출하는 공개적으로 사용 가능한 API를 사용하도록 애플리케이션을 리팩터링해야 합니다.
JMS(Java Message Service) 큐 또는 토픽을 사용하는지 확인
애플리케이션에서 JMS 큐 또는 토픽을 사용하는 경우 외부에서 호스팅되는 JMS 서버로 마이그레이션해야 합니다. Azure Service Bus 및 AMQP(고급 메시지 큐 프로토콜)는 JMS를 사용하는 애플리케이션에 매우 유용한 마이그레이션 전략이 될 수 있습니다. 자세한 내용은 Azure Service Bus 표준 및 AMQP 1.0에서 Java Message Service 1.1 사용을 참조 하세요.
JMS 영구 저장소가 구성된 경우 해당 구성을 캡처하여 마이그레이션 후에 적용해야 합니다.
JCA 커넥터가 사용되는지 확인
애플리케이션에서 JCA 커넥터를 사용하는 경우 JBoss EAP에서 JCA 커넥터를 사용할 수 있는지 확인합니다. JBoss EAP에서 JCA 커넥터를 사용할 수 있는 경우 JBoss EAP 서버 디렉터리의 올바른 위치에 서버 클래스 경로에 JAR을 추가하고 필요한 구성 파일을 배치해야 합니다.
JAAS가 사용 중인지 확인
애플리케이션에서 JAAS를 사용 중인 경우 JAAS가 구성된 방식을 캡처해야 합니다. 데이터베이스를 사용하는 경우 JBoss EAP의 JAAS 도메인으로 변환할 수 있습니다. 사용자 지정 구현인 경우 JBoss EAP에서 사용할 수 있는지 확인해야 합니다.
애플리케이션이 여러 WAR로 구성되었는지 확인
애플리케이션이 여러 WAR로 구성된 경우 각 WAR를 별도의 애플리케이션으로 처리하고 각각에 대해 이 가이드를 수행해야 합니다.
애플리케이션이 EAR로 패키징되는지 확인
애플리케이션이 EAR 파일로 패키지된 경우 application.xml 파일을 검사하고 구성을 캡처해야 합니다.
참고 항목
Azure VM 리소스를 더 잘 사용하기 위해 각 웹 애플리케이션을 독립적으로 확장하려면 EAR를 별도의 웹 애플리케이션으로 분할해야 합니다.
프로덕션 서버에서 실행되는 모든 외부 프로세스 및 디먼 확인
디먼 모니터링과 같이 애플리케이션 서버 외부에서 실행되는 프로세스가 있는 경우 이러한 프로세스를 제거하거나 다른 곳으로 마이그레이션해야 합니다.
마이그레이션
Azure Virtual Machines 제품에서 JBoss EAP 선택
다음 섹션에 설명된 제품은 Azure Virtual Machines의 JBoss EAP에 사용할 수 있습니다.
제품을 배포하는 동안 JBoss EAP 서버 노드에 대한 가상 머신 크기를 선택하라는 메시지가 표시됩니다. 원하는 VM 크기에서 크기 조정(메모리, 프로세서, 디스크)의 모든 측면을 고려하는 것이 중요합니다. 자세한 내용은 Cloud Services의 크기(클래식)를 참조하세요.
Azure Virtual Machine Scale Sets의 JBoss EAP
Virtual Machine Scale Sets는 모든 크기의 워크로드에 대해 부하 분산된 확장성이 뛰어난 가상 머신 그룹을 제공합니다. 자세한 내용은 Virtual Machine Scale Sets란?
클러스터형 Virtual Machines의 JBoss EAP
원하는 경우 JBoss EAP 클러스터링 메커니즘을 사용하는 기존 VM 클러스터는 이 기능을 이미 사용하고 있는 배포에서 리프트 앤 시프트하는 데 적합합니다. 자세한 내용은 JBoss EAP 설명서의 웹 애플리케이션 클러스터링을 참조하세요. 미리 빌드된 Azure Marketplace 제품에는 도메인 모드에 대한 지원이 포함됩니다. EAP 도메인 및 도메인 모드에 대한 개요는 도메인 관리를 참조하세요.
JBoss EAP 단일 서버
테스트 및 평가 또는 경량 워크로드를 위해 단일 서버만 필요한 경우 단일 VM에 JBoss EAP 단일 서버를 배포하는 제품이 있습니다.
앱용 Red Hat 마이그레이션 도구 키트
Red Hat Migration Toolkit for Applications는 Visual Studio Code용 무료 확장입니다. 이 확장은 애플리케이션 코드 및 구성을 분석하여 온-프레미스에서 클라우드로 마이그레이션하기 위한 권장 사항을 제공합니다. 자세한 내용은 애플리케이션용 마이그레이션 도구 키트 개요를 참조하세요.
이 가이드의 내용은 올바른 VM 크기를 선택하고 세션 상태를 외부화하는 등 마이그레이션 과정의 다른 구성 요소를 해결하는 데 도움이 됩니다.
마이그레이션 후
마이그레이션 전 단계에서 정의한 마이그레이션 목표에 도달한 후 일부 종단 간 승인 테스트를 수행하여 모든 것이 예상대로 작동하는지 확인합니다. 몇 가지 잠재적인 마이그레이션 후 개선 사항에 대한 자세한 내용은 다음 문서를 참조하세요.
Azure Storage를 사용하여 가상 머신에 탑재된 정적 콘텐츠를 제공합니다. 자세한 내용은 Azure DevTest Labs에서 랩 가상 머신에 대한 데이터 디스크 연결 또는 분리를 참조 하세요.
Azure DevOps를 사용하여 마이그레이션된 JBoss EAP 클러스터에 애플리케이션을 배포합니다. 자세한 내용은 Azure DevOps 설명서 시작을 참조 하세요.
고급 부하 분산 서비스를 사용하여 네트워크 토폴로지 향상. 자세한 내용은 Azure에서 부하 분산 서비스 사용을 참조하세요.
Azure 관리 ID를 사용하여 비밀을 관리하고 Azure 리소스에 역할 기반 액세스를 할당합니다. 자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요.
Java EE 인증 및 권한 부여를 Microsoft Entra ID와 통합합니다. 자세한 내용은 Microsoft Entra ID를 애플리케이션 시작 가이드와 통합을 참조하세요.
Azure Key Vault를 사용하여 "비밀"로 작동하는 모든 정보 저장. 자세한 내용은 Azure Key Vault 기본 개념을 참조 하세요.