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. Mezi tyto soubory může patřit aplikace Spring Boot, application.properties nebo application.yml soubory.
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.
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.
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 tématu Připojení služby Azure Storage jako místní sdílené složky ve službě App Service.
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 věnovaném 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 Použití služby Java Message Service 1.1 se standardem služby Azure Service Bus a 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, musíte ho refaktorovat, abyste tyto závislosti odebrali. Může být například nutné nahradit jakékoli použití /
cest systému souborů nebo \
v cestě File.Separator
k systému souborů nebo Paths.get
v případě, že je vaše aplikace spuštěná ve Windows.
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 application.xml a ibm-application-bnd.xml soubory a zaznamenat 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ématu Nasazení 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 Nasazení a konfigurace aplikace Tomcat, JBoss nebo Java SE ve službě 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 tématu Použití odkazů služby Key Vault jako nastavení aplikace ve službě Aplikace Azure Service a Azure Functions.
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 pokynů v tématu Konfigurace zdrojů dat pro aplikaci Tomcat, JBoss nebo Java SE ve službě Aplikace Azure Service.
Migrujte všechny další závislosti cesty ke třídám na úrovni serveru. Další informace najdete v tématu Konfigurace zdrojů dat pro aplikaci Tomcat, JBoss nebo Java SE ve službě Aplikace Azure Service.
Migrujte všechny další sdílené prostředky JDNI na úrovni serveru. Další informace najdete v tématu Konfigurace zdrojů dat pro aplikaci Tomcat, JBoss nebo Java SE ve službě 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í
Pokud jste se rozhodli použít adresář /home pro úložiště souborů, zvažte jeho nahrazení službou Azure Storage. Další informace najdete v tématu Připojení služby Azure Storage jako místní sdílené složky ve vlastním kontejneru ve službě App Service.
Pokud máte konfiguraci v adresáři /home, který obsahuje připojovací řetězec, klíče SSL a další tajné informace, zvažte použití kombinace služby Azure Key Vault a injektáž parametrů s nastavením aplikace, pokud je to možné. Další informace najdete v tématu Použití odkazů služby Key Vault pro App Service a Azure Functions a konfiguraci aplikace App Service.
Zvažte použití slotů nasazení pro spolehlivá nasazení s nulovým výpadkem. Další informace najdete v článku Nastavení přípravných prostředí ve službě Azure App Service.
Navrhněte a implementujte strategii DevOps. Pokud chcete zachovat spolehlivost a zároveň zvýšit rychlost vývoje, zvažte automatizaci nasazení a testování pomocí Azure Pipelines. Další informace najdete v tématu Sestavení a nasazení do webové aplikace v Javě. Pokud používáte sloty nasazení, můžete automatizovat nasazení do slotu a následné prohození slotů. Další informace najdete v příkladu: Nasazení do části Nasazení do služby App Service pomocí Azure Pipelines.
Navrhněte a implementujte strategii provozní kontinuity a zotavení po havárii. U nepostradatelných aplikací zvažte architekturu nasazení ve více oblastech. Další informace naleznete v tématu Vysoce dostupná webová aplikace pro více oblastí.