Škálování s komplexním zabezpečením, monitorováním a automatizací

Při navrhování aplikací potřebujeme určit, jak se přizpůsobit změnám úloh, zotavit se z neočekávaných selhání, minimalizovat rizika zabezpečení atd. I když by jeden mohl začít s přístupem ke zkušebnímu a chybovému přístupu, který zabere čas od jiných organizačních cílů a může nepříznivě ovlivnit naši pověst. Azure poskytuje pokyny k architektuře, které jsou potřeba k tomu, aby se věci dostaly hned od začátku. Máte také všechno, co potřebujete k vytvoření škálovatelné aplikace – od špičkového zabezpečení a automatického škálování až po podpůrné služby pro data, zasílání zpráv, ukládání do mezipaměti, monitorování výkonu a automatizaci. Mnohé z těchto podpůrných služeb jsou založené na oblíbeném opensourcovém softwaru , jako je PostgreSQL, Redis, JMS a Kafka, takže se nezamknete do proprietárních řešení.

Diagram s nadpisem Služby platformy a logy pro služby popsané v tomto článku

Teď se podíváme na některé klíčové služby a funkce Azure – a na to, jak je můžete použít k vytváření škálovatelných aplikací v Javě.

Rozšíření možností pro aplikace v Javě – databáze a zasílání zpráv

Kromě poskytování několika možností pro spouštění kódu v Javě nabízí Azure širokou škálu plně spravovaných služeb pro podporu potřeb vaší databáze– včetně Azure Database for PostgreSQL, Azure Database for MySQL, MongoDB Atlas, Azure Cosmos DB, Azure SQL Database a Azure SQL Managed Instance. Totéž platí pro zasílání zpráv s možnostmi, které zahrnují Azure Service Bus, Azure Event Hubs a Apache Kafka for Confluent Cloud.

Úroveň Azure Service Bus Premium podporuje JMS, programovací model služby zasílání zpráv v Javě. Bez ohledu na to, jestli vaše aplikace běží na virtuálních počítačích, v Kubernetes nebo na plně spravovaných službách PaaS, můžete tyto plně spravované služby pro data a zasílání zpráv rychle zřizovat a používat pomocí opensourcových klientů, sad SDK Azure Java, úvodních aplikací Spring a integrací aplikačních serverů. Všechny poskytují záruky dodržování předpisů, dostupnosti a spolehlivosti, které očekáváte od Microsoftu a Azure. Mnoho vývojářů v Javě a Springu chce pomocí idiomaticických knihoven zjednodušit připojení ke svým preferovaným cloudovým službám. Microsoft udržuje komplexní seznam knihoven, ovladačů a modulů , které umožňují snadnou interakci se službami Azure napříč daty, zasíláním zpráv, mezipamětí, úložištěm, událostmi, adresáři a správou tajných kódů. Další informace najdete v příručce pro vývojáře Azure Spring Cloud.

Diagram se seznamem funkcí Spring Cloud Azure a přidružených služeb Azure

Diagram znázorňující kategorie funkcí a přidružené služby platformy Azure podporované různými knihovnami, ovladači a moduly Spring pro platformu Java

Nulový vztah důvěryhodnosti – Zabezpečená síť

Aplikace v Javě můžete zabezpečit jejich nasazením ve službě Azure Virtual Network – základním stavebním blokem pro vlastní privátní sítě v Azure. Virtuální sítě umožňují mnoha typům prostředků Azure bezpečně komunikovat mezi sebou, s internetem a s místními sítěmi a systémy. Virtuální síť můžete použít k izolaci aplikací a podpoře back-endových služeb od internetu a jejich umístění do privátních sítí. Můžete předpokládat úplnou kontrolu nad příchozím a výstupním přenosem dat pro vaše aplikace a back-endové systémy.

Diagram referenční architektury Azure Spring Apps

Nulový vztah důvěryhodnosti – kompletní zabezpečená komunikace

Implementace zabezpečené komunikace v rámci architektury řešení může být náročná. Mnoho společností ručně obměňuje své certifikáty nebo vytváří vlastní řešení pro automatizaci zřizování a konfigurace. I v takovém případě stále existují rizika exfiltrace dat, jako je neoprávněné kopírování nebo přenos dat.

S Azure můžete zabezpečit komplexní nebo koncové zabezpečení na úrovni přenosu v jakémkoli komunikačním bodě. Můžete také automatizovat zřizování a konfiguraci všech prostředků Azure potřebných k zabezpečení komunikace. Pokud chcete zjistit, jak funguje pro Azure Spring Apps, přečtěte si téma Kompletní zabezpečená komunikace pro aplikace Spring Boot – v nulová důvěra (Zero Trust) prostředí. Tento proces je podobný ostatním výpočetním službám Azure, které můžete použít ke spouštění aplikací v Javě.

Na základě principu "nikdy nedůvěřujte, vždy ověřujte a bez přihlašovacích údajů", nulová důvěra (Zero Trust) pomáhá zabezpečit veškerou komunikaci odstraněním neznámých a nespravovaných certifikátů a tím, že důvěřujete pouze certifikátům sdíleným ověřením identity před udělením přístupu k těmto certifikátům. Můžete použít libovolný typ certifikátu TLS/SSL, včetně certifikátů vydaných certifikační autoritou, rozšířených ověřovacích certifikátů, certifikátů se zástupnými čísly s podporou libovolného počtu poddomén nebo certifikátů podepsaných svým držitelem pro vývojová a testovací prostředí.

Aplikace Java nebo Spring Boot můžou bezpečně načítat certifikáty ze služby Azure Key Vault (popsáno dále). Se službou Azure Key Vault řídíte úložiště a distribuci certifikátů, abyste snížili náhodné úniky informací. Aplikace a služby můžou bezpečně přistupovat k certifikátům pomocí spravovaných identit, řízení přístupu na základě role a principu nejnižších oprávnění. Toto zabezpečené načítání využívá zprostředkovatele azure Key Vault JCA (Java Cryptography Architecture).

Diagram architektury pro zabezpečenou komplexní komunikaci pro aplikace Spring Boot

Nulový vztah důvěryhodnosti – Správa tajných kódů

Mnoho aplikací v Javě se připojuje k podpůrným službám pomocí adres URL a přihlašovacích údajů – informace, které by se v případě zveřejnění mohly použít k získání neoprávněného přístupu k citlivým datům. Vložení těchto informací do samotné aplikace představuje obrovské bezpečnostní riziko z mnoha důvodů, včetně zjišťování prostřednictvím úložiště kódu. Mnoho vývojářů tyto přihlašovací údaje externalizuje pomocí proměnných prostředí, aby je mohl načíst více aplikací, ale riziko samotného kódu se přesune jenom do spouštěcího prostředí.

Diagram s nadpisem nulová důvěra (Zero Trust) – správa tajných kódů pomocí služby Azure Key Vault a shrnutí funkcí popsaných v této části

Azure Key Vault poskytuje lepší, bezpečnější a bezpečnější způsob, jak zabezpečit tajné kódy. Poskytuje úplnou kontrolu nad úložištěm a distribucí tajných kódů aplikací, pomocí řízení přístupu na základě role (RBAC) a principu nejnižšího oprávnění k omezení přístupu. Máte kontrolu nad tajnými kódy aplikace – stačí udělit oprávnění aplikacím, aby je používaly podle potřeby. Při spuštění aplikace se aplikace před udělením přístupu k tajným kódům ověřuje pomocí Microsoft Entra ID a Azure Key Vaultu pomocí Azure RBAC. Azure Key Vault zahrnuje úplné možnosti auditu a má dvě úrovně služeb: Standard, který šifruje pomocí softwarového klíče, a úroveň Premium, která zahrnuje klíče chráněné modulem hardwarového zabezpečení (HSM).

Ověřování a autorizace koncových uživatelů

Většina podnikových aplikací v Javě vyžaduje ověřování a autorizaci uživatelů, které můžete implementovat pomocí Microsoft Entra ID – kompletního řešení správy identit a přístupu s integrovaným zabezpečením. Účty koncových uživatelů můžou být organizační identity nebo sociální identity z Facebooku, Twitteru nebo Gmailu pomocí Microsoft Entra ID a Azure Active Directory B2C. Řešení založená na MICROSOFT Entra ID můžete implementovat pomocí knihovny Microsoft Authentication Library pro Javu nebo Spring Boot Starter pro Microsoft Entra. Můžete také použít libovolného zprostředkovatele identity , například ForgeRock, Auth0, Ping nebo Okta.

Monitorování kompletního monitorování

S Azure můžete monitorovat své aplikace v Javě kompletním způsobem pomocí libovolného nástroje a platformy. Alternativně můžete implementovat plně spravované nativní monitorování , včetně monitorování výkonu aplikací (APM) pomocí služby Application Přehledy, funkce služby Azure Monitor. Poskytuje silnou podporu pro Javu, Spring a architektury, jako jsou Micrometer a Spring Boot, a umožňuje rychle identifikovat a řešit problémy. Mezi funkce patří streamování živých metrik, frekvence požadavků a sledování doby odezvy, trasování událostí a míra externích závislostí – vše, co potřebujete ke sledování dostupnosti, výkonu, spolehlivosti a využití aplikací Java běžících v Azure nebo v místním prostředí.

Kompletní monitorování můžete monitorovat agregací protokolů a metrik v Log Analytics, nástrojem na webu Azure Portal, který se dá použít k úpravě a spouštění dotazů na protokoly a data metrik ve službě Azure Monitor. Můžete napsat dotaz, který vrátí sadu záznamů, a pak je pomocí Log Analytics seřadit, filtrovat a analyzovat. Nebo můžete napsat pokročilejší dotaz, který provede statistickou analýzu a vizualizuje výsledky v grafu, jak může být potřeba k identifikaci konkrétního trendu. Ať už pracujete s výsledky dotazů interaktivně, nebo je používáte s dalšími funkcemi služby Azure Monitor, jako jsou upozornění dotazů protokolu nebo sešity, je Log Analytics vhodným nástrojem pro psaní a testování dotazů.

To znamená, že si uvědomujeme, že zákazníci, kteří přinášejí své aplikace v Javě do Azure, můžou chtít dál používat stejné nástroje APM, které používají k monitorování místních aplikací. Abychom toto využití podpořili, spojili jsme se s New Relicem, AppDynamics, Dynatrace a Elastic a integrovali svá řešení pro monitorování s Aplikace Azure Service a Azure Spring Apps. Agenti monitorování běží souběžně s vaším kódem a instalujeme a udržujeme agenty aktualizované za vás. Když nasadíte do služby Azure Container Apps, Azure Kubernetes Service nebo Virtual Machines, můžete vedle svých aplikací spustit kterýkoli z těchto agentů (včetně New Relic, AppDynamics, Dynatrace, Elastic a Datadog), ale musíte je nainstalovat a spravovat sami. Podobně můžete monitorovat kompletní monitorování agregací protokolů a metrik v Elastic a Splunk.

Diagram s nadpisem Monitorování kompletního používání libovolného nástroje a platformy, ukázkový snímek obrazovky a loga pro nástroje popsané v tomto článku

Uvědomujeme si také, že mnoho zákazníků chce dál používat Grafana k dotazování, vizualizaci, upozorňování a pochopení metrik. Z tohoto důvodu jsme se spojili s Grafana Labs a doručili plně spravovanou službu Grafana, která zákazníkům umožňuje nativně spouštět Grafana v Azure. Služba usnadňuje nasazení zabezpečených a škálovatelných instancí Grafana a jejich připojení k opensourcovým, cloudovým a externím zdrojům dat pro vizualizaci a analýzu. Služba je optimalizovaná pro zdroje dat nativní pro Azure, jako je Azure Monitor a Azure Data Explorer, a zahrnuje integrace APM (Application Performance Monitoring) s výpočetními službami Azure, jako jsou Aplikace Azure Service, Azure Spring Apps, Azure Kubernetes Service, Splunk, Datadog a Azure Virtual Machines.

Zrychlení aplikací v Javě pomocí ukládání do mezipaměti

S růstem úloh pro vaše aplikace v Javě můžete zvýšit výkon pomocí služby Azure Cache for Redis a implementovat vrstvu ukládání do mezipaměti v paměti pro výsledky dotazů, stavy relací a statický obsah. Je to skvělý způsob, jak zlepšit propustnost aplikace a snížit latenci, aniž byste museli měnit architekturu podkladové databáze. Úrovně Azure Cache for Redis Enterprise vyvinuté ve spolupráci s Redisem a plně spravované Microsoftem jsou nejvýkonnější a škálovatelnější možností nasazení pro spouštění Redis v Azure – včetně funkcí, jako je aktivní geografická replikace, správa externích relací a vysokorychlostní vyhledávání a indexování.

Diagram s nadpisem Zrychlit a škálovat aplikace v Javě pomocí Redis Cache a včetně souhrnu funkcí popsaných v této části

Automatické škálování

Všechny "výpočetní" služby Azure pro spouštění aplikací v Javě podporují automatické škálování (automatické škálování), které vám můžou pomoct maximalizovat nákladovou efektivitu a přizpůsobit se měnícím úlohám, aniž byste museli platit za větší kapacitu, než potřebujete. Po povolení můžete mít jistotu, že se automatické škálování postará o základní infrastrukturu a úlohy vaší aplikace.

Diagram s nadpisem

Kapacitu nebo snížení kapacity můžete automaticky škálovat na základě zatížení nebo plánu. V režimu založeném na zatížení (nebo na základě metrik) se vaše aplikace horizontálně škálují na prostředky potřebné ke zpracování zatížení až po vámi nastavené limity. Podobně platí, že když se zatížení sníží, prostředky se horizontálně škálují, nikdy nepřejdou pod vámi nastavené minimum.

V režimu založeném na plánu se vaše aplikace škálují a škálují na základě definovaného plánu a omezení. Režim založený na plánu je užitečný pro úlohy, které se řídí předvídatelným vzorem, a lze je použít k vytvoření směrného plánu pro větší škálování na základě zatížení.

Automatizace z nápadu do produkčního prostředí

Při přesouvání aplikací do cloudu chcete automatizovat vše podle potřeby pro vývoj v Javě v podnikovém měřítku. Je potřeba zvážit automatické škálování pro řešení úloh aplikací, jak je popsáno dříve. Musíte ale také škálovat a automatizovat cloudové prostředí jako celek – ideálně od nápadu po produkční – včetně toho, jak rychle zřizovat nová prostředí pro testování, kontrolu kvality, produkční prostředí, modrá/zelená nasazení, geografické rozšíření atd.

Diagram znázorňující pole pro kategorie Zřizování, Sestavení a Nasazení s přidruženými logy pro nástroje popsané v této části

Azure umožňuje automatizovat z nápadu do produkčního prostředí pomocí široké škály nástrojů a platforem. Na vysoké úrovni je možné tyto kanály automatizace rozdělit do tří kategorií:

  • Zřizovací kanály – Prostředky Azure můžete zřizovat pomocí Terraformu, šablon Azure Resource Manageru (ARM), šablon Bicep nebo Azure CLI podle potřeby k vytváření opakovatelných skriptů pro konzistentně se opakující a rotující prostředí.

  • Kanály sestavení – založené na nástrojích, jako je Maven nebo Gradle, jak je popsáno výše v této dokumentaci.

  • Kanály nasazení – K automatizaci nasazení kódu můžete použít GitHub Actions, Azure Pipelines, Jenkins Pipelines, GitLab Pipelines nebo Azure CLI, včetně modrých/zelených nasazení, která při nasazování aktualizací kódu udržují kritické systémy v produkčním prostředí.

Nadále používat stávající postupy a systémy

Při migraci nebo sestavování a následném škálování aplikací v Javě v Azure můžete využít své stávající investice do sítí, monitorování, automatizace, zprostředkovatelů identit, místních systémů, vývojového a buildového nástroje a knihoven aplikací. Následující tabulka obsahuje několik příkladů:

Kategorie Ekosystémy a služby v Javě
Sítě F5, Palo Alto, Cloudflare, Kontrolní bod, Infoblox
Sledování New Relic, Dynatrace, AppDynamics, Elastic, Splunk
Automation GitHub Actions, Azure Pipelines, Jenkins, GitLab
Zprostředkovatelé identit Microsoft Entra ID, ForgeRock, Auth0, Ping, Okta
Místní systém Databáze (například Oracle DB nebo IBM DB2), zasílání zpráv (například IBM MQ nebo TIBCO EMS), události (například Kafka), adresáře (například Microsoft Entra ID, OpenLDAP nebo IBM ID)
Vývojářské nástroje IntelliJ, Visual Studio Code, Eclipse, Spring Tool Suite, Maven, Gradle

Referenční architektury

Centrum architektury Azure poskytuje pokyny k vytváření řešení v Azure s využitím zavedených vzorů a postupů, včetně toho, jak tyto funkce použít. Tyto referenční architektury jsou založené na tom, co jsme se naučili z zapojení zákazníků, s ohledem na optimalizaci nákladů, efektivitu provozu, efektivitu výkonu, spolehlivost, škálovatelnost, zabezpečení, monitorování, orientační testování a další. Řeší také komponenty návrhu řešení, jako jsou cílové zóny Azure – prostředí pro hostování úloh, které jsou předem zřízené prostřednictvím infrastruktury jako kódu, podle potřeby, aby bylo možné provádět migrace aplikací v Javě a vývoj na zelené louce v podnikovém měřítku.

Tady je například akcelerátor cílové zóny pro Azure Spring Apps, který ukazuje, jak implementovat hvězdicový návrh, ve kterém je služba Azure Spring Apps nasazená v jednom paprsku, který závisí na sdílených službách hostovaných v centru. Tento projekt je sestavený pomocí komponent pro dosažení tenetů v architektuře Microsoft Azure Well-Architected Framework. Pokud chcete prozkoumat implementaci této architektury, podívejte se na úložiště Azure Spring Apps Landing Zone Accelerator na GitHubu. Stejný přístup můžete použít u všech aplikací v Javě nasazených do libovolného cílového umístění Azure Compute, jako je služba Aplikace Azure Service, Azure Container Apps nebo Azure Kubernetes Service. Pokud se navíc díváte na migraci stávajících aplikací v Javě do Azure, máme komplexní sadu průvodců migrací a doporučených strategií.

Diagram s nadpisem Škálování s komplexním zabezpečením, monitorováním a automatizací a logy pro nástroje popsané v tomto článku

Další krok

Volba správných služeb Azure pro vaše aplikace v Javě