Megosztás a következőn keresztül:


Spring Boot-alkalmazások migrálása az Azure App Service-be

Ez az útmutató azt ismerteti, hogy mire érdemes figyelnie, amikor egy meglévő Spring Boot-alkalmazást szeretne migrálni az Azure App Service-be.

Migráció előtt

A sikeres migrálás biztosításához a kezdés előtt végezze el az alábbi szakaszokban leírt értékelési és leltározási lépéseket.

Váltás egy támogatott platformra

Az App Service a Java SE bizonyos verzióit kínálja. A kompatibilitás biztosítása érdekében migrálja az alkalmazást az aktuális környezet egyik támogatott verziójába, mielőtt továbblép a többi lépésre. Ügyeljen arra, hogy teljes körűen tesztelje a konfigurációt. Használja a Linux-disztribúció legújabb stabil kiadását az ilyen tesztekben.

Megjegyzés:

Ez az ellenőrzés különösen fontos, ha az aktuális kiszolgáló egy nem támogatott JDK-n fut (például az Oracle JDK-n vagy az IBM OpenJ9 rendszeren).

A jelenlegi Java-verzió beszerzéséhez jelentkezzen be az éles kiszolgálóra, és futtassa a következő parancsot:

java -version

A Azure-alkalmazás szolgáltatásban a Java 8 bináris fájljait az Eclipse Temurin biztosítja. A Java 11- és 17-es verziójához, valamint a Java összes jövőbeli LTS-kiadásához az App Service biztosítja az OpenJDK Microsoft-buildet. Ezek a bináris fájlok ingyenesen letölthetők a következő webhelyeken:

Külső források leltározása

Azonosítsa a külső erőforrásokat, például az adatforrásokat, a JMS-üzenetközvetítőket és egyéb szolgáltatások URL-címeit. A Spring Boot-alkalmazásokban az ilyen erőforrások konfigurációja általában az src/main/directory mappában, egy általában application.properties vagy application.yml nevű fájlban található. Emellett ellenőrizze az éles telepítés környezeti változóit az összes releváns konfigurációs beállítás szempontjából.

Adatbázisok

Spring Boot-alkalmazások esetén a kapcsolati sztring általában akkor jelennek meg a konfigurációs fájlokban, ha az külső adatbázistól függ. Íme egy példa az egyik application.properties fájlból:

spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

Íme egy példa az egyik application.yaml fájlból:

spring:
  data:
    mongodb:
      uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017

A lehetségesebb konfigurációs forgatókönyvekért tekintse meg a Spring Data dokumentációját:

JMS-üzenetközvetítők

Azonosítsa a használt közvetítőket vagy közvetítőket a megfelelő függőségek buildjegyzékében (általában egy pom.xml vagy build.gradle fájlban).

Az ActiveMQ-t használó Spring Boot-alkalmazások például általában a pom.xml fájlban tartalmazzák ezt a függőséget:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

A kereskedelmi közvetítőket használó Spring Boot-alkalmazások általában közvetlenül a közvetítők JMS-illesztőprogram-kódtáraitól függenek. Íme egy példa egy build.gradle fájlból:

    dependencies {
      ...
      compile("com.ibm.mq:com.ibm.mq.allclient:9.4.0.5")
      ...
    }

Miután azonosította a használt közvetítőt vagy közvetítőket, keresse meg a megfelelő beállításokat. A Spring Boot-alkalmazásokban általában megtalálhatóak az application.properties fájlban, és application.yml fájlokat az alkalmazás könyvtárában.

Megjegyzés:

A Microsoft az elérhető legbiztonságosabb hitelesítési folyamat használatát javasolja. Az ebben az eljárásban ismertetett hitelesítési folyamat, például adatbázisok, gyorsítótárak, üzenetkezelés vagy AI-szolgáltatások esetében, nagyon nagy megbízhatóságot igényel az alkalmazásban, és más folyamatokban nem jelenik meg kockázattal. Csak akkor használja ezt a folyamatot, ha a biztonságosabb lehetőségek, mint például a jelszó nélküli vagy kulcs nélküli kapcsolatok felügyelt identitással, nem állnak rendelkezésre. A helyi gépi műveletekhez előnyben részesítse a jelszó nélküli vagy kulcs nélküli kapcsolatok felhasználói identitásait.

Íme egy ActiveMQ-példa egy application.properties fájlból:

spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=<password>

Az ActiveMQ konfigurálásával kapcsolatos további információkért tekintse meg a Spring Boot üzenetkezelési dokumentációját.

Íme egy IBM MQ-példa egy application.yaml fájlból:

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: <password>

Az IBM MQ konfigurációjáról további információt az IBM MQ Spring-összetevők dokumentációjában talál.

Külső gyorsítótárak azonosítása

Azonosítsa a használatban lévő külső gyorsítótárakat. A Redist gyakran használják a Spring Data Redisen keresztül. Konfigurációs információkért tekintse meg a Spring Data Redis dokumentációját.

Állapítsa meg, hogy a munkamenet-adatok gyorsítótárazva lesznek-e a Spring Session-en keresztül a megfelelő konfiguráció keresésével (Java vagy XML nyelven).

Identitásszolgáltatók

Azonosítsa az alkalmazás által használt identitásszolgáltató(ka)t. Az identitásszolgáltatók konfigurálásáról az alábbiakban tájékozódhat:

Minden egyéb külső forrás

Ebben az útmutatóban nem tudunk dokumentálni minden lehetséges külső függőséget. A csapat feladata annak ellenőrzése, hogy az alkalmazás minden külső függősége kielégíthető-e az App Service migrálása után.

A leltár titkos kódjai

Jelszavak és biztonságos sztringek

Ellenőrizzen minden tulajdonságot, konfigurációs fájlt és környezeti változót az éles üzemben, hogy nem tartalmaz-e titkos sztringeket és jelszavakat. Egy Spring Boot-alkalmazásban ezek a sztringek valószínűleg az application.properties vagy a application.yml között találhatók.

Leltártanúsítványok

Dokumentálja a nyilvános SSL-végpontokhoz vagy a háttéradatbázisokkal és más rendszerekkel való kommunikációhoz használt összes tanúsítványt. A következő parancs futtatásával megtekintheti az éles szervereken található összes tanúsítványt:

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

Határozza meg, használják-e a fájlrendszert, és ha igen, hogyan

Az alkalmazáskiszolgáló fájlrendszerének bármely használatához újrakonfigurálásra vagy bizonyos ritka esetekben architekturális módosításokra van szükség. Az alábbi forgatókönyvek némelyike vagy mindegyike igaz lehet Önre.

Csak olvasható statikus tartalom

Ha az alkalmazás jelenleg statikus tartalmat szolgál ki, másik helyre van szüksége. Érdemes lehet statikus tartalmat áthelyezni az Azure Blob Storage-ba, és globálisan hozzáadni az Azure Front Doort a gyors letöltésekhez. További információ: Statikus webhely üzemeltetése az Azure Storage és Azure Storage-fiók integrálása az Azure Front Door.

Különleges esetek

Bizonyos éles forgatókönyvek további módosítást igényelhetnek, vagy további korlátozásokat szabhatnak ki. Bár az ilyen forgatókönyvek ritkán fordulnak elő, fontos meggyőződni arról, hogy nem alkalmazhatók az alkalmazásra, vagy helyesen oldják fel őket.

Annak meghatározása, hogy az alkalmazás ütemezett feladatokra támaszkodik-e

Ütemezett feladatok (például Quartz Scheduler- vagy Cron-feladatok) nem használhatók az App Service-szel. Az App Service nem akadályozza meg az ütemezett feladatokat tartalmazó alkalmazások belső üzembe helyezését. Ha azonban az alkalmazást horizontálisan felskálázza, ez az ütemezett feladat ütemezett időszakonként többször is lefuthat. Ez nem várt következményekkel járhat.

Leltározza az ütemezett feladatokat az alkalmazás folyamatán belül vagy kívül.

Annak meghatározása, hogy az alkalmazás tartalmaz-e az operációs rendszerre vonatkozó kódot

Ha az alkalmazás tartalmaz olyan kódot, amely függőségeket tartalmaz a gazdagép operációs rendszerén, akkor újra kell azt újrabontással eltávolítania a függőségek eltávolításához. Előfordulhat például, hogy a fájlrendszer elérési útjainak /\File.Separator bármilyen használatát le kell cserélnie, vagy Paths.get ha az alkalmazás Windows rendszeren fut.

Az éles kiszolgálón(ok) futó összes külső folyamat/démon azonosítása

Az alkalmazáskiszolgálón kívül futó folyamatokat, például a monitorozási démonokat, máshová kell migrálni vagy megszüntetni.

Nem HTTP-kérések vagy több port kezelésének azonosítása

Az App Service csak egyetlen HTTP-végpontot támogat egyetlen porton. Ha az alkalmazás több porton figyel, vagy a HTTP protokolltól eltérő protokollal fogadja a kéréseket, ne használja az Azure App Service-t.

Migráció

A konfiguráció paraméterezése

Győződjön meg arról, hogy minden külső erőforráskoordináta (például adatbázis-kapcsolati sztringek) és más testreszabható beállítások olvashatók a környezeti változókból. Spring Boot-alkalmazás áttelepítése esetén az összes konfigurációs beállításnak már külsőleg méretezhetőnek kell lennie. További információért lásd a Spring Boot dokumentációjának Externalized Configuration részét.

Íme egy példa, amely egy SERVICEBUS_CONNECTION_STRING környezeti változóra hivatkozik egy application.properties fájlból:

spring.jms.servicebus.connection-string=${SERVICEBUS_CONNECTION_STRING}
spring.jms.servicebus.topic-client-id=contoso1
spring.jms.servicebus.idle-timeout=10000

App Service-csomag kiépítése

Az elérhető szolgáltatáscsomagok listájában válassza ki azt a csomagot, amelynek specifikációi megfelelnek vagy meghaladják az aktuális éles hardver specifikációit.

Megjegyzés:

Ha előkészítési/Canary-alapú üzemet szeretne futtatni, vagy üzembe helyezési pontokat tervez használni, az App Service-csomagnak tartalmaznia kell az ehhez megfelelő plusz kapacitást. Java-alkalmazásokhoz Premium vagy magasabb szintű csomag használatát javasoljuk.

Hozza létre az App Service-csomagot.

Webalkalmazás(ok) létrehozása és üzembe helyezése

Létre kell hoznia egy webalkalmazást az App Service-csomagban (futtatókörnyezeti veremként a "Java SE" elemet választva) minden futtatni kívánt végrehajtható JAR-fájlhoz.

Maven-alkalmazások

Ha az alkalmazása egy Maven POM-fájl alapján készült, használja a Maven webalkalmazási beépülő modulját a webalkalmazás létrehozásához és az alkalmazás üzembe helyezéséhez. További információ: Rövid útmutató: Java-alkalmazás létrehozása Azure-alkalmazás szolgáltatásban.

Nem Maven-alkalmazások

Ha nem tudja használni a Maven beépülő modulját, a webalkalmazást más mechanizmusokkal kell kiépítenie, például:

A webalkalmazás létrehozása után az elérhető üzembe helyezési mechanizmusok egyikével helyezze üzembe az alkalmazást. Ha lehetséges, az alkalmazást fel kell tölteni a /home/site/wwwroot/app.jar címre. Ha nem szeretné átnevezni a JAR-t app.jar, feltölthet egy rendszerhéjszkriptet a jar futtatásához. Ezután illessze be a szkript teljes elérési útját az Indítási fájl szövegmezőbe a portál Konfiguráció szakaszában. Az indítási szkript nem abból a könyvtárból fut, ahová az el lett helyezve. Ezért mindig abszolút elérési utakat használjon az indítási szkriptben található fájlokra való hivatkozáskor (például: java -jar /home/myapp/myapp.jar).

JVM futtatókörnyezeti beállítások migrálása

Ha az alkalmazáshoz konkrét futtatókörnyezeti beállítások szükségesek, a legmegfelelőbb mechanizmussal adja meg azokat.

Egyéni tartomány és SSL konfigurálása

Ha az alkalmazás látható egy egyéni tartományban, le kell képeznie rá a webalkalmazást. További információ: Oktatóanyag: Meglévő egyéni DNS-név leképezése Azure-alkalmazás szolgáltatásra.

Ezután kötést kell létrehoznia az tartomány SSL-tanúsítványa és az App Service-webalkalmazás között. További információ: Egyéni DNS-név védelme SSL-kötéssel az Azure App Service-ben.

Háttértanúsítványok importálása

A háttérrendszerekkel (például az adatbázisokkal) való kommunikáció minden tanúsítványát elérhetővé kell tenni az App Service-ben. További információ: SSL-tanúsítvány hozzáadása az App Service-hez.

Külső erőforrás koordinátáinak és egyéb beállításainak migrálása

Kövesse az alábbi lépéseket a kapcsolati sztringek és egyéb beállítások áttelepítéséhez.

Megjegyzés:

A Konfiguráció paraméterezése szakaszban változókkal paraméterezett Spring Boot-alkalmazásbeállítások esetében ezeket a környezeti változókat meg kell határozni az alkalmazáskonfigurációban. A környezeti változókkal nem explicit módon paraméterezett Spring Boot-alkalmazásbeállításokat továbbra is felül lehet bírálni az alkalmazáskonfiguráción keresztül. Például:

spring.jms.servicebus.connection-string=${CUSTOMCONNSTR_SERVICE_BUS}
spring.jms.servicebus.topic-client-id=contoso1
spring.jms.servicebus.idle-timeout=1800000

App Service-alkalmazáskonfiguráció

Ütemezett feladatok migrálása

Az Azure-ban ütemezett feladatok végrehajtásához célszerű egy Azure Functions-beli időzítő eseményindítót használni. Nem kell a feladat kódját egy függvénybe migrálnia. A függvény egyszerűen meghívhat egy URL-címet az alkalmazásban a feladat aktiválásához. Ha a feladatok végrehajtását dinamikusan kell meghívni és/vagy központilag nyomon követni, célszerű a Spring Batchet használni.

Másik lehetőségként létrehozhat egy Logic Apps-alkalmazást, amely egy Recurrence eseményindítót tartalmaz, hogy meghívhassa az URL-címet anélkül, hogy az alkalmazáson kívül kódot kellene írnia. További információ: Áttekintés – Mi az Azure Logic Apps? és Ismétlődő feladatok és munkafolyamatok létrehozása, ütemezése és futtatása az Azure Logic Apps Recurrence eseményindítójával.

Megjegyzés:

A kártékony használat megelőzése érdekében valószínűleg meg kell győződnie arról, hogy a feladat meghívási végpontja megköveteli a hitelesítő adatokat. Ebben az esetben az eseményindító függvénynek meg kell adnia a hitelesítő adatokat.

Az identitásszolgáltató migrálása és engedélyezése

Ha az alkalmazás hitelesítést vagy engedélyezést igényel, az alábbi útmutató segítségével győződjön meg arról, hogy az identitásszolgáltatóhoz való hozzáférésre van konfigurálva:

  • Ha az identitásszolgáltató Microsoft Entra-azonosító, nincs szükség módosításra.
  • Ha az identitásszolgáltató egy helyi Active Directory erdő, fontolja meg egy hibrid identitáskezelési megoldás implementálását a Microsoft Entra ID-val. További információkért tekintse meg a hibrid identitás dokumentációját.
  • Ha az identitásszolgáltató egy másik helyszíni megoldás, például a PingFederate, a Microsoft Entra Connect témakör egyéni telepítésével konfigurálhatja az összevonást a Microsoft Entra-azonosítóval. Másik lehetőségként fontolja meg, hogy a Spring Security használatával használja az identitásszolgáltatót az OAuth2/OpenID Connecten vagy az SAML-n keresztül.

Újraindítás és buildtesztelés

Utolsó lépésként újra kell indítania a webalkalmazást a konfigurációs módosítások alkalmazásához. Az újraindítást követően ellenőrizze, hogy az alkalmazás megfelelően fut-e.

A migrálás után

Most, hogy az alkalmazást migrálta az Azure App Service-be, ellenőriznie kell, hogy az a várt módon működik-e. Miután végzett, van néhány javaslatunk, amelyek segítségével az alkalmazás felhőalapúbbá tehető.

Ajánlások