Java-alkalmazások migrálása az Azure-ba

Ez a cikk áttekintést nyújt a Java-alkalmazások Azure-ba való migrálásához javasolt stratégiákról.

Ez a migrálási útmutató a gyakori Azure-beli Java-forgatókönyveket mutatja be, valamint javaslatokkal és megfontolandó szempontokkal segíti a magas szintű tervezést. Ha egy adott Java-alkalmazás migrálási forgatókönyvét szeretné megvitatni az Azure-beli Microsoft Java csapatával, töltse ki a következő kérdőívet, és egy képviselő felveszi Önnel a kapcsolatot.

Az alkalmazástípus azonosítása

Mielőtt kiválaszt egy felhőalapú célhelyet a Java-alkalmazáshoz, azonosítania kell az alkalmazás típusát. A legtöbb Java-alkalmazás a következő típusok egyikébe tartozik:

Ezen típusok leírását a következő szakaszok tartalmazzák.

Spring Boot-/JAR-alkalmazások

Számos újabb alkalmazás közvetlenül a parancssorból hívható meg. Ezek az alkalmazások továbbra webes kéréseket kezelnek, azonban ahelyett, hogy a HTTP-kéréseik kezelését egy alkalmazáskiszolgálóra bíznák,az alkalmazáscsomagba foglalják a HTTP-kommunikációt és minden egyéb függőséget. Az ilyen alkalmazások gyakran olyan keretrendszerekkel készülnek, mint a Spring Boot, a Dropwizard, a Micronaut, a MicroProfile, a Vert.x és hasonlók.

Ezek az alkalmazások .jar kiterjesztéssel vannak archívumokba csomagolva.

Spring Cloud köztes szoftvermodulokat használó Spring-alkalmazások

A mikroszolgáltatás architekturális stílusa egy olyan megközelítés, amely egyetlen alkalmazást fejleszt kis szolgáltatások csomagjaként. Minden szolgáltatás a saját folyamatában fut, és egyszerűsített mechanizmusokkal, gyakran HTTP-erőforrás API-val kommunikál. Ezek a szolgáltatások üzleti funkciók köré csoportosulnak, és egymástól függetlenül üzembe helyezhetők egy teljes mértékben automatizált üzembe helyezési géppel. Ezeknek a szolgáltatásoknak nincs minimális központosított felügyelete, amely különböző programozási nyelveken írható, és különböző adattárolási technológiákat használ. Az ilyen szolgáltatások gyakran olyan keretrendszerrel készülnek, mint a Spring Cloud.

Ezek a szolgáltatások .jar kiterjesztéssel vannak alkalmazásokba csomagolva.

Java EE-alkalmazások

A Java Enterprise kiadás -alkalmazások (más néven J2 Enterprise kiadás-alkalmazások, vagy újabban a Jakarta Enterprise kiadás-alkalmazások) tartalmazhatnak a webalkalmazások egyes elemeit, vagy azok egyikét sem. Ezek az alkalmazások a Jakarta Enterprise kiadás specifikációja alapján több összetevőt is tartalmazhatnak és használhatnak.

A Java EE-alkalmazások archívumként az .ear vagy a .war bővítménnyel csomagolhatók.

A Java Enterprise kiadás-alkalmazásokat Java Enterprise kiadás-kompatibilis alkalmazáskiszolgálókon (például Oracle WebLogic Server, IBM WebSphere, JBoss EAP, GlassFish, Payara stb.) kell üzembe helyezni.

A kizárólag Java EE specifikáció által nyújtott funkciókra alapuló alkalmazások (tehát az alkalmazáskiszolgálóktól független alkalmazások) egy kompatibilis alkalmazáskiszolgálóról egy másikra migrálhatók. Ha az alkalmazás egy adott alkalmazáskiszolgálótól függ (alkalmazáskiszolgáló-függő), előfordulhat, hogy Önnek ki kell választania egy Azure-szolgáltatáscélt, amely lehetővé teszi, hogy üzemeltesse az alkalmazáskiszolgálót.

Webes alkalmazások

A webalkalmazások egy Servlet-tárolón belül futnak. Ezen alkalmazások némelyike közvetlenül servlet API-kat használ, míg sokan más keretrendszereket használnak, amelyek a servlet API-kat foglalják magában, például apache Struts, Spring MVC, JavaServer Faces (JSF) és mások.

A webalkalmazások .war kiterjesztéssel vannak archívumokba csomagolva.

Kötegelt/ütemezett feladatok

Egyes alkalmazások rövid ideig futnak, egy adott számítási feladatot végeznek el, majd bezáródnak anélkül, hogy kérésekre vagy felhasználói bemenetre várnának. Az ilyen feladatok néha egyszer, néha rendszeresen ütemezett időközönként futnak. A helyszínen az ilyen feladatokat gyakran egy kiszolgáló crontabján kell meghívni.

Ezek az alkalmazások .jar kiterjesztéssel vannak archívumokba csomagolva.

Feljegyzés

Ha az alkalmazás egy ütemezőt (például a Spring Batchet vagy a Quartzot) használ az ütemezett feladatok futtatásához, határozottan javasoljuk, hogy az ilyen feladatokat az alkalmazáson kívül futtassa. Ha az alkalmazást több példányra méretezi a felhőben, ugyanaz a feladat többször is lefut. Emellett ha az ütemezési mechanizmus a gazdagép helyi időzónáját használja, további nemkívánatos viselkedést tapasztalhat az alkalmazás régiók közti méretezésekor.

Az Azure-szolgáltatás céljának kiválasztása

Az alábbi szakaszok bemutatják, hogy mely szolgáltatáscélok felelnek meg az alkalmazás követelményeinek, és milyen felelősségekkel járnak.

Üzemeltetési lehetőségek rácsa

Az alábbi rács segítségével azonosíthatja az alkalmazástípus lehetséges célhelyeit. Mint látható, az Azure Kubernetes Service (AKS) és az Azure Virtual Machines minden alkalmazástípust támogat, de a csapatnak további feladatokat kell vállalnia, ahogyan az a következő szakaszban látható.

Cél →

Alkalmazás típusa ↓
App
Szolgáltatás
Java SE
App
Szolgáltatás
Tomcat
App
Szolgáltatás
JBoss EAP
Azure
Spring
Alkalmazások
Azure Container-alkalmazások AKS Virtuális
Gépek
Spring Boot-/JAR-alkalmazások
Spring Cloud-alkalmazások
Webes alkalmazások
Java EE-alkalmazások
Kereskedelmi alkalmazáskiszolgálók
(például Oracle WebLogic Server vagy IBM WebSphere)
Hosszú távú adatmegőrzés a helyi fájlrendszerben
Alkalmazás kiszolgáló szintű fürtözése
Kötegelt/ütemezett feladatok
VNet-integráció/hibrid Csatlakozás tivitás
Azure-régiónkénti elérhetőség Részletek Részletek Részletek Részletek Részletek Részletek Részletek

Folyamatos felelősség – rács

Az alábbi ráccsal megértheti, hogy az egyes célok milyen felelősséggel járnak a migrálást követően.

A megjelölt Azure feladatokat teljes egészében vagy többnyire az Azure felügyeli. A csapat folyamatosan felelős a jelzett 👉feladatokért. Egy robusztus, nagy mértékben automatizált folyamatot javaslunk az ilyen felelősségek ellátására.

Feljegyzés

A lista nem tartalmazza az összes feladatot.

Cél →

Tevékenység ↓
App
Szolgáltatás
Azure
Spring
Alkalmazások
Azure
Tároló
Alkalmazások
AKS Virtuális
Gépek
Könyvtárak frissítése
(ide tartozik a biztonsági rések kezelése is)
👉 👉 👉 👉 👉
Az alkalmazáskiszolgáló frissítése
(ide tartozik a biztonsági rések kezelése is)
Azure Azure 👉 👉 👉
A Java futtatókörnyezetének frissítése
(ide tartozik a biztonsági rések kezelése is)
Azure Azure 👉 👉 👉
A Kubernetes-frissítések elindítása
(ezt az Azure végzi el egy manuális eseményindítóval)
n/a Azure Azure 👉 n/a
Vészhelyreállítás Azure Azure 👉 👉 Azure
A visszamenőlegesen nem kompatibilis Kubernetes API-beli változások összeegyeztetése n/a Azure 👉 👉 n/a
Tároló alaprendszerképének módosítása
(ide tartozik a biztonsági rések kezelése is)
n/a Azure 👉 👉 n/a
Az operációs rendszer frissítése
(ide tartozik a biztonsági rések kezelése is)
Azure Azure Azure Azure1 👉
A hibás példányok észlelése és újraindítása Azure Azure Azure Azure 👉
A kiürítés és a frissítések gördülő újraindításának bevezetése Azure Azure Azure Azure 👉
Infrastruktúra-felügyelet Azure Azure 👉 👉 👉
Monitorozás és riasztáskezelés 👉 👉 👉 👉

1 Egyes biztonsági frissítések csomópont-újraindítást igényelhetnek, amelyek nem lesznek automatikusan végrehajtva. További információ: Biztonsági és kernelfrissítések alkalmazása Linux-csomópontokra az Azure Kubernetes Service-ben (AKS).

Ha a servlettárolót (például a Spring Bootot) az alkalmazás részeként helyezi üzembe, könyvtárnak kell tekinteni, így ez mindig az Ön felelőssége marad.

Helyszíni kapcsolatok biztosítása

Ha az alkalmazásnak hozzá kell férnie helyszíni szolgáltatásokhoz, ki kel építenie egy Azure-beli kapcsolati szolgáltatást. További információ: Megoldás választása a helyszíni hálózat Azure-hoz való csatlakoztatásához. Másik megoldásként újrabonthatja az alkalmazást, hogy az nyilvánosan elérhető, a helyszíni erőforrások által közzétett API-kat használjon.

Ezt még a migrálás előtt kell megtennie.

Az aktuális kapacitás és az erőforrás-használat leltározása

Dokumentálja a jelenlegi éles kiszolgálók hardverét, valamint az átlagos és a kiugró kérésszámokat, illetve az erőforrás-használatot. Erre az információra szüksége lesz az erőforrások a szolgáltatáscélban való kiépítéséhez.

Útmutató az áttelepítéshez

Az alábbi rácsokkal migrálási tanácsokat kaphat alkalmazástípus és célzott Azure-szolgáltatáscél alapján.

Java-alkalmazások

Az alábbi sorokkal megtalálhatja saját Java-alkalmazásának típusát, az oszlopokkal pedig az alkalmazást üzemeltető Azure-szolgáltatáscélt.

Ha JBoss EAP-alkalmazást szeretne migrálni az App Service-en futó Tomcatbe, először konvertálja a Java Enterprise kiadás alkalmazást a Tomcaten futó Java Web Apps (servlets) alkalmazássá, majd kövesse az alábbi útmutatást.

Ha migrálni szeretne egy webalkalmazást a Tomcaten az Azure Spring Appsbe, először konvertálja az alkalmazást Spring Cloud-alkalmazásokká, majd kövesse az alábbi útmutatást.

Cél →

Alkalmazás típusa ↓
App
Szolgáltatás
Java SE
App
Szolgáltatás
Tomcat
App
Szolgáltatás
JBoss EAP
Azure
Tároló
Alkalmazások
Azure
Spring
Alkalmazások
AKS Virtuális
Gépek
Spring Boot-/
JAR-alkalmazások
N.A. N.A. N.A. N.A. útmutató N.A. N.A.
Spring Cloud-/
alkalmazások
N.A. N.A. N.A. N.A. útmutató útmutató
tervezve
útmutató
tervezve
Webes alkalmazások
a Tomcaten
n/a útmutató n/a útmutató n/a útmutató útmutató
tervezve

Java EE-alkalmazások

Az alábbi sorokkal megtalálhatja az egy adott alkalmazáskiszolgálón futó Java EE-alkalmazását. Az oszlopokkal megtalálhatja az alkalmazást üzemeltető Azure-szolgáltatáscélt.

Cél →

Alkalmazáskiszolgáló ↓
App
Szolgáltatás
Java SE
App
Szolgáltatás
Tomcat
App
Szolgáltatás
JBoss EAP
Azure
Tároló
Alkalmazások
Azure
Spring
Alkalmazások
AKS Virtuális
Gépek
WildFly /
JBoss AS
N.A. N.A. útmutató N.A. N.A. útmutató útmutató
tervezve
Oracle WebLogic Server N.A. N.A. útmutató N.A. N.A. útmutató útmutató
IBM WebSphere N.A. N.A. útmutató N.A. N.A. útmutató útmutató
tervezve
Red Hat JBoss EAP N.A. N.A. útmutató N.A. N.A. útmutató útmutató

Lásd még