Redigera

Dela via


Baslinjearkitektur för Azure Spring Apps

Azure Application Gateway
Azure Key Vault
Azure Spring Apps
Azure Database for MySQL

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

GitHub-logotyp 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:

Diagram som visar en Azure Spring Apps-referensarkitektur för flera regioner.Ladda ned en Visio-fil med den här arkitekturen.

Arbetsflöde

Det här arbetsflödet motsvarar föregående diagram:

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

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

  3. Den interna lastbalanseraren används för att dirigera trafiken till serverdelstjänsterna.

  4. 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:

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:

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:

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.

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:

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:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg