Den här referensarkitekturen beskriver hur du kör Java Spring Boot-arbetsbelastningar i Azure Spring Apps. Designen använder zonredundans för att uppnå hög tillgänglighet. Implementera den här designen för att förhindra att ett program misslyckas om det uppstår ett avbrott i alla datacenter i en zon.
Den här arkitekturen hjälper dig att:
- Öka tillgängligheten för ditt program över en distribution med en zon.
- Öka programmets övergripande motståndskraft och servicenivåmål (SLO).
Den här lösningen presenterar en baslinjestrategi för Azure Spring Apps-distribution. Andra lösningar som bygger på den här arkitekturen finns i Distribuera Azure Spring Apps till flera regioner och Azure Spring Apps integrerat med landningszoner.
Dricks
Se en exempelimplementering som illustrerar några av designvalen i den här arkitekturen. Tänk på den här implementeringen som ditt första steg mot produktion.
Arkitektur
Följande diagram visar arkitekturen för den här metoden:
Ladda ned en Visio-fil med den här arkitekturen.
Arbetsflöde
Det här arbetsflödet motsvarar föregående diagram:
Användaren kommer åt programmet med hjälp av HTTP-värdnamnet för programmet, till exempel
www.contoso.com
. Azure DNS används för att matcha begäran om det här värdnamnet till den offentliga Slutpunkten för Azure Application Gateway.Application Gateway används för att inspektera begäran. Den används också för att vidarebefordra den tillåtna trafiken till IP-adressen för lastbalanseraren som finns i den etablerade Azure Spring Apps-instansen. Application Gateway är integrerad med Azure Web Application Firewall.
Den interna lastbalanseraren används för att dirigera trafiken till serverdelstjänsterna.
Medan begäran bearbetas kommunicerar programmet med andra Azure-tjänster i det virtuella nätverket. Programmet kan till exempel ta emot hemligheter från Azure Key Vault eller lagringstillståndet från databasen.
Komponenter
Följande Azure-tjänster är komponenterna i den här arkitekturen:
Standardversionen av Azure Spring Apps används som värd för ett Java Spring Boot-exempelprogram som implementeras som mikrotjänster.
Standardversionen av Application Gateway används för att hantera trafik till programmen. Den fungerar som en lokal omvänd proxy i den region som programmet kör.
Den här SKU:n har brandväggen för webbaserade program integrerad för att skydda dina webbprogram mot sårbarheter och sårbarheter. Brandväggen för webbaserade program på Application Gateway spårar OWASP-kryphål (Open Web Application Security Project).
Azure DNS används för att lösa begäranden som skickas till programmets värdnamn. Den löser dessa begäranden till den offentliga Slutpunkten för Application Gateway. Privata Azure DNS-zoner används för att matcha begäranden till de privata slutpunkter som har åtkomst till de namngivna Azure Private Link-resurserna .
Azure Database for MySQL används för att lagra tillstånd i en relationsdatabas för serverdelen.
Key Vault används för att lagra programhemligheter och certifikat. De mikrotjänster som körs i Azure Spring Apps använder programhemligheterna. Azure Spring Apps och Application Gateway använder certifikaten för bevarande av värdnamn.
Alternativ
Azure Database for MySQL är inte det enda alternativet för en databas. Du kan även använda:
Redundans
Skapa redundans i din arbetsbelastning för att minimera enskilda felpunkter. I den här arkitekturen replikerar du komponenter mellan zoner i en region. I din arkitektur ser du till att du använder tillgänglighetszoner för alla komponenter i konfigurationen.
Azure-tjänster stöds inte i alla regioner och inte i alla regioners stödzoner. Innan du väljer en region kontrollerar du dess regionala stöd och zonstöd.
Zonredundanta tjänster replikerar eller distribuerar resurser automatiskt mellan zoner. Tjänster som alltid är tillgängliga är alltid tillgängliga i alla Azure-geografiska områden och är motståndskraftiga mot zonomfattande och regionomfattande avbrott.
I följande tabell visas återhämtningstyperna för tjänsterna i den här arkitekturen:
Tjänst | Motståndskraft |
---|---|
Azure DNS | Alltid tillgänglig |
Application Gateway | Zonredundant |
Azure Spring Apps | Zonredundant |
Azure Database for MySQL | Zonredundant |
Key Vault | Zonredundant |
Azure Virtual Network | Zonredundant |
Privata Slutpunkter i Azure | Zonredundant |
Azure Spring Apps stöder zonredundans. Med zonredundans sprids all underliggande infrastruktur för tjänsten över flera tillgänglighetszoner, vilket ger högre tillgänglighet för programmet. Program skalas vågrätt utan några kodändringar. Ett högpresterande nätverk ansluter Azure-tillgänglighetszoner. Anslutningen har en svarstid för tur och retur på mindre än 2 millisekunder (ms). Du behöver inte förlita dig på asynkron replikering för dataarbetsbelastningar, vilket ofta innebär designutmaningar.
Flera tillgänglighetszoner har konfigurerats för Application Gateway, inklusive den offentliga IP-adress som Application Gateway använder. Offentliga IP-adresser med en standard-SKU stöder tillgänglighetszoner.
Den här arkitekturen använder Azure Database for MySQL med distributionsalternativet Flexibel server för att stödja hög tillgänglighet med automatisk redundans. Beroende på dina svarstidskrav väljer du zonredundant hög tillgänglighet eller hög tillgänglighet i samma zon. Med en konfiguration med hög tillgänglighet etablerar och hanterar alternativet Flexibel server automatiskt en väntelägesreplik. Om det uppstår ett avbrott går inte incheckade data förlorade.
Key Vault är automatiskt zonredundant i alla regioner där tillgänglighetszoner är tillgängliga. Key Vault-instansen som används i den här arkitekturen distribueras för att lagra hemligheter för serverdelstjänster.
Skalbarhet
Skalbarhet anger arbetsbelastningens förmåga att effektivt uppfylla de krav som användarna ställer på den. Metoden för flera zoner är bättre för skalbarhet än en distribution med en zon eftersom den sprider belastningen över tillgänglighetszoner.
Den här arkitekturen har flera komponenter som kan skalas automatiskt baserat på mått:
Application Gateway stöder automatisk skalning. Mer information finns i Skala Application Gateway v2 och Brandvägg för webbprogram v2.
Azure Spring Apps stöder autoskalning. Mer information finns i Konfigurera autoskalning för program.
Beroende på databaskonfigurationen kan det uppstå extra svarstider när du behöver synkronisera data mellan zoner.
Nätverkssäkerhet
Skydda ditt program från obehörig åtkomst från Internet, system i privata nätverk, andra Azure-tjänster och nära kopplade beroenden.
Virtuellt nätverk är den grundläggande byggstenen för ett privat nätverk i Azure. Den här arkitekturen använder ett virtuellt nätverk för distributionens region. Placera komponenter i undernät för att skapa ytterligare isolering. Azure Spring Apps kräver ett dedikerat undernät för tjänstkörningen och ett separat undernät för Java Spring Boot-program.
Skydda dina virtuella nätverk med Azure DDoS Protection. Kombinera DDoS-skydd (Distribuerad överbelastning) med metodtips för programdesign för att ge förbättrade åtgärder för att skydda mot DDoS-attacker.
Arkitekturdesignen innehåller flera PaaS-lösningar (Plattform som en tjänst) som hjälper dig att bearbeta en användarbegäran. Placera strikta nätverkskontroller på dessa tjänster för att se till att programmet inte påverkas.
Privat anslutning
Använd privata slutpunkter eller nätverksintegrering för att tillhandahålla kommunikation från Azure Spring Apps till stödtjänster, till exempel Key Vault och Azure Database for MySQL.
Använd privata slutpunkter för att styra åtkomsten. Nätverksgränssnitten använder privata IP-adresser för att överföra tjänsterna till det virtuella nätverket. Den här arkitekturen använder Azure-tjänster som automatiskt konfigurerar de privata slutpunkterna.
Distribuera Azure Spring Apps till nätverket via inmatningsprocessen för virtuella nätverk. Programmet nås genom att nå den privata IP-adressen.
Databasen följer en liknande modell. Distributionsläget flexibel server i Azure Database for MySQL stöder integrering av virtuella nätverk via ett dedikerat undernät.
Andra tjänster, till exempel Key Vault, är anslutna till det virtuella nätverket via Private Link. För Private Link måste du aktivera en privat slutpunkt för att inaktivera åtkomst till det offentliga nätverket. Mer information finns i Integrera Key Vault med Private Link.
Privata slutpunkter kräver inte ett dedikerat undernät, men det är bra att placera dem i ett separat undernät. Privata IP-adresser till de privata slutpunkterna tilldelas från det undernätet.
Privata slutpunkter och nätverksintegrerade anslutningar använder en privat Azure DNS-zon.
Kontroller i trafikflödet
Med den här arkitekturen tillåts inkommande begäranden endast via den offentliga slutpunkt som exponeras av Application Gateway. Trafiken måste fortfarande inspekteras för att blockera sårbarheter och sårbarheter. Brandvägg för webbprogram på Application Gateway spårar OWASP-sårbarheter. Inkommande trafik inspekteras baserat på de konfigurerade reglerna med en åtgärd att följa.
Azure Spring Apps-instansen har en intern lastbalanserare som dirigerar och distribuerar trafik till serverdelstjänsterna. Lastbalanseraren är konfigurerad för att endast acceptera trafik från Application Gateway.
Programmet kan behöva ansluta till andra slutpunkter via det offentliga Internet. Om du vill begränsa flödet bör du överväga att placera Azure Firewall på utgående sökväg.
Konfiguration av omvänd proxy
Den här lösningen använder Application Gateway som omvänd proxy. Men du kan använda olika omvända proxyservrar framför Azure Spring Apps. Du kan kombinera Application Gateway med Azure Front Door, eller så kan du använda Azure Front Door i stället för Application Gateway.
Information om omvända proxyscenarier, hur du konfigurerar dem och deras säkerhetsöverväganden finns i Exponera Azure Spring Apps via en omvänd proxy.
Identitets- och åtkomsthantering
Förutom att använda nätverkskontroller kan du stärka säkerhetsstatusen genom att använda identitet som perimeter.
Programmet bör autentisera sig när det ansluter till serverdelstjänsterna, till exempel om programmet hämtar hemligheter från Key Vault. I programmet är den rekommenderade metoden att aktivera Microsoft Entra-hanterade identiteter för Azure-resurser. Den här konfigurationsmetoden tilldelar en identitet till programmet så att det kan hämta Microsoft Entra-ID-token , vilket minskar kostnaderna för att hantera autentiseringsuppgifter.
Den här arkitekturen använder systemtilldelade hanterade identiteter för flera interaktioner.
Serverdelstjänsterna bör tillåta åtkomst till tjänstens huvudnamn som har allokerats till den hanterade identiteten. Tjänsten bör definiera minimala åtkomstprinciper för vissa åtgärder. I den här arkitekturen används Key Vault för att ge programmet åtkomst till hemligheter, certifikat och nycklar.
Hemlighetshantering
Den här arkitekturen lagrar programhemligheter och certifikat i ett enda nyckelvalv. Programhemligheter och certifikat för bevarande av värdnamn är olika problem, så du kanske vill lagra dessa objekt i separata nyckelvalv. Den här alternativa metoden lägger till ytterligare ett nyckelvalv i din arkitektur.
Övervakning
Azure Monitor är en övervakningslösning för att samla in, analysera och svara på övervakningsdata från molnmiljöer och lokala miljöer.
Lägg till instrumentation i ditt program för att generera loggar och mått på kodnivå. Överväg att aktivera distribuerad spårning för att tillhandahålla observerbarhet mellan tjänster i Azure Spring Apps-instansen. Använd ett APM-verktyg (Application Performance Management) för att samla in loggar och måttdata. Application Insights Java-agenten för Azure Monitor är ett bra val för APM-verktyget.
Använd plattformsdiagnostik för att hämta loggar och mått från alla Azure-tjänster, till exempel Azure Database for MySQL. Integrera alla data med Azure Monitor-loggar för att ge insikter från slutpunkt till slutpunkt i ditt program och plattformstjänster.
Azure Log Analytics-arbetsytan är övervakningsdatamottagaren som samlar in loggar och mått från Azure-resurser och Application Insights. Den här loggningslösningen ger synlighet, vilket hjälper automatiseringsprocesser att skala komponenter i realtid. Analys av loggdata kan också avslöja ineffektivitet i programkod som du kan åtgärda för att förbättra kostnader och prestanda.
Mer information om Spring App-specifik övervakning finns i Övervaka program från slutpunkt till slutpunkt och Övervaka med Dynatrace Java OneAgent.
Automatiserad distribution
Automatisera distributionen av infrastruktur och programkod så mycket som möjligt.
Automatisering av infrastrukturdistributioner garanterar att infrastrukturkonfigurationen är identisk, vilket bidrar till att undvika konfigurationsavvikelser, eventuellt mellan miljöer. Du kan också använda infrastrukturautomatisering för att testa redundansåtgärder.
Du kan använda en blågrön eller kanariebaserad distributionsstrategi för dina program.
Att tänka på
Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.
Följande överväganden ger vägledning för att implementera grundpelarna i Azure Well-Architected Framework i kontexten för den här arkitekturen.
Tillförlitlighet
Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i Översikt över tillförlitlighetspelare.
Implementera följande förslag för att skapa ett mer tillförlitligt program:
Använd en blågrön distribution för att göra det enkelt att återställa till ett tidigare felfritt tillstånd om kritiska problem uppstår.
Konfigurera autoskalning för program som hjälper ditt program att prestera bättre när efterfrågan ändras.
Aktivera en respitfri avstängning av Spring Boot-webben och konfigurera en graciös avslutning av Azure Spring Apps för att med tvång stoppa processer som körs i appinstansen.
Säkerhet
Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.
Implementera följande förslag för att skapa ett säkrare program:
Använd mogna lösningar för identitets- och åtkomsthantering (IAM), till exempel Microsoft Entra-ID. Aktivera multifaktorautentisering. Mer information finns i:
Undvik att använda lösenord när det är möjligt. Mer information finns i:
Rekommendationer om hur du skyddar din Azure Spring-app finns i Azures säkerhetsbaslinje för Azure Spring Apps.
Kostnadsoptimering
Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.
För den här arkitekturen kan du förvänta dig högre kostnader eftersom du distribuerar komponenter i flera zoner. I stället för en instans av Azure Spring Apps kör du två eller till och med tre instanser. Men det finns ingen extra kostnad för att aktivera zonredundans för tjänsten. Mer information finns i Prissättning för Azure Spring Apps.
Överväg följande implementeringsalternativ för att hantera kostnader:
Du kan distribuera olika program och programtyper till en enda instans av Azure Spring Apps. När du distribuerar flera program delas kostnaden för den underliggande infrastrukturen mellan program.
Azure Spring Apps stöder automatisk skalning av program som utlöses av mått eller scheman, vilket kan förbättra användningen och kostnadseffektiviteten.
Du kan använda Application Insights i Azure Monitor för att sänka driftskostnaderna. Kontinuerlig övervakning kan hjälpa dig att lösa problem snabbare och förbättra kostnader och prestanda.
Välj den bästa prisnivån baserat på dina krav:
Använd autoskalning för program för att skala upp och ned baserat på efterfrågan.
En uppskattad kostnad för tjänster för den här arkitekturen finns i priskalkylatorn för Azure. Den här uppskattningen använder rimliga standardvärden för ett småskaligt program. Du kan uppdatera uppskattningen baserat på de förväntade dataflödesvärdena för ditt program.
Driftsäkerhet
Driftskvalitet omfattar de driftsprocesser som distribuerar ett program och håller det igång i produktion. Mer information finns i Översikt över grundpelare för driftskvalitet.
Utöver den övervakningsvägledning som beskrevs tidigare implementerar du följande förslag som hjälper dig att distribuera och övervaka ditt program.
Automatisera programdistributioner med hjälp av Azure DevOps eller GitHub Actions.
Övervaka Azure Spring Apps-appar med hjälp av loggar, mått och spårning.
Övervaka mått på Azure Database for PostgreSQL med hjälp av flexibel server.
Använd Azure Managed Grafana för att visa och analysera program- och infrastrukturtelemetridata i realtid.
Prestandaeffektivitet
Prestandaeffektivitet handlar om att effektivt skala arbetsbelastningen baserat på användarnas behov. Mer information finns i Översikt över grundpelare för prestandaeffektivitet.
Implementera följande förslag för att skapa ett effektivare program:
Skala appar manuellt eller automatiskt.
Distribuera det här scenariot
Om du vill distribuera den här arkitekturen följer du de stegvisa anvisningarna i Azure Spring Apps-referensarkitektur för flera zoner. Distributionen använder Terraform-mallar.
Deltagare
Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.
Huvudförfattare:
- Gitte Vermeiren | FastTrack för Azure Engineer
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- Snabbstart: Distribuera din första webbapp till Azure Spring Apps
- Vad är hanterade identiteter för Azure-resurser?