Migrace aplikací WebSphere do protokolu EAP JBoss ve službě Aplikace Azure

Tato příručka popisuje, o čem byste měli vědět, když chcete migrovat existující aplikaci WebSphere, která se má spouštět ve službě Aplikace Azure Service pomocí protokolu JBoss EAP.

Před migrací

Pokud chcete zajistit úspěšnou migraci, dokončete kroky posouzení a inventáře popsané v následujících částech.

Inventarizace kapacity serverů

Zdokumentujte hardware (paměť, procesor, disk) aktuálních produkčních serverů a průměrný počet požadavků a využití prostředků ve špičce. Tyto informace budete potřebovat bez ohledu na zvolenou cestu migrace. Je užitečné například pomoct s výběrem plánu služby App Service.

Seznam dostupných úrovní plánu služby App Service zobrazuje informace o paměti, jádrech procesoru, úložišti a cenách. Mějte na paměti, že plán JBoss EAP ve službě App Service je k dispozici pouze na úrovních plánu služby App Service úrovně Premium V3 a Izolované verze 2 .

Inventarizace všech tajných kódů

Zkontrolujte všechny vlastnosti a konfigurační soubory na produkčním serveru nebo serverech, jestli neobsahují tajné kódy a hesla. Nezapomeňte zkontrolovat soubor ibm-web-bnd.xml v souborech WAR. Konfigurační soubory obsahující hesla nebo přihlašovací údaje se mohou nacházet také ve vaší aplikaci. Tyto soubory mohou zahrnovat soubory application.properties nebo application.yml pro aplikace Spring Boot.

Inventarizace všech certifikátů

Zdokumentujte všechny certifikáty používané pro veřejné koncové body SSL. Všechny certifikáty na produkčních serverech zobrazíte spuštěním následujícího příkazu:

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

Ověření správné funkce podporované verze jazyka Java

JBoss EAP ve službě Aplikace Azure Service podporuje Javu 8 a 11. Proto budete muset ověřit, že je vaše aplikace schopna správně fungovat s použitím podporované verze. Toto ověření je obzvláště důležité, pokud váš aktuální server používá podporovanou sadu JDK (například Oracle JDK nebo IBM OpenJ9).

Aktuální verzi jazyka Java získáte tak, že se přihlásíte k produkčnímu serveru a spustíte následující příkaz:

java -version

Inventarizace prostředků JNDI

Proveďte inventarizaci všech prostředků JNDI. Některé prostředky, jako jsou zprostředkovatelé zpráv JMS, můžou vyžadovat migraci nebo rekonfiguraci.

Ve vaší aplikaci

Zkontrolujte soubor WEB-INF/ibm-web-bnd.xml nebo soubor WEB-INF/web.xml.

Určení, jestli se používají databáze

Pokud vaše aplikace používá nějaké databáze, potřebujete shromáždit následující informace:

  • Název zdroje dat.
  • Konfigurace fondu připojení.
  • Umístění souboru JAR ovladače JDBC.

Určení, jestli a jak se používá systém souborů

Jakékoli používání systému souborů na aplikačním serveru bude vyžadovat změnu konfigurace nebo ve vzácných případech změnu architektury. Systém souborů může být používán sdílenými moduly WebSphere nebo kódem vaší aplikace. Můžete zjistit některé nebo všechny z následujících situací.

Statický obsah jen pro čtení

Pokud vaše aplikace aktuálně poskytuje statický obsah, budete pro ni potřebovat alternativní umístění. Možná budete chtít statický obsah přesunout do Azure Blob Storage a přidat Azure CDN, abyste umožnili bleskově rychlé globální stahování. Další informace najdete v tématu Hostování statického webu ve službě Azure Storage a rychlém startu: Integrace účtu úložiště Azure s Azure CDN. Statický obsah můžete také přímo nasadit do aplikace v plánu Azure Spring Apps Enterprise. Další informace naleznete v tématu Nasazení webových statických souborů.

Dynamicky publikovaný statický obsah

Pokud vaše aplikace umožňuje nahrávání nebo vytváření statického obsahu, který je ale po vytvoření neměnný, můžete použít Azure Blob Storage a Azure CDN, jak je popsáno výše, s funkcí Azure Functions, která zpracovává nahrávání a aktualizace CDN. Pro vaše použití jsme poskytli ukázkovou implementaci na GitHubu – Uploading and CDN-preloading static content with Azure Functions. Statický obsah můžete také přímo nasadit do aplikace v plánu Azure Spring Apps Enterprise. Další informace naleznete v tématu Nasazení webových statických souborů.

Dynamický nebo interní obsah

U souborů, které vaše aplikace často zapisuje a čte (například dočasné datové soubory) nebo statické soubory, které jsou viditelné jenom pro vaši aplikaci, můžete azure Storage připojit do systému souborů App Service. Další informace najdete v článku Obsluha obsahu z Azure Storage v App Service na Linuxu.

Určení, jestli aplikace využívá naplánované úlohy

Naplánované úlohy, jako jsou úlohy plánovače Quartz nebo úlohy unixového cron, by se neměly používat se službou Aplikace Azure Service. Aplikace Azure Služba vám nezabrání v interním nasazení aplikace obsahující naplánované úlohy. Pokud ale u aplikace dojde k horizontálnímu rozšíření kapacity, může se stejná naplánovaná úloha spustit v průběhu naplánovaného období více než jednou. Tato situace může vést k nezamýšleným důsledkům.

Pokud chcete spouštět naplánované úlohy v Azure, zvažte použití služby Azure Functions s triggerem časovače. Další informace najdete v tématu Trigger časovače pro Azure Functions. Samotný kód úlohy nemusíte do funkce migrovat. Funkce může úlohu aktivovat jednoduše tak, že vyvolá adresu URL ve vaší aplikaci.

Poznámka:

Abyste zabránili zneužití, budete pravděpodobně muset zajistit, aby koncový bod vyvolávající úlohu vyžadoval přihlašovací údaje. V takovém případě bude tyto přihlašovací údaje muset poskytovat funkce triggeru.

Určení, jestli je potřeba připojení k místnímu prostředí

Pokud vaše aplikace potřebuje přístup k některým místním službám, budete muset zřídit jednu ze služeb připojení Azure. Další informace najdete v článku Volba řešení pro připojení místní sítě k Azure. Alternativně budete muset aplikaci refaktorovat tak, aby používala veřejně přístupná rozhraní API, která nabízejí vaše místní prostředky.

Určení, jestli se používají fronty nebo témata JMS (Java Message Service)

Pokud vaše aplikace používá fronty nebo témata JMS, budete je muset migrovat na externě hostovaný server JMS. Pro aplikace používající JMS může skvělou migrační strategii představovat Azure Service Bus a rozšířený protokol řízení front zpráv (AMQP). Další informace najdete v tématu, které se věnuje použití JMS se službou Azure Service Bus a protokolem AMQP 1.0.

Pokud jste nakonfigurovali trvalá úložiště JMS, musíte zachytit jejich konfiguraci a po migraci ji použít.

Určení, jestli aplikace využívá rozhraní API specifická pro WebSphere

Pokud vaše aplikace používá rozhraní API specifická pro WebSphere, budete muset aplikaci refaktorovat tak, aby je nepoužíla. Sada nástrojů Red Hat Migration Toolkit for Apps vám může pomoct s odebráním a refaktoringem těchto závislostí.

Určení, jestli aplikace používá objekty Entity bean nebo objekty CMP bean ve stylu EJB 2.x

Pokud vaše aplikace používá objekty Entity bean nebo objekty CMP bean ve stylu EJB 2.x, budete muset aplikaci refaktorovat a odebrat tyto závislosti.

Určení, jestli se používá funkce klienta aplikace JavaEE

Pokud máte klientské aplikace, které se připojují k vaší (serverové) aplikaci pomocí funkce Klient aplikace JavaEE, budete muset refaktorovat klientské aplikace i vaši (serverovou) aplikaci tak, aby používaly rozhraní HTTP API.

Určení, jestli aplikace obsahuje kód specifický pro operační systém

Pokud vaše aplikace obsahuje jakýkoli kód se závislostmi na hostitelském operačním systému, budete muset refaktorováním tyto závislosti odebrat. Pomocí File.Separator nebo Paths.get budete například muset nahradit použití znaků / nebo \ v cestách systému souborů.

Určení, jestli se používají časovače EJB

Pokud vaše aplikace používá časovače EJB, budete muset ověřit, že kód časovače EJB může být aktivován každou instancí EAP JBoss nezávisle. Toto ověření je potřeba, protože při horizontálním škálování služby App Service se každý časovač EJB aktivuje na vlastní instanci EAP JBoss.

Určení, jestli se používají konektory JCA

Pokud vaše aplikace používá konektory JCA, budete muset ověřit, že je možné konektor JCA použít v JBoss EAP. Pokud je implementace JCA svázaná s WebSphere, budete muset refaktorovat aplikaci odebrat závislost na konektoru JCA. Pokud je možné použít konektor JCA, budete muset přidat jars do cesty ke třídě serveru. Budete také muset umístit potřebné konfigurační soubory do správného umístění v adresářích serveru JBoss EAP, aby byly dostupné.

Určení, jestli se používá JAAS

Pokud vaše aplikace používá JAAS, budete muset zaznamenat konfiguraci JAAS. Pokud používáte databázi, můžete ji převést na doménu JAAS v JBoss EAP. Pokud se jedná o vlastní implementaci, budete muset ověřit, že se dá použít v JBoss EAP.

Určení, jestli aplikace využívá adaptér prostředků

Pokud vaše aplikace potřebuje adaptér prostředků (RA), musí být kompatibilní s protokolem JBoss EAP. Zjistěte, jestli RA funguje správně na samostatné instanci protokolu EAP JBoss, a to tak, že ji nasadíte na server a správně ji nakonfigurujete. Pokud RA funguje správně, budete muset přidat jar do cesty třídy serveru instance služby App Service a umístit potřebné konfigurační soubory do správného umístění do adresářů serveru JBoss EAP, aby byl dostupný.

Určení, jestli se aplikace skládá z několika souborů WAR

Pokud se vaše aplikace skládá z několika souborů WAR, měli byste s těmito soubory WAR zacházet jako se samostatnými aplikacemi a projít tuto příručku pro každý z nich.

Určení, jestli je aplikace zabalená jako soubor EAR

Pokud je vaše aplikace zabalená jako soubor EAR, nezapomeňte prozkoumat soubory application.xml a ibm-application-bnd.xml a zachytit jejich konfigurace.

Zjištění všech vnějších procesů a démonů běžících na produkčních serverech

Pokud používáte nějaké procesy, které běží mimo aplikační server, například monitorovací démony, budete je muset eliminovat nebo migrovat jinam.

Migrace

Red Hat Migration Toolkit for Apps

Sada nástrojů Red Hat Migration Toolkit for Applications je bezplatné rozšíření pro Visual Studio Code. Toto rozšíření analyzuje kód a konfiguraci vaší aplikace a poskytuje doporučení pro migraci aplikací Jakarta EE na JBoss EAP z jiných aplikačních serverů, jako je odebrání závislostí na proprietárních rozhraních API. Rozšíření také nabídne doporučení, pokud migrujete do cloudu z místního prostředí. Další informace najdete v tématu Přehled sady nástrojů migration toolkit for Applications.

Obsah této příručky vám pomůže vyřešit ostatní komponenty cesty migrace, jako je volba správného typu plánu služby App Service, externalizace stavu relace a použití Azure ke správě instancí protokolu EAP místo rozhraní pro správu JBoss.

Zřízení plánu služby App Service

V seznamu dostupných plánů služeb vyberte plán, jehož specifikace splňují nebo překračují specifikace aktuálního produkčního hardwaru.

Poznámka:

Pokud hodláte provozovat přípravná/testovací nasazení nebo používat sloty nasazení, musí plán služby App Service zahrnovat tuto dodatečnou kapacitu. Pro aplikace Java doporučujeme používat plány Premium nebo vyšší.

Vytvořte plán služby App Service.

Vytvoření a nasazení webových aplikací

Ve svém plánu služby App Service budete muset vytvořit webovou aplikaci pro každý soubor WAR nasazený na server JBoss EAP.

Poznámka:

I když do jedné webové aplikace je možné nasadit několik souborů WAR, je to silně nežádoucí. Nasazení několika souborů WAR do jedné webové aplikace brání škálování jednotlivých aplikací podle toho, jaká je po nich poptávka. Zvyšuje navíc složitost pro následné kanály nasazení. Pokud na jedné adrese URL musí být dostupných několik aplikací, uvažujte o použití nějakého směrovacího řešení, jako je Azure Application Gateway.

Aplikace Maven

Pokud je vaše aplikace vytvořena ze souboru Maven POM, použijte k vytvoření webové aplikace a jejímu nasazení modul plug-in WebApp pro Maven. Další informace najdete v části Rychlý start ke konfiguraci modulu plug-in Maven: Vytvoření aplikace Java ve službě Aplikace Azure Service.

Jiné aplikace než Maven

Pokud modul plug-in Maven nelze použít, budete muset webovou aplikaci zřídit prostřednictvím jiných mechanismů, mezi které patří:

Po vytvoření webové aplikace použijte jeden z dostupných mechanismů nasazení k nasazení aplikace. Další informace najdete v tématuNasazení souborů do služby App Service.

Migrace parametrů modulu runtime JVM

Pokud vaše aplikace vyžaduje konkrétní parametry modulu runtime, použijte k jejich určení nejvhodnější mechanismus. Další informace najdete v části Nastavení možností modulu runtime Java v části Konfigurace aplikace Java pro službu Aplikace Azure Service.

Naplnění tajných kódů

K uložení všech tajných kódů vaší aplikace můžete použít Nastavení aplikace. Pokud máte v úmyslu používat stejný tajný klíč nebo tajné kódy mezi více aplikacemi nebo potřebujete jemně odstupňované zásady přístupu a možnosti auditu, použijte místo toho odkazy služby Azure Key Vault. Další informace najdete v části Použití odkazů služby KeyVault v části Konfigurace aplikace Java pro službu Aplikace Azure Service.

Konfigurace vlastní domény a SSL

Pokud vaše aplikace bude viditelná ve vlastní doméně, budete k ní muset namapovat webovou aplikaci. Další informace najdete v tématu Kurz: Mapování existujícího vlastního názvu DNS na službu Aplikace Azure Service.

Pak budete muset svázat certifikát TLS/SSL pro danou doménu s webovou aplikací služby App Service. Další informace najdete v tématu Zabezpečení vlastního názvu DNS pomocí vazby TLS/SSL ve službě Aplikace Azure Service.

Migrace zdrojů dat, knihoven a prostředků JNDI

Pokud chcete migrovat zdroje dat, postupujte podle kroků v části Konfigurace zdrojů dat v aplikaci Java pro službu Aplikace Azure Service.

Podle pokynů v části JBoss EAP v části Konfigurace aplikace Java pro službu Aplikace Azure Service migrujte všechny další závislosti cesty na úrovni serveru.

Migrujte všechny další sdílené prostředky JDNI na úrovni serveru. Další informace najdete v části JBoss EAP konfigurace aplikace Java pro službu Aplikace Azure Service.

Poznámka:

Pokud postupujete podle doporučené architektury jedné war na aplikaci, zvažte migraci knihoven tříd na úrovni serveru a prostředků JNDI do vaší aplikace. Tím se výrazně zjednoduší zásady správného řízení komponent a správa změn. Pokud chcete nasadit více než jednu war na aplikaci, měli byste si projít jednu z našich doprovodných příruček uvedených na začátku této příručky.

Migrace naplánovaných úloh

Minimálně byste měli naplánované úlohy přesunout na virtuální počítač Azure, aby už nebyly součástí vaší aplikace. Alternativně se můžete rozhodnout je modernizovat do Javy řízené událostmi pomocí služeb Azure, jako jsou Azure Functions, SQL Database a Event Hubs.

Restartování a orientační test

Nakonec budete muset všechny změny konfigurace uplatnit restartováním webové aplikace. Po restartování ověřte, že vaše aplikace správně funguje.

Po migraci

Teď, když jste migrovali aplikaci do služby Aplikace Azure Service, byste měli ověřit, že funguje podle očekávání. Až to uděláte, máme pro vás několik doporučení, která vaší aplikaci dodají výraznější nativní cloudový charakter.

Doporučení