Spring Boot-alkalmazások migrálása az Azure Spring Appsbe

Megjegyzés:

Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.

Ez az útmutató azt ismerteti, hogy mire érdemes figyelnie, amikor át szeretne telepíteni egy meglévő Spring Boot-alkalmazást az Azure Spring Appsben való futtatáshoz.

A migrálás 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.

Ha a migrálás előtti követelmények egyikét sem tudja teljesíteni, tekintse meg a következő kísérő áttelepítési útmutatókat:

  • Végrehajtható JAR-alkalmazások migrálása Azure Kubernetes Service-beli tárolókba (tervezett útmutató)
  • Végrehajtható JAR-alkalmazások migrálása az Azure Virtual Machinesba (tervezett útmutató)

Alkalmazásösszetevők vizsgálata

Helyi állapot azonosítása

PaaS-környezetekben egyetlen alkalmazás sem garantáltan pontosan egyszer fut egy adott időpontban. Még akkor is létrehozhat duplikált példányt, ha egyetlen példányban való futtatásra konfigurál egy alkalmazást:

  • Az alkalmazást egy fizikai gazdagépre kell áthelyezni hiba vagy rendszerfrissítés miatt.
  • Az alkalmazás frissítése folyamatban van.

Ezen esetek bármelyikében az eredeti példány addig fut, amíg az új példány be nem fejeződik. Ez a következő potenciálisan jelentős következményekkel jár az alkalmazásra nézve:

  • Egyetlen singleton sem garantálható, hogy valóban egyedülálló legyen.
  • A külső tárolóban nem tárolt adatok valószínűleg sokkal hamarabb elvesznek, mint egyetlen fizikai kiszolgálón vagy virtuális gépen.

Az Azure Spring Appsbe való migrálás előtt győződjön meg arról, hogy a kód nem tartalmaz olyan helyi állapotot, amelyet nem szabad elveszteni vagy duplikálni. Ha létezik helyi állapot, módosítsa úgy a kódot, hogy az az alkalmazáson kívül tárolja az állapotot. A felhőalapú alkalmazások általában az alkalmazás állapotát olyan helyeken tárolják, mint például a következők:

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

Keresse meg azokat a példányokat, ahol a szolgáltatások a helyi fájlrendszerbe írnak és/vagy olvasnak. Azonosíthatja a rövid távú/ideiglenes fájlok írási és olvasási helyét, valamint a hosszú élettartamú fájlok írási és olvasási helyét.

Megjegyzés:

Az Azure Spring Apps 5 GB ideiglenes tárterületet biztosít az Azure Spring Apps-példányonként, amely a következőbe /tmpvan csatlakoztatva: . Ha az ideiglenes fájlok írása meghaladja ezt a korlátot, vagy egy másik helyre van írva, kódmódosításra lesz szükség.

Csak olvasható statikus tartalom

Ha az alkalmazás jelenleg statikus tartalmat szolgáltat, szüksége lesz egy másik helyre hozzá. A statikus tartalmat célszerű az Azure Blob Storage-ba helyezni és az Azure CDN hozzáadásával biztosítani a villámgyors globális letöltést. További információ: Statikus webhely üzemeltetése az Azure Storage-ban és rövid útmutató: Azure Storage-fiók integrálása az Azure CDN-nel.

Dinamikusan közzétett statikus tartalom

Ha az alkalmazás engedélyezi az alkalmazás által feltöltött/előállított statikus tartalmakat, azonban a létrehozás után nem módosítható, az Azure Blob Storage és az Azure CDN fent ismertetett módon történő, egy Azure-függvénnyel közös használatával kezelheti a feltöltéseket és a CDN-frissítést. A Statikus tartalom feltöltése és CDN-előtöltése az Azure Functions szolgáltatással című témakörben megadtunk egy szabadon használható mintaimplementációt.

Annak meghatározása, hogy valamelyik szolgáltatás tartalmaz-e operációsrendszer-specifikus kódot

Ha az alkalmazás tartalmaz a gazdagép operációs rendszeréhez tartozó függőségekkel rendelkező kódot, azt Önnek újra kell bontania a függőségek eltávolításához. Előfordulhat például, hogy a File.Separator vagy Paths.get fájlrendszerbeli útvonalakkal rendelkező /- vagy \-előfordulásokat cserélnie kell.

Váltás egy támogatott platformra

Az Azure Spring Apps a Java és a Spring Boot és a Spring Cloud egyes verzióit kínálja. A kompatibilitás biztosítása érdekében először migrálja az alkalmazást a Java egyik támogatott verziójába a jelenlegi környezetben, majd folytassa a további migrálási lépéseket. Ü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 Java, a Spring Boot és a Spring Cloud támogatott verzióiról, valamint a frissítési utasításokról az Alkalmazás előkészítése az Azure Spring Appsben való üzembe helyezéshez című témakörben olvashat.

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

Az ütemezett feladatokat, például a Quartz Scheduler-feladatokat vagy a Unix cron-feladatokat NEM szabad használni az Azure Spring Appsben. Az Azure Spring Apps 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 éles kiszolgálón(ok) futó ütemezett feladatokat az alkalmazáskódon belül vagy kívül.

Spring Boot-verziók azonosítása

Vizsgálja meg az egyes migrált alkalmazások függőségeit a Spring Boot-verzió meghatározásához.

Maven

A Maven-projektekben a Spring Boot-verzió általában a <parent> POM-fájl elemében található:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
Gradle

A Gradle-projektekben a Spring Boot-verzió általában a plugins beépülő modul verziójaként jelenik meg:org.springframework.boot

plugins {
  id 'org.springframework.boot' version '2.7.10'
  id 'io.spring.dependency-management' version '1.0.15.RELEASE'
  id 'java'
}

A Spring Boot 1.x-et használó alkalmazások esetében kövesse a Spring Boot 2.0 migrálási útmutatót , és frissítse őket egy támogatott Spring Boot-verzióra. A támogatott verziókról az Alkalmazás előkészítése az Azure Spring Appsben való üzembe helyezéshez című Spring Boot- és Spring Cloud-verziók című szakaszában olvashat.

Naplóösszesítési megoldások azonosítása

Azonosítsa az áttelepített alkalmazások által használt naplóösszesítési megoldásokat. Konfigurálnia kell a diagnosztikai beállításokat a migrálásban, hogy a naplózott események felhasználhatók legyenek. További információkért tekintse meg a konzolnaplózás és a diagnosztikai beállítások konfigurálását ismertető szakaszt.

Alkalmazásteljesítmény-kezelési (APM-) ügynökök azonosítása

Azonosítsa az alkalmazásokkal használt összes alkalmazásteljesítmény-figyelő ügynököt. Az Azure Spring Apps támogatja az Alkalmazás Elemzések, a New Relic, az Elastic APM, a Dynatrace és az AppDynamics integrációját. Ha az alkalmazás támogatott APM-t használ, konfigurálja az integrációt a migrálásban. Ha az alkalmazás nem támogatott APM-et használ, fontolja meg inkább az Alkalmazás Elemzések használatát. További információ: Migrálás szakasz.

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ó.

Databases

Azonosítsa a kapcsolati sztringet valamelyik SQL-adatbázishoz.

Spring Boot-alkalmazások esetén a kapcsolati sztringek általában konfigurációs fájlokban jelennek meg.

Í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

A használt közvetítők vagy közvetítők azonosításához keresse meg a buildjegyzéket (általában egy pom.xml vagy build.gradle fájl) a releváns függőségekhez.

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.0.4.0")
      ...
    }

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 ezek általában az application.properties és application.yml fájlokban találhatók az alkalmazás könyvtárában.

Í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=tryandguess

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: big$ecr3t

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:

Nem szabványos portra támaszkodó ügyfelek azonosítása

Az Azure Spring Apps felülírja a server.port beállítást az üzembe helyezett alkalmazásban. Ha az ügyfelek bármelyik ügyfele arra támaszkodik, hogy az alkalmazás a 443-nál eltérő porton érhető el, módosítania kell őket.

Minden egyéb külső forrás

Ebben az útmutatóban nem lehet minden lehetséges külső függőséget dokumentálni. A migrálás után az Ön feladata ellenőrizni, hogy képes-e kielégíteni az alkalmazás minden külső függőségét.

Készletkonfigurációs források és titkos kódok

Leltárjelszavak é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. A Spring Boot-alkalmazásokban általában ilyen sztringek találhatók az application.properties vagy az application.yml fájlban.

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 kiszolgáló(ko)n található összes tanúsítványt:

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

Az üzembehelyezési architektúra vizsgálata

Az egyes szolgáltatások hardverkövetelményeinek dokumentálása

A Spring Boot-alkalmazás következő információinak dokumentálása:

  • A futó példányok száma.
  • Az egyes példányok számára lefoglalt CPU-k száma.
  • Az egyes példányok számára lefoglalt RAM mennyisége.

Dokumentum georeplikációs/terjesztési

Annak meghatározása, hogy a Spring Boot-alkalmazáspéldányok jelenleg több régió vagy adatközpont között vannak-e elosztva. Dokumentálja az áttelepített alkalmazásokra vonatkozó üzemidő-követelményeket/SLA-t.

Áttelepítés

Azure Spring Apps-példány és -alkalmazások létrehozása

Azure Spring Apps-példány kiépítése az Azure-előfizetésben, ha még nem létezik. Ezután hozzon létre egy alkalmazást. További információ : Rövid útmutató: Az első alkalmazás üzembe helyezése az Azure Spring Appsben.

A konzolnaplózás és a diagnosztikai beállítások konfigurálása

Konfigurálja a naplózást úgy, hogy az összes kimenet a konzolra legyen irányítva, ne a fájlokra.

Miután üzembe helyezett egy alkalmazást az Azure Spring Appsben, adjon hozzá egy diagnosztikai beállítást, hogy a naplózott események felhasználhatók legyenek, például az Azure Monitor Log Analyticsen keresztül.

LogStash/ELK Stack

Ha a LogStash/ELK Stacket használja a naplóösszesítéshez, konfigurálja a diagnosztikai beállítást a konzol kimenetének egy Azure Event Hubba való streameléséhez. Ezután használja a LogStash EventHub beépülő modult a naplózott események LogStashbe való betöltéséhez.

Splunk

Ha splunkot használ a naplóösszesítéshez, konfigurálja a diagnosztikai beállítást, hogy a konzol kimenetét az Azure Blob Storage-ba streamelje. Ezután használja a Microsoft Cloud Services Splunk bővítményét a naplózott események Splunkba való betöltéséhez.

Állandó tároló konfigurálása

Ha az alkalmazás bármely része olvas vagy ír a helyi fájlrendszerbe, konfigurálnia kell az állandó tárolót a helyi fájlrendszer helyére. További információ: Beépített állandó tárterület használata az Azure Spring Appsben.

Minden ideiglenes fájlt a könyvtárba /tmp kell írnia. Az operációs rendszer függetlenségéhez ezt a könyvtárat a következővel System.getProperty("java.io.tmpdir")szerezheti be: . Ideiglenes fájlokat is java.nio.Files::createTempFile létrehozhat.

Az összes tanúsítvány áttelepítése a KeyVaultba

Az Azure Spring Apps nem biztosít hozzáférést a JRE-kulcstárhoz, ezért át kell telepítenie a tanúsítványokat az Azure KeyVaultba, és módosítania kell az alkalmazás kódját a KeyVault tanúsítványainak eléréséhez. További információ: Ismerkedés a Key Vault-tanúsítványokkal és az Azure Key Vault-tanúsítvány ügyfélkódtárával Java-hoz.

Alkalmazásteljesítmény-kezelési (APM-) integrációk konfigurálása

Az Azure Spring Apps az alábbi APM-integrációkat kínálja. A szükséges APM engedélyezéséhez kövesse a hivatkozásokat.

Ha az alkalmazás nem támogatott APM-t használ, fontolja meg inkább az Alkalmazás Elemzések használatát. Az Azure Spring Apps mély integrációt biztosít az Alkalmazás Elemzések a teljesítménykezeléshez és az aberrációkra adott valós idejű válaszhoz.

Metrikák ügyfelek és végpontok letiltása az alkalmazásokban

Távolítsa el a használt metrika-ügyfeleket vagy az alkalmazásokban közzétett metrikavégpontokat.

Az alkalmazás üzembe helyezése

Telepítse az egyes migrált mikroszolgáltatásokat (a Spring Cloud konfigurációs és beállításjegyzék-kiszolgálóit nem beleértve) a rövid útmutatóban leírtak szerint: Az első alkalmazás üzembe helyezése az Azure Spring Appsben.

Szolgáltatásonkénti titkos kódok és külső beállítások konfigurálása

Bármilyen szolgáltatásonkénti konfigurációs beállítást beszúrhat az egyes szolgáltatásokba környezeti változókként. Kövesse az alábbi lépéseket az Azure Portalon:

  1. Lépjen az Azure Spring Apps-példányra, és válassza az Alkalmazások lehetőséget.
  2. Válassza ki a konfigurálni kívánt szolgáltatást.
  3. Válassza a Konfiguráció lehetőséget.
  4. Adja meg a konfigurálni kívánt változókat.
  5. Válassza a Mentés parancsot.

Spring Cloud App Configuration Settings

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

Ha valamelyik Spring Cloud-alkalmazás hitelesítést vagy engedélyezést igényel, győződjön meg arról, hogy az identitásszolgáltató eléréséhez konfigurálva van:

  • 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 Csatlakozás 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 a Spring Security használatát az identitásszolgáltató OAuth2/OpenID Csatlakozás vagy SAML használatával történő használatához.

Az alkalmazás felfedése

Alapértelmezés szerint az Azure Spring Appsben üzembe helyezett alkalmazások külsőleg nem láthatók. Az alkalmazást az alábbi paranccsal teheti közzé:

az spring app update --name <application name> --is-public true

Hagyja ki ezt a lépést, ha Spring Cloud Gatewayt használ vagy kíván használni. További információkért lásd a következő szakaszt.

A migrálás után

Most, hogy befejezte a migrálást, ellenőrizze, hogy az alkalmazás a várt módon működik-e. Ezt követően az alábbi javaslatokkal natívabbá teheti az alkalmazást a felhőben.

  • Fontolja meg, hogy az alkalmazás együttműködjön a Spring Cloud Registryvel. Ez lehetővé teszi az alkalmazás dinamikus felderítését más üzembe helyezett Spring-alkalmazások és -ügyfelek számára. További információ: Alkalmazás előkészítése üzembe helyezésre az Azure Spring Appsben. Ezután módosítsa az alkalmazásügyfeleket a Spring Client Load Balancer használatára. Ez lehetővé teszi az ügyfél számára az alkalmazás összes futó példányának címét, és megkereshet egy olyan példányt, amely akkor működik, ha egy másik példány megsérül vagy nem válaszol. További információ: Spring Tippek: Spring Cloud Load Balancer a Spring Blogban.

  • Az alkalmazás nyilvánossá tétele helyett fontolja meg egy Spring Cloud Gateway-példány hozzáadását. A Spring Cloud Gateway egyetlen végpontot biztosít az Azure Spring Apps-példányban üzembe helyezett összes alkalmazáshoz. Ha egy Spring Cloud Gateway már üzembe van helyezve, győződjön meg arról, hogy konfigurálva van a forgalom átirányítására az újonnan üzembe helyezett alkalmazáshoz.

  • Fontolja meg egy Spring Cloud Config-kiszolgáló hozzáadását az összes Spring Cloud-alkalmazás központi felügyeletéhez és verziókövetéséhez. Először hozzon létre egy Git-adattárat a konfiguráció tárolásához, és konfigurálja az Azure Spring Apps-példányt annak használatára. További információ: Spring Cloud Config Server-példány beállítása a szolgáltatáshoz. Ezután migrálja a konfigurációt a következő lépésekkel:

    1. Az alkalmazás src/main/resources könyvtárában hozzon létre egy bootstrap.yml fájlt a következő tartalommal:

        spring:
          application:
            name: <your-application-name>
      
    2. A konfigurációs Git-adattárban hozzon létre egy <saját-application-name.yml> fájlt, ahol your-application-name ugyanaz található, mint az előző lépésben. Helyezze át a beállításokat az application.yml fájlból az src/main/resources fájlból az imént létrehozott új fájlba. Ha a beállítások korábban egy .properties fájlban voltak, először konvertálja őket YAML-fájllá. Az átalakítás végrehajtásához online eszközöket vagy IntelliJ beépülő modulokat találhat.

    3. Hozzon létre egy application.yml fájlt a fenti könyvtárban. Ezzel a fájllal meghatározhatja azOkat a beállításokat és erőforrásokat, amelyek az Azure Spring Apps-példány összes alkalmazása között meg lesznek osztva. Ilyen beállítások általában az adatforrások, a naplózási beállítások, a Spring Boot Actuator konfigurációja és más beállítások.

    4. Véglegesítse és küldje el ezeket a módosításokat a Git-adattárba.

    5. Távolítsa el az application.properties vagy application.yml fájlt az alkalmazásból.

  • Fontolja meg egy üzembehelyezési folyamat hozzáadását az automatikus, konzisztens üzemelő példányokhoz. Utasítások érhetők el az Azure Pipelineshoz, a GitHub Actionshez és a Jenkinshez.

  • Érdemes lehet átmeneti üzembe helyezéseket használni az éles kódmódosítások teszteléséhez, mielőtt azok elérhetők lennének néhány vagy az összes végfelhasználó számára. További információ: Átmeneti környezet beállítása az Azure Spring Appsben.

  • Fontolja meg szolgáltatáskötések hozzáadását az alkalmazás támogatott Azure-adatbázisokhoz való csatlakoztatásához. Ezek a szolgáltatáskötések szükségtelenné teszik, hogy a Spring Cloud-alkalmazásokhoz kapcsolati adatokat , köztük hitelesítő adatokat adjon meg.

  • Fontolja meg a Azure-alkalmazás Elemzések használatát az alkalmazások teljesítményének és interakcióinak figyeléséhez. További információ: Application Elemzések Java In-Process Agent in Azure Spring Apps.

  • Fontolja meg az Azure Monitor riasztási szabályainak és műveleti csoportjainak hozzáadását az aberrált feltételek gyors észleléséhez és kezeléséhez. További információ : Oktatóanyag: Spring Cloud-erőforrások monitorozása riasztásokkal és műveletcsoportokkal.

  • Fontolja meg az Azure Spring Apps üzembe helyezésének replikálását egy másik régióban az alacsonyabb késés, valamint a nagyobb megbízhatóság és hibatűrés érdekében. Az Azure Traffic Managerrel terheléselosztást helyezhet üzembe az üzemelő példányok között, vagy az Azure Front Door használatával SSL-kiszervezést és webalkalmazási tűzfalat adhat hozzá DDoS-védelemmel.

  • Ha nincs szükség georeplikációra, fontolja meg egy Azure-alkalmazás-átjáró hozzáadását az SSL-kiszervezés és a webalkalmazási tűzfal DDoS-védelemmel való hozzáadásához.