Skálázás a végpontok közötti biztonsággal, monitorozással és automatizálással

Az alkalmazások tervezése során meg kell határoznunk, hogyan alkalmazkodhatunk a számítási feladatok változásaihoz, hogyan állíthatjuk helyre a váratlan hibákat, minimalizálhatjuk a biztonsági kockázatokat stb. Míg az egyik lehet kezdeni egy próba-és hiba megközelítés, amely időt vesz el más szervezeti célok, és hátrányosan befolyásolhatja a hírnevünket. Az Azure az első lépésekhez szükséges architekturális útmutatást nyújt. Mindennel rendelkezik, amire szüksége van egy méretezhető alkalmazás létrehozásához – a legkorszerűbb biztonságtól kezdve az automatikus skálázáson át az adat-, üzenetküldési, gyorsítótárazási, teljesítményfigyelési és automatizálási támogatási szolgáltatásokig. Ezek közül a támogató szolgáltatások közül sok népszerű nyílt forráskódú szoftveren alapul – például a PostgreSQL-en, a Redisen, a JMS-en és a Kafkán –, így nem lehet védett megoldásokat használni.

Diagram a

Most vessünk egy pillantást néhány kulcsfontosságú Azure-szolgáltatásra és szolgáltatásra , és hogy hogyan használhatja őket skálázható Java-alkalmazások létrehozásához.

A Java-alkalmazások képességeinek kiterjesztése – adatbázisok és üzenetkezelés

AMellett, hogy számos lehetőséget kínál a Java-kód futtatására, az Azure számos teljes körűen felügyelt szolgáltatást kínál az adatbázis igényeinek kielégítésére – beleértve az Azure Database for PostgreSQL-t, az Azure Database for MySQL-t, a MongoDB Atlast, az Azure Cosmos DB-t, az Azure SQL Database-t és a felügyelt Azure SQL-példányt. Ugyanez érvényes az üzenetkezelésre is, olyan lehetőségekkel, mint az Azure Service Bus, az Azure Event Hubs és az Apache Kafka for Confluent Cloud.

Az Azure Service Bus Premium szint támogatja a JMS-t, a Java Messaging Service programozási modelljét. Függetlenül attól, hogy az alkalmazásai virtuális gépeken, a Kubernetesben vagy a teljes körűen felügyelt PaaS-szolgáltatásokon futnak-e, ezeket a teljes körűen felügyelt adat- és üzenetkezelési szolgáltatásokat gyorsan kiépítheti és használhatja nyílt forráskódú ügyfelek, Azure Java SDK-k, Spring starterek és alkalmazáskiszolgáló-integrációk használatával. Ezek mind biztosítják a Microsofttól és az Azure-tól elvárható megfelelőségi, rendelkezésre állási és megbízhatósági garanciákat. Számos Java- és Spring-fejlesztő idiomatikus kódtárakat szeretne használni az előnyben részesített felhőszolgáltatásokkal való kapcsolatok egyszerűsítése érdekében. A Microsoft a tárak, illesztőprogramok és modulok átfogó listáját tartja fenn, amelyek segítségével egyszerűen kezelheti az Azure-szolgáltatásokat az adatok, az üzenetkezelés, a gyorsítótár, a tárolás, az eseménykezelés, a címtár és a titkos kódok kezelése során. További információt a Spring Cloud Azure fejlesztői útmutatójában talál.

A Spring Cloud Azure funkcióit és a kapcsolódó Azure-szolgáltatásokat felsoroló ábra.

A különböző Java-kódtárak, illesztőprogramok és Spring-modulok által támogatott szolgáltatáskategóriákat és kapcsolódó Azure-platformszolgáltatásokat bemutató ábra.

Nulla megbízhatóság – Biztonságos hálózat

A Java-alkalmazásokat úgy védheti meg, hogy üzembe helyezi őket egy Azure-beli virtuális hálózaton – ez az Azure-beli saját magánhálózatok alapvető építőeleme. A virtuális hálózatok lehetővé teszik az Azure-erőforrások számos típusát, hogy biztonságosan kommunikáljanak egymással, az internettel és a helyszíni hálózatokkal és rendszerekkel. Egy virtuális hálózattal elkülönítheti az alkalmazásokat és támogathatja a háttérszolgáltatásokat az internetről, és elhelyezheti őket a magánhálózatokon. Az alkalmazások és háttérrendszerek bejövő és kimenő forgalmát teljes mértékben szabályozhatja.

Az Azure Spring Apps referenciaarchitektúrájának diagramja.

Nulla megbízhatóság – Biztonságos kommunikáció teljes körűen

A biztonságos kommunikáció megoldásarchitektúra részeként történő implementálása kihívást jelenthet. Sok vállalat manuálisan elforgatja a tanúsítványait, vagy saját megoldásokat hoz létre a kiépítés és a konfigurálás automatizálásához. Még akkor is fennállnak adatkiszivárgási kockázatok, például jogosulatlan másolás vagy adatátvitel.

Az Azure-ral bármilyen kommunikációs ponton biztonságossá teheti a kommunikációt, vagy megszüntetheti az átviteli szintű biztonságot. Automatizálhatja a kommunikáció biztonságossá tételéhez szükséges összes Azure-erőforrás kiépítését és konfigurálását is. Az Azure Spring Apps működéséről további információt a Spring Boot-alkalmazások biztonságos kommunikációja – Teljes felügyelet környezetben– című témakörben talál. A folyamat hasonló a Java-alkalmazások futtatásához használható többi Azure számítási szolgáltatáshoz.

A "soha nem megbízható, mindig ellenőrzés és hitelesítő adatok nélküli" elven alapuló Teljes felügyelet segít az összes kommunikáció biztonságossá tételében az ismeretlen és nem felügyelt tanúsítványok eltávolításával, valamint azzal, hogy csak azokat a tanúsítványokat bízza meg, amelyeket az identitás ellenőrzésével osztanak meg a tanúsítványokhoz való hozzáférés biztosítása előtt. Bármilyen típusú TLS/SSL-tanúsítványt használhat, beleértve a hitelesítésszolgáltató által kibocsátott tanúsítványokat, a kiterjesztett érvényesítési tanúsítványokat, a helyettesítő tanúsítványokat tetszőleges számú altartomány támogatásával, vagy önaláírt tanúsítványokat a fejlesztési és tesztelési környezetekhez.

A Java- vagy Spring Boot-alkalmazások biztonságosan betölthetik a tanúsítványokat az Azure Key Vaultból (erről a következő szakaszban olvashat). Az Azure Key Vault segítségével szabályozhatja a tanúsítványok tárolását és elosztását a véletlen szivárgás csökkentése érdekében. Az alkalmazások és szolgáltatások biztonságosan hozzáférhetnek a tanúsítványokhoz felügyelt identitások, szerepköralapú hozzáférés-vezérlés és a minimális jogosultság elve alapján. Ez a biztonságos betöltés az Azure Key Vault JCA (Java titkosítási architektúra) szolgáltatójának használatával történik.

A Spring Boot-alkalmazások biztonságos, végpontok közötti kommunikációjának architektúráját bemutató ábra.

Nulla megbízhatóság – Titkos kódok kezelése

Számos Java-alkalmazás csatlakozik a támogató szolgáltatásokhoz URL-címekkel és hitelesítő adatokkal – olyan adatokkal, amelyek a bizalmas adatokhoz való jogosulatlan hozzáférésre használhatók. Az ilyen adatok alkalmazásokba való beágyazása számos okból óriási biztonsági kockázatot jelent, beleértve a kódtárakon keresztüli felderítést is. Sok fejlesztő környezeti változók használatával külsővé teszi az ilyen hitelesítő adatokat, hogy több alkalmazás is betölthesse őket, de ez csak a kódot a végrehajtási környezetbe helyezi át.

Diagram a

Az Azure Key Vault jobb, biztonságosabb és biztonságosabb módot biztosít a titkos kódok védelmére. Teljes körűen szabályozhatja az alkalmazás titkos kulcsainak tárolását és terjesztését a szerepköralapú hozzáférés-vezérlés (RBAC) és a hozzáférés korlátozásához szükséges minimális jogosultság elve alapján. Továbbra is kézben tarthatja az alkalmazás titkos kulcsait – csak adjon engedélyt az alkalmazásoknak, hogy szükség szerint használják őket. Az alkalmazás indításakor, mielőtt hozzáférést ad a titkos kódokhoz, az alkalmazás a Microsoft Entra-azonosítóval hitelesít, és az Azure Key Vault engedélyezi az Azure RBAC használatát. Az Azure Key Vault teljes körű naplózási képességeket tartalmaz, és két szolgáltatási szinttel rendelkezik: Standard, amely szoftverkulccsal titkosít, és egy prémium szintű, amely hardveres biztonsági modul (HSM) által védett kulcsokat tartalmaz.

Végfelhasználói hitelesítés és engedélyezés

A nagyvállalati Java-alkalmazások többsége felhasználói hitelesítést és engedélyezést igényel, amelyet a Microsoft Entra ID használatával valósíthat meg– ez egy teljes identitás- és hozzáférés-kezelési megoldás integrált biztonsággal. A végfelhasználói fiókok lehetnek szervezeti identitások vagy közösségi identitások a Facebookról, a Twitterről vagy a Gmailből a Microsoft Entra ID és az Azure Active Directory B2C használatával. A Microsoft Entra ID-alapú megoldásokat a Microsoft Authentication Library for Java vagy a Spring Boot Starter for Microsoft Entra használatával implementálhatja. A választott identitásszolgáltatót is használhatja , például a ForgeRockot, az Auth0-t, a Pinget vagy az Oktát.

Végpontok közötti monitorozás

Az Azure-ral bármilyen eszközzel és platformmal figyelheti a Java-alkalmazásokat. Másik lehetőségként teljes mértékben felügyelt, natív monitorozást is implementálhat – beleértve az alkalmazásteljesítmény-monitorozást (APM) – az Azure Monitor egyik funkciójával, az Application Elemzések használatával. Erős támogatást nyújt a Java, a Spring és az olyan keretrendszerek számára, mint a Micrometer és a Spring Boot, így gyorsan azonosíthatja és elháríthatja a problémákat. A funkciók közé tartozik az élő metrikák streamelése, a kérelmek sebessége és a válaszidő nyomon követése, az eseménykövetés és a külső függőségi arányok – minden, amire szüksége van az Azure-ban vagy a helyszínen futó Java-alkalmazások rendelkezésre állásának, teljesítményének, megbízhatóságának és használatának monitorozásához.

A végpontok közötti monitorozáshoz naplókat és metrikákat összesítheti az Azure Portalon, a Log Analyticsben, amely a naplók és metrikák adatainak lekérdezéseinek szerkesztésére és futtatására használható az Azure Monitorban. Olyan lekérdezést írhat, amely rekordokat ad vissza, majd a Log Analytics használatával rendezheti, szűrheti és elemezheti őket. Vagy írhat egy fejlettebb lekérdezést statisztikai elemzések elvégzésére és az eredmények diagramban való megjelenítésére, ahogyan az egy adott trend azonosításához szükséges lehet. Akár interaktívan dolgozik a lekérdezések eredményeivel, akár más Azure Monitor-funkciókkal, például napló lekérdezési riasztásokkal vagy munkafüzetekkel használja őket, a Log Analytics jó eszköz a lekérdezések írásához és teszteléséhez.

Ennek ellenére tisztában vagyunk azzal, hogy azok az ügyfelek, akik Java-alkalmazásaikat az Azure-ba hozzák, továbbra is ugyanazokat az APM-eszközöket szeretnék használni a helyszíni alkalmazások monitorozásához. Ennek a használatnak a támogatásához a New Relic, az AppDynamics, a Dynatrace és az Elastic együttműködtünk, hogy a monitorozási megoldásaikat integráljuk a Azure-alkalmazás Service-be és az Azure Spring Appsbe. A monitorozási ügynökök egymás mellett futnak a kóddal, és mi telepítjük és frissítjük az ügynököket. Az Azure Container Appsben, az Azure Kubernetes Service-ben vagy a virtuális gépeken való üzembe helyezéskor az alkalmazások mellett futtathatja bármelyik ügynököt (beleértve a New Relicet, az AppDynamicst, a Dynatrace-t, az Elastic-t és a Datadogot is), de ezeket önállóan kell telepítenie és kezelnie. Hasonlóképpen a végpontok közötti monitorozáshoz naplókat és metrikákat összesítheti az Elastic és a Splunk alkalmazásban.

Diagram a

Azt is felismerjük, hogy sok ügyfél továbbra is a Grafana használatával szeretné lekérdezni, vizualizálni, riasztást küldeni és megérteni a metrikáikat. Ezért együttműködtünk a Grafana Labs szolgáltatással, hogy egy teljes körűen felügyelt Azure Grafana szolgáltatást nyújtsunk, amely lehetővé teszi az ügyfelek számára a Grafana natív futtatását az Azure-ban. A szolgáltatás megkönnyíti a biztonságos és méretezhető Grafana-példányok üzembe helyezését, és összekapcsolja őket nyílt forráskódú, felhőbeli és külső adatforrásokkal vizualizáció és elemzés céljából. A szolgáltatás olyan natív Azure-adatforrásokhoz van optimalizálva, mint az Azure Monitor és az Azure Data Explorer, és alkalmazásteljesítmény-monitorozási (APM) integrációkat tartalmaz az Azure számítási szolgáltatásokkal, például Azure-alkalmazás Szolgáltatással, az Azure Spring Appsszel, az Azure Kubernetes Service-vel, a Splunk-tal, a Datadog-tal és az Azure-beli virtuális gépekkel.

Java-alkalmazások felgyorsítása gyorsítótárazással

A Java-alkalmazások számítási feladatainak növekedésével növelheti a teljesítményt az Azure Cache for Redis használatával, amely egy memóriabeli gyorsítótárazási réteget implementál a lekérdezési eredményekhez, a munkamenet-állapotokhoz és a statikus tartalmakhoz. Nagyszerű módja az alkalmazások átviteli sebességének és a késés csökkentésének anélkül, hogy újra kellene rendeznie a mögöttes adatbázist. Az Azure Cache for Redis Enterprise-szintek, amelyeket a Redisszel közösen fejlesztettek ki, és amelyet a Microsoft teljes mértékben felügyel, a redis Azure-on való futtatásához a legmagasabb rendelkezésre állású és méretezhető üzembe helyezési lehetőség – beleértve az olyan funkciókat is, mint az aktív georeplikálás, a külső munkamenet-kezelés, valamint a gyors keresés és indexelés.

Diagram a

Automatikus skálázás

A Java-alkalmazások futtatásához szükséges Összes Azure "számítási" szolgáltatás támogatja az automatikus skálázást (automatikus skálázást), amely segít maximalizálni a költséghatékonyságot, és alkalmazkodni a változó számítási feladatokhoz anélkül, hogy a szükségesnél több kapacitást kellene fizetnie. Ha engedélyezve van, biztos lehet benne, hogy az automatikus skálázás gondoskodik a mögöttes infrastruktúráról és az alkalmazás számítási feladatairól.

Diagram az

A terhelés vagy az ütemezés alapján automatikusan skálázhatja a be- és kiskálázást. Terhelésalapú (vagy metrikaalapú) módban az alkalmazások horizontálisan felskálázhatók a terhelés kezeléséhez szükséges erőforrásokra a beállított korlátokig. Hasonlóképpen, ha a terhelés csökken, az erőforrások horizontálisan horizontálisan skálázódnak, és soha nem esnek a beállított minimum alá.

Ütemezésalapú módban az alkalmazások felskálázhatók és felskálázhatók egy meghatározott ütemezés és korlátok alapján. Az ütemezésalapú mód olyan számítási feladatokhoz hasznos, amelyek kiszámítható mintát követnek, és alapkonfigurációt hozhatnak létre a terhelésalapú skálázáshoz.

Automatizálás az ötlettől az éles környezetig

Amikor az alkalmazásokat a felhőbe helyezi át, mindent automatizálni szeretne – a Nagyvállalati Szintű Java-fejlesztéshez szükséges módon. Érdemes megfontolnia az automatikus skálázást az alkalmazás számítási feladatainak kezeléséhez, a korábban leírtaknak megfelelően. Emellett a felhőkörnyezet egészét is skáláznia és automatizálnia kell – ideális esetben az ötlettől az éles környezetig –, beleértve az új környezetek gyors üzembe helyezését a teszteléshez, a QA-hoz, az éles környezethez, a kék/zöld környezetekhez, a földrajzi terjeszkedéshez stb.

Az üzembe helyezési, összeállítási és üzembe helyezési kategóriák mezőit bemutató diagram az ebben a szakaszban ismertetett eszközökhöz kapcsolódó emblémákkal.

Az Azure lehetővé teszi az eszközök és platformok széles skáláját használó automatizálást az ötlettől az éles környezetig. Magas szinten az ilyen automatizálási folyamatok három kategóriába sorolhatók:

  • Kiépítési folyamatok – Az Azure-erőforrásokat Terraform-, Azure Resource Manager- (ARM-) sablonokkal, Bicep-sablonokkal vagy az Azure CLI-vel is kiépítheti, ha szükséges, ismétlődő szkripteket hozhat létre a konzisztensen felpörgetett és leforgató környezetekhez.

  • Folyamatok létrehozása – Olyan eszközök alapján, mint a Maven vagy a Gradle, a jelen dokumentációban korábban ismertetett módon.

  • Üzembehelyezési folyamatok – A GitHub Actions, az Azure Pipelines, a Jenkins Pipelines, a GitLab Pipelines vagy az Azure CLI használatával automatizálhatja a kódtelepítéseket, beleértve a kék/zöld központi telepítéseket, amelyek a kódfrissítések üzembe helyezésekor a kritikus rendszereket éles környezetben tartják.

A meglévő eljárások és rendszerek használatának folytatása

A Java-alkalmazások azure-beli migrálása vagy összeállítása, majd méretezése során használhatja meglévő hálózatkezelési, monitorozási, automatizálási, identitásszolgáltatók, helyszíni rendszerek, fejlesztési és buildelési eszközök, valamint alkalmazástárak terén meglévő befektetéseit. Az alábbi táblázat néhány példát tartalmaz:

Kategória Java-ökoszisztéma-termékek és -szolgáltatások
Hálózatkezelés F5, Palo Alto, Cloudflare, Checkpoint, Infoblox
Figyelés New Relic, Dynatrace, AppDynamics, Elastic, Splunk
Automation GitHub Actions, Azure Pipelines, Jenkins, GitLab
Identitásszolgáltatók Microsoft Entra ID, ForgeRock, Auth0, Ping, Okta
Helyszíni rendszer Adatbázisok (például Oracle DB vagy IBM DB2), üzenetkezelés (például IBM MQ vagy TIBCO EMS), eseménykezelés (például Kafka), könyvtárak (például Microsoft Entra ID, OpenLDAP vagy IBM ID)
Fejlesztési eszközök IntelliJ, Visual Studio Code, Eclipse, Spring Tool Suite, Maven, Gradle

Referenciaarchitektúrák

Az Azure Architecture Center útmutatást nyújt az Azure-beli megoldások létrehozásához a már bevált minták és eljárások használatával, többek között ezeknek a képességeknek a használatához. Ezek a referenciaarchitektúrák az ügyfélkapcsolatokból tanultakon alapulnak, figyelembe véve a költségoptimalizálást, a működési kiválóságot, a teljesítményhatékonyságot, a megbízhatóságot, a méretezhetőséget, a biztonságot, a monitorozást, a füsttesztelést és egyebeket. Emellett olyan megoldástervező összetevőkkel is foglalkoznak, mint például az Azure-beli célzónák – olyan környezetek, amelyek előre kiépített számítási feladatokat üzemeltetnek az infrastruktúra mint kód használatával, szükség esetén a Java-alkalmazások migrálásának és a zöldmezős fejlesztés nagyvállalati szintű engedélyezéséhez.

Itt látható például az Azure Spring Apps célzónagyorsítója, amely bemutatja, hogyan implementálható egy küllős kialakítás, amelyben az Azure Spring Apps egyetlen küllőben van üzembe helyezve, amely a központban üzemeltetett megosztott szolgáltatásoktól függ. Ez a projekt összetevőkkel van felépítve a Microsoft Azure Well-Architected Frameworkben elért eredmények eléréséhez. Az architektúra implementációjának megismeréséhez tekintse meg az Azure Spring Apps célzónagyorsító-adattárát a GitHubon. Ugyanezt a megközelítést alkalmazhatja bármely Azure-beli "számítási" célhelyen üzembe helyezett Java-alkalmazásokra , például Azure-alkalmazás Szolgáltatásra, Az Azure Container Appsre vagy az Azure Kubernetes Service-re. Emellett, ha meglévő Java-alkalmazásokat szeretne migrálni az Azure-ba, a migrálási útmutatók és az ajánlott stratégiák átfogó készletével rendelkezünk.

A cikkben leírt eszközökhöz tartozó

Következő lépés

A Java-alkalmazásokhoz megfelelő Azure-szolgáltatások kiválasztása