Azure Well-Architected Framework-perspektiv på Azure App Service (Web Apps)
Azure App Service är en plattform som en tjänst (PaaS) som tillhandahåller en fullständigt hanterad värdmiljö för att skapa, distribuera och skala webbprogram. Som En PaaS-lösning abstraherar App Service den underliggande infrastrukturen så att du kan fokusera på din programutveckling. App Service (Web App) kör dina appar i kontexten för en App Service-plan som avgör vilka resurser, operativsystem, region och prismodell (Sku) som används som värd för din app.
Den här artikeln förutsätter att du som arkitekt har granskat beslutsträd för beräkning och valt App Service som beräkning för din arbetsbelastning. Vägledningen i den här artikeln innehåller arkitektoniska rekommendationer som knyts till principerna i Azure Well-Architected Framework-pelarna.
Viktig
Använda den här guiden
Varje avsnitt innehåller en checklista för design som belyser arkitekturöverväganden och strategier för Azure App Service. rekommendationer ger specifik vägledning för att genomföra dessa strategier.
Rekommendationerna representerar inte en fullständig lista över alla konfigurationer som är tillgängliga för funktionen Web Apps i Azure App Service och deras beroenden. I stället listar de de viktigaste rekommendationerna som mappats till designperspektiven. Använd rekommendationerna för att skapa ditt konceptbevis eller optimera dina befintliga miljöer.
Grundläggande arkitektur som visar de viktigaste rekommendationerna: App Service-baslinjearkitektur.
Teknikomfång
Den här granskningen fokuserar på de relaterade besluten för följande Azure-resurser:
- App Service-planer
- Webbappar
Andra Azure-erbjudanden är associerade med App Service, till exempel Azure Functions, Azure Logic Apps och App Service Environment. Dessa erbjudanden ligger utanför omfånget för den här artikeln. App Service Environment refereras ibland för att förtydliga funktioner eller alternativ för de grundläggande App Service-erbjudandena.
Tillförlitlighet
Syftet med grundpelarna för tillförlitlighet är att tillhandahålla fortsatt funktionalitet genom att bygga upp tillräckligt med motståndskraft och möjlighet att snabbt återhämta sig från fel.
Designprinciperna för tillförlitlighet tillhandahålla en övergripande designstrategi som tillämpas för enskilda komponenter, systemflöden och systemet som helhet.
Checklista för design
Börja din designstrategi baserad på checklistan för designgranskning och tillförlitlighet. Fastställ dess relevans för dina affärskrav samtidigt som du tänker på nivåerna och funktionerna i App Service och dess beroenden. Utöka strategin till att omfatta fler metoder efter behov.
Prioritera användarflöden: Alla flöden är inte lika kritiska. Identifiera de kritiska sökvägarna i ditt program och tilldela prioriteter till varje flöde för att vägleda dina designbeslut. Design av användarflöde kan påverka vilka tjänstnivåer och antal instanser som du väljer för en App Service-plan och konfiguration.
Ditt program kan till exempel innehålla klientdels- och serverdelsnivåer som kommunicerar via en meddelandekö. Du kan välja att segmentera nivåerna i flera webbappar för att möjliggöra oberoende skalning, livscykelhantering och underhåll. Att placera ett stort program i en enda plan kan leda till minnes- eller CPU-problem och påverka tillförlitligheten.
Du kan behöva fler instanser på klientdelen för optimala prestanda på användargränssnittssidan. Serverdelen kanske dock inte kräver samma antal instanser.
Förutse potentiella fel: Planera strategier för att minska risken för fel. I följande tabell visas exempel på analys av felläge.
Misslyckande Förmildrande omständighet Fel vid underliggande eller abstrakta App Service-komponenter Ha komponentredundans i instanser och beroenden. Övervaka hälsotillståndet för instanser, nätverksprestanda och lagringsprestanda. Fel vid externa beroenden Använd designmönster såsom Försöksmönstret och Kretsbrytarmönstret. Övervaka de externa beroendena och ange lämpliga tidsgränser. Felaktighet på grund av att trafiken dirigeras till instanser med feltillstånd Bevaka instansens hälsa. Överväg svarstiderna och undvik att skicka begäranden till instanser som har problem. Mer information finns i Analys av felläge för Azure-program.
Skapa redundans: Skapa redundans i programmet och stödja infrastrukturen. Sprid instanser mellan tillgänglighetszoner för att förbättra feltoleransen. Trafiken dirigeras till andra zoner om en zon misslyckas. Distribuera ditt program i flera regioner för att säkerställa att din app förblir tillgänglig, även om en hel region upplever ett avbrott.
Skapa liknande redundansnivåer i beroende tjänster. Till exempel binder programinstanser till bloblagring. Överväg att konfigurera det associerade lagringskontot med zonredundant lagring (ZRS) om ett program använder en zonredundant distribution.
Använd flera instanser: Att köra appen på endast en instans är en omedelbar enskild felpunkt. Allokera flera instanser till din app för att säkerställa hög tillgänglighet. Om en instans misslyckas kan andra instanser fortfarande hantera inkommande begäranden. Tänk på att din appkod ska kunna hantera flera instanser utan synkroniseringsproblem när du läser från eller skriver till datakällor.
Ha redundans i nätverkskomponenter. Använd till exempel zonredundanta IP-adresser och lastbalanserare.
Ha en tillförlitlig skalningsstrategi: Oväntad belastning på ett program kan göra den otillförlitlig. Överväg rätt skalningsmetod baserat på dina arbetsbelastningsegenskaper. Med horisontell skalning (utskalning) kan du lägga till fler instanser för att distribuera belastningen, medan vertikal skalning (uppskalning) innebär att du ökar kapaciteten för en befintlig instans (CPU, minne). Var försiktig med överallokering, då onödiga instanser ökar kostnaderna utan mätbara prestandafördelar.
Ibland kan du skala upp för att hantera belastningen. Men om belastningen fortsätter att öka skalar du ut till nya instanser. Föredrar automatisk eller automatisk skalning framför manuella metoder. Underhåll alltid en buffert med extra kapacitet under skalningsåtgärder för att förhindra prestandaförsämring[Välj skalningsalternativ för App Service](Automatisk skalning i Azure App Service)
Den App Service-plannivån som du väljer påverkar skalningen när det gäller antalet instanser och beräkningsenheterna.
Se till att appinitieringen är korrekt så att nya instanser värms upp snabbt och kan ta emot begäranden.
Sträva efter tillståndslösa program när det är möjligt. Att tillförlitligt skala upp systemet med nya instanser kan öka komplexiteten. Överväg ett externt datalager som du kan skala oberoende av om du behöver lagra programtillstånd. Lagring av sessionstillstånd i minnet kan leda till att sessionstillståndet förloras när det uppstår problem med programmet eller App Service. Det begränsar också möjligheten att sprida belastningen över andra instanser.
Testa regelbundet reglerna för automatisk skalning. Simulera belastningsscenarier för att verifiera att din app skalar som förväntat. Du bör logga skalningshändelser så att du kan felsöka problem som kan uppstå och optimera din skalningsstrategi över tid.
App Service har en begränsning av antalet instanser i en plan, vilket kan påverka skalningstillförlitligheten. En strategi är att använda identiska distributionsstämplar, där varje instans av App Service-planer körs med sin egen slutpunkt. Det är viktigt att du frontar alla stämplar med en extern lastbalanserare för att distribuera trafik mellan dem. Använd Azure Application Gateway för distributioner i en zon och Azure Front Door för distributioner med flera regioner. Den här metoden är idealisk för verksamhetskritiska program där tillförlitlighet är avgörande. Mer information finns i Verksamhetskritisk baslinje med App Service.
Planera återställningsbarheten: Redundans är avgörande för affärskontinuitet. Växla över till en annan instans om en instans inte kan nås. Utforska funktioner för automatisk återställning i App Service, till exempel automatisk reparation av instanser.
Implementera designmönster för att hantera graciös försämring för både tillfälliga fel, till exempel problem med nätverksanslutningar och storskaliga händelser som regionala avbrott. Tänk på följande designmönster:
Bulkhead-mönstret segmenterar din applikation i isolerade grupper för att förhindra att ett fel påverkar hela systemet.
Mönstret Queue-Based belastningsutjämning köar arbetsobjekt som fungerar som en buffert för att jämna ut trafiktoppar.
Mönstret Försök igen hanterar tillfälliga fel på grund av nätverksfel, borttagna databasanslutningar eller upptagna tjänster.
Kretsbrytarmönstret hindrar ett program från att upprepade gånger försöka utföra en åtgärd som sannolikt kommer att misslyckas.
Du kan använda WebJobs för att köra bakgrundsaktiviteter i webbappen. Om du vill köra dessa uppgifter på ett tillförlitligt sätt kontrollerar du att appen som är värd för ditt jobb körs kontinuerligt enligt ett schema eller baserat på händelsedrivna utlösare.
Mer information finns i tillförlitlighetsmönster.
Utför tillförlitlighetstestning: Utför belastningstestning för att utvärdera programmets tillförlitlighet och prestanda under belastning. Testplaner bör innehålla scenarier som validerar dina automatiserade återställningsåtgärder.
Använd felinmatning för att avsiktligt introducera fel och validera dina självåterställnings- och självbevarande mekanismer. Utforska felbiblioteket som tillhandahålls av Azure Chaos Studio.
App Service tillämpar resursgränser för värdbaserade appar. App Service-planen fastställer dessa gränser. Kontrollera att testerna bekräftar att appen körs inom dessa resursgränser. Mer information finns i Azure-prenumerations- och tjänstgränser, kvoter och begränsningar.
Använd funktionen Hälsokontroll för att identifiera arbetare som inte svarar: App Service har inbyggda funktioner som regelbundet pingar en specifik sökväg för webbappen. Plattformen pingar den här sökvägen för att avgöra om programmet är felfritt och svarar på begäranden. När din webbplats skalas ut till flera instanser utesluter App Service eventuella felaktiga instanser från att hantera begäranden, vilket förbättrar den övergripande tillgängligheten. Appens sökväg för hälsokontroll bör avsöka viktiga komponenter i ditt program, till exempel din databas, cache eller meddelandetjänst. Detta säkerställer att statusen som returneras av hälsokontrollen är en korrekt bild av applikationens övergripande hälsa. Ange sökväg för hälsokontroll
Använd funktionen Återställ automatiskt: Ibland kan programmet uppleva oväntade beteenden som kan lösas genom en enkel omstart. Med funktionerna för automatisk läkning kan du definiera ett "villkor" som utlöser Automatisk läkning och den "åtgärd" som Auto-Heal initierar när villkoret uppfylls. Diagnostikverktyg och Auto-Heal-funktion i App Service
App Service Resiliency Score Report: Om du vill granska skräddarsydda rekommendationer för bästa praxis kan du läsa Resiliency Score Report.App Service Resiliency Score Report
Rekommendationer
Rekommendation | Fördel |
---|---|
(App Service) Välj Premium v3-nivån för en App Service-plan för produktionsarbetsbelastningar. Ange maximalt och minsta antal arbetare enligt din kapacitetsplanering. Mer information finns i översikten över App Service-plan. |
En Premium V3 App Service-plan erbjuder avancerade skalningsfunktioner och säkerställer redundans om fel inträffar. |
(App Service) Aktivera zonredundans. Överväg att etablera fler än tre instanser för att förbättra feltoleransen. Kontrollera regionalt stöd för zonredundans eftersom inte alla regioner erbjuder den här funktionen. |
Ditt program kan motstå fel i en enda zon när flera instanser är spridda över zoner. Trafiken övergår automatiskt till sunda instanser i andra zoner och upprätthåller tillämpningens tillförlitlighet om en zon inte är tillgänglig. |
(Webbapp) Överväg att inaktivera ARR-affinitetsfunktionen (Application Request Routing). ARR-tillhörighet skapar klibbiga sessioner som omdirigerar användare till den nod som hanterade deras tidigare begäranden. | Inkommande begäranden fördelas jämnt över alla tillgängliga noder när du inaktiverar ARR-tillhörighet. Jämnt distribuerade begäranden hindrar trafik från att överbelasta en enskild nod. Begäranden kan omdirigeras sömlöst till andra felfria noder om en nod inte är tillgänglig. Undvik sessionstillhörighet för att säkerställa att App Service-instansen förblir tillståndslös. En tillståndslös App Service minskar komplexiteten och säkerställer konsekvent beteende mellan noder. Ta bort klibbiga sessioner så att App Service kan lägga till eller ta bort instanser för att skala vågrätt. |
(Webbapp) Definiera regler för automatisk återställning baserat på antal förfrågningar, långsamma begäranden, minnesgränser och andra indikatorer som ingår i din prestandabaslinje. Tänk på den här konfigurationen som en del av din skalningsstrategi. | Regler för automatisk återställning hjälper ditt program att återställas automatiskt från oväntade problem. De konfigurerade reglerna utlöser återställningsåtgärder när tröskelvärden överskrids. Automatisk återställning möjliggör automatiskt proaktivt underhåll. |
(Webbapp) Aktivera funktionen för hälsokontroll och ange en sökväg som svarar på begäranden om hälsokontroll. | Hälsokontroller kan identifiera problem tidigt. Sedan kan systemet automatiskt vidta korrigerande åtgärder när en hälsokontrollbegäran misslyckas. Lastbalanseraren dirigerar trafik bort från ohälsosamma exemplar, vilket leder användarna till hälsosamma noder. |
Säkerhet
Syftet med säkerhetspelare är att tillhandahålla konfidentialitet, integritet och tillgänglighet garantier för arbetsbelastningen.
Designprinciperna för Security tillhandahåller en övergripande designstrategi för att uppnå dessa mål genom att tillämpa tillvägagångssätt för den tekniska designen kring värdtjänstlösningar på App Service.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för Säkerhet och identifiera sårbarheter och kontroller för att förbättra säkerhetsstatusen. Utöka strategin till att omfatta fler metoder efter behov.
Granska säkerhetsbaslinjer: Om du vill förbättra säkerhetsstatusen för ditt program som finns i en App Service-plan läser du säkerhetsbaslinje för App Service.
Använd den senaste körningen och biblioteken: Testa programversionerna noggrant innan du uppdaterar för att fånga upp problem tidigt och säkerställa en smidig övergång till den nya versionen. App Service stöder supportprincip för språkkörning för uppdatering av befintliga staplar och tillbakadragna supportstackar.
Skapa segmentering via isoleringsgränser för att innehålla intrång: Tillämpa identitetssegmentering. Implementera till exempel rollbaserad åtkomstkontroll (RBAC) för att tilldela specifika behörigheter baserat på roller. Följ principen om lägsta behörighet för att begränsa åtkomsträttigheterna till endast det som är nödvändigt. Skapa även segmentering på nätverksnivå. Mata in App Service-appar i ett virtuellt Azure-nätverk för isolering och definiera nätverkssäkerhetsgrupper (NSG:er) för att filtrera trafik.
App Service-planer erbjuder nivån App Service Environment som ger en hög grad av isolering. Med App Service Environment får du dedikerad beräkning och nätverk.
Tillämpa åtkomstkontroller på identiteter: Begränsa både inkommande åtkomst till webbappen och utgående åtkomst från webbappen till andra resurser. Den här konfigurationen tillämpar åtkomstkontroller på identiteter och hjälper till att upprätthålla arbetsbelastningens övergripande säkerhetsstatus.
Använd Microsoft Entra-ID för alla autentiserings- och auktoriseringsbehov. Använd inbyggda roller, till exempel en webbplansdeltagare, webbplatsdeltagareoch en allmän deltagare, läsare och ägare.
Använd nätverkssäkerhetskontroller: Integrera din App Service med ett virtuellt nätverk (VNet) för att styra utgående trafik. Använd privata slutpunkter för att styra inkommande trafik och för att begränsa åtkomsten till din App Service inifrån ditt virtuella nätverk och inaktivera offentlig Internetåtkomst. Skydda ditt nätverk, kontrollera inkommande och utgående trafik
Distribuera en brandvägg för webbprogram (WAF) för att skydda mot vanliga säkerhetsrisker. Både Application Gateway och Azure Front Door har integrerade WAF-funktioner.
Konfigurera omvända proxyregler och nätverksinställningar på rätt sätt för att uppnå önskad nivå av säkerhet och kontroll. Lägg till exempel till NSG-regler i det privata slutpunktsundernätet för att endast acceptera trafik från den omvända proxyn.
Utgående trafik från programmet till andra PaaS-tjänster ska vara över privata slutpunkter. Överväg att placera en brandväggskomponent för att begränsa utgående trafik till det offentliga Internet. Båda metoderna förhindrar dataexfiltrering.
För en omfattande översikt, se App Service-nätverksfunktioner.
Kryptera data: Skydda data under överföring med TLS (End-to-End Transport Layer Security). Använd dina kundhanterade nycklar för fullständig kryptering av vilande data. För mer information, se Kryptering av data i vila med hjälp av kundhanterade nycklar.
Använd inte äldre protokoll som TLS 1.0 och 1.1. Se till att alla webbappar endast använder HTTPS och framtvingar TLS 1.2 eller senare. Standardvärdet för lägsta TLS-version är 1.2. Mer information finns i App Service TLS-översikt.
Alla instanser av din App Service har ett standarddomännamn. Använd en anpassad domän och skydda domänen med certifikat.
TLS-kryptering från slutpunkt till slutpunkt: TLS-kryptering från slutpunkt till slutpunkt är tillgängligt i Premium App Service-planer. Den här funktionen krypterar trafiken under hela transaktionen, vilket minimerar risken för trafikavlyssning.
Minska attackytan: Ta bort standardkonfigurationer som du inte behöver. Du kan till exempel inaktivera fjärrfelsökning, lokal autentisering för SCM-platser (Source Control Manager) och grundläggande autentisering. Inaktivera oskyddade protokoll som HTTP och File Transfer Protocol (FTP). Tillämpa konfigurationer genom Azure-principer. Mer information finns i Azure-principer.
Implementera restriktiva CORS-principer (cross-origin resource sharing): Använd restriktiva CORS-principer i din webbapp för att endast acceptera begäranden från godkända domäner, huvudrader och andra kriterier. Tillämpa CORS-principer med inbyggda Azure-principdefinitioner.
Använd hanterade identiteter: Aktivera hanterade identiteter för din App Service för säker åtkomst till andra Azure-tjänster utan att behöva hantera autentiseringsuppgifter. Läs mer om hanterade identiteter.
Skydda programhemligheter: Du måste hantera känslig information, till exempel API-nycklar eller autentiseringstoken. I stället för att hårdkoda dessa hemligheter direkt i programkoden eller konfigurationsfilerna kan du använda Azure Key Vault-referenser i appinställningar. När programmet startar hämtar App Service automatiskt de hemliga värdena från Key Vault med hjälp av appens hanterade identitet.
Aktivera resursloggar för ditt program: Aktivera resursloggar för ditt program för att skapa omfattande aktivitetsloggar som ger värdefulla data under undersökningar som följer på säkerhetsincidenter. Mer information finns i vägledning för loggövervakning.
Överväg att logga som en del av hotmodelleringsprocessen när du utvärderar hot.
Rekommendationer
Rekommendation | Fördel |
---|---|
(Webbapp) Tilldela hanterade identiteter till webbappen. Om du vill behålla isoleringsgränser ska du inte dela eller återanvända identiteter mellan program. Kontrollera att du ansluter säkert till ditt containerregister om du använder containrar för din distribution. |
Programmet hämtar hemligheter från Key Vault för att autentisera utgående kommunikation från programmet. Azure hanterar identiteten och kräver inte att du etablerar eller roterar några hemligheter. Du har olika identiteter för olika nivåer av kontroll. Distinkta identiteter gör det enkelt att återkalla om en identitet komprometteras. |
(Webbapp) Konfigurera anpassade domäner för applikationer. Inaktivera HTTP och acceptera endast HTTPS-begäranden. |
Anpassade domäner möjliggör säker kommunikation via HTTPS med hjälp av TLS-protokollet (Transport Layer Security), vilket säkerställer skyddet av känsliga data och skapar användarförtroende. |
(Webbapp) utvärderar om inbyggd App Service-autentisering är rätt mekanism för att autentisera användare som har åtkomst till ditt program. Inbyggd App Service-autentisering integreras med Microsoft Entra-ID. Den här funktionen hanterar tokenverifiering och hantering av användaridentiteter mellan flera inloggningsleverantörer och stöder OpenID Connect. Med den här funktionen har du inte auktorisering på detaljerad nivå och du har ingen mekanism för att testa autentisering. | När du använder den här funktionen behöver du inte använda autentiseringsbibliotek i programkod, vilket minskar komplexiteten. Användaren autentiseras redan när en begäran når programmet. |
(Webbapp) Konfigurera programmet för integrering av virtuella nätverk. Använd privata slutpunkter för App Service-program. Blockera all offentlig trafik. Dirigera dragningen av containerbilden via det virtuella nätverket med integration. All utgående trafik från programmet passerar genom det virtuella nätverket. |
Få säkerhetsfördelarna med att använda ett virtuellt Azure-nätverk. Programmet kan till exempel komma åt resurser i nätverket på ett säkert sätt. Lägg till en privat slutpunkt för att skydda ditt program. Privata slutpunkter begränsar direkt exponering för det offentliga nätverket och tillåter kontrollerad åtkomst via omvänd proxy. |
(Webbapp) Så här implementerar du härdning: - Inaktivera grundläggande autentisering som använder ett användarnamn och lösenord till förmån för Microsoft Entra ID-baserad autentisering. – Inaktivera fjärrfelsökning så att inkommande portar inte öppnas. – Aktivera CORS-principer för att strama åt inkommande begäranden. – Inaktivera protokoll, till exempel FTP-. |
Vi rekommenderar inte grundläggande autentisering som en säker distributionsmetod. Microsoft Entra ID använder OAuth 2.0-tokenbaserad autentisering, vilket ger många fördelar och förbättringar som hanterar de begränsningar som är associerade med grundläggande autentisering. Principer begränsar åtkomsten till programresurser, tillåter endast begäranden från specifika domäner och säkra begäranden mellan regioner. |
(Webbapp) Använd alltid Key Vault-referenser som appinställningar. |
Hemligheter hålls åtskilda från appens konfiguration. Appinställningarna krypteras i vila. App Service hanterar även hemliga rotationer. |
(App Service) Aktivera Microsoft Defender för molnet för App Service. | Få realtidsskydd för resurser som körs i en App Service-plan. Skydda dig mot hot och förbättra din övergripande säkerhetsstatus. |
(App Service) Aktivera diagnostikloggning och lägga till instrumentation i din app. Loggarna skickas till Azure Storage-konton, Azure Event Hubs och Log Analytics. Mer information om typer av granskningsloggar finns i loggtyper som stöds. | Loggning samlar in åtkomstmönster. Den registrerar relevanta händelser som ger värdefulla insikter om hur användare interagerar med ett program eller en plattform. Den här informationen är avgörande för ansvarsskyldighet, efterlevnad och säkerhetsändamål. |
Kostnadsoptimering
Kostnadsoptimering fokuserar på identifiera utgiftsmönster, prioritera investeringar inom kritiska områden och optimera i andra för att uppfylla organisationens budget samtidigt som affärskraven uppfylls.
Designprinciperna för kostnadsoptimering tillhandahåller en övergripande strategi för design för att uppnå dessa mål och göra kompromisser vid behov i den tekniska designen för dina webbappar och för miljön där de körs.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för kostnadsoptimering för investeringar och finjustera designen så att arbetsbelastningen överensstämmer med den budget som allokerats för arbetsbelastningen. Din design bör använda rätt Azure-funktioner, övervaka investeringar och hitta möjligheter att optimera över tid.
Beräkna den ursprungliga kostnaden: Som en del av kostnadsmodelleringsövningen använder du priskalkylatorn Azure för att utvärdera de ungefärliga kostnader som är associerade med olika nivåer baserat på antalet instanser som du planerar att köra. Varje App Service-nivå erbjuder olika beräkningsalternativ.
Övervaka kostnadsmodellen kontinuerligt för att spåra utgifter.
Utvärdera de rabatterade alternativen: Högre nivåer inkluderar dedikerade beräkningsinstanser. Du kan använda en reservationsrabatt om din arbetsbelastning har ett förutsägbart och konsekvent användningsmönster. Kontrollera att du analyserar användningsdata för att fastställa vilken typ av reservation som passar din arbetsbelastning. Mer information finns i Spara kostnader med reserverade App Service-instanser.
Förstå användningsmätare: Azure debiterar en timtaxa, proraterad per sekund, baserat på prisnivån för din App Service-plan. Avgifterna gäller för varje utskalad instans i din plan, baserat på den tid som du allokerar den virtuella datorinstansen. Var uppmärksam på otillräckligt utnyttjade beräkningsresurser som kan öka dina kostnader till följd av överallokering på grund av suboptimalt val av SKU eller dåligt konfigurerad skalning inåt.
Extra App Service-funktioner, till exempel anpassad domänregistrering och anpassade certifikat, kan lägga till kostnader. Andra resurser, till exempel virtuella nätverk för att isolera din lösning eller nyckelvalv för att skydda arbetsbelastningshemligheter, som integreras med dina App Service-resurser kan också lägga till kostnader. Mer information finns i App Services-faktureringsmodell.
Överväg kompromisserna mellan densitet och isolering: Du kan använda App Service-planer för att vara värd för flera program på samma beräkning, vilket sparar kostnader med delade miljöer. Mer information finns i Tradeoffs.
Utvärdera effekten av din skalningsstrategi på kostnader: Du måste utforma, testa och konfigurera korrekt för skalning ut och in-skalning när du implementerar autoskalning. Fastställ exakta max- och minimigränser för automatisk skalning.
Initiera programmet proaktivt för tillförlitlig skalning. Vänta till exempel inte tills processorn når 95 %%-användning. I stället utlöser du skalning vid cirka 65% för att ge tillräckligt med tid för att nya instanser ska kunna allokeras och initieras under skalningsprocessen. Den här strategin kan dock leda till outnyttjad kapacitet.
Vi rekommenderar att du kombinerar och balanserar mekanismer för att skala upp och skala ut. En app kan till exempel skalas upp under en viss tid och sedan skalas ut efter behov. Utforska höga nivåer som erbjuder stor kapacitet och effektiv resursanvändning. Baserat på användningsmönster är högre Premium-nivåer ofta mer kostnadseffektiva eftersom de är mer kompatibla.
Optimera miljökostnader: Överväg nivån Basic eller Free för att köra förproduktionsmiljöer. Dessa nivåer är låga prestanda och låg kostnad. Om du använder nivån Grundläggande eller Kostnadsfri använder du styrning för att framtvinga nivån, begränsa antalet instanser och processorer, begränsa skalning och begränsa loggkvarhållning.
Implementera designmönster: Den här strategin minskar mängden begäranden som arbetsbelastningen genererar. Överväg att använda mönster som backends for Frontends-mönstret och gateway-sammansättningsmönstret, vilket kan minimera antalet begäranden och minska kostnaderna.
Kontrollera regelbundet datarelaterade kostnader: Utökade datakvarhållningsperioder eller dyra lagringsnivåer kan leda till höga lagringskostnader. Fler utgifter kan ackumuleras på grund av både bandbreddsanvändning och långvarig kvarhållning av loggningsdata.
Överväg att implementera cachelagring för att minimera kostnaderna för dataöverföring. Börja med lokal minnesintern cachelagring och utforska sedan alternativen för distribuerad cachelagring för att minska antalet begäranden till serverdelsdatabasen. Överväg de bandbreddstrafikkostnader som är associerade med kommunikation mellan regioner om databasen finns i en annan region.
Optimera distributionskostnader: Dra nytta av distributionsplatser för att optimera kostnaderna. Facket körs i samma beräkningsmiljö som produktionsinstansen. Använd dem strategiskt för scenarier som blå-gröna distributioner som växlar mellan slots. Den här metoden minimerar stilleståndstiden och säkerställer smidiga övergångar.
Använd distributionsplatser med försiktighet. Du kan införa problem, till exempel undantag eller minnesläckor, som kan påverka både befintliga instanser och nya instanser. Kontrollera att du testar ändringarna noggrant. Driftvägledning finns i Operational Excellence.
Rekommendationer
Rekommendation | Fördel |
---|---|
(App Service) Välj kostnadsfria eller grundläggande nivåer för lägre miljöer. Vi rekommenderar dessa nivåer för experimentell användning. Ta bort nivåerna när du inte längre behöver dem. | Nivåerna Kostnadsfri och Basic är budgetvänliga jämfört med högre nivåer. De ger en kostnadseffektiv lösning för icke-produktionsmiljöer som inte behöver alla funktioner och prestanda för premiumplaner. |
(App Service) Dra nytta av rabatter och utforska föredragna priser för: – Lägre miljöer med utvecklings-/testplaner. - Azure-reservationer och Azure-sparplaner för dedikerad datorkapacitet som du etablerar på Premium V3-nivån och App Service-miljön. Använd reserverade instanser för stabila arbetsbelastningar som har förutsägbara användningsmönster. |
Dev/test-planer ger reducerade priser för Azure-tjänster, vilket gör dem kostnadseffektiva för icke-produktionsmiljöer. Använd reserverade instanser för att förskottsbetala för beräkningsresurser och få betydande rabatter. |
(Web App) Övervaka kostnader som App Service-resurser medför. Kör verktyget kostnadsanalys i Azure-portalen. Skapa budgetar och aviseringar för att meddela intressenter. |
Du kan identifiera kostnadstoppar, ineffektivitet eller oväntade utgifter tidigt. Den här proaktiva metoden hjälper dig att tillhandahålla budgetkontroller för att förhindra överförbrukning. |
(App Service) Skala ner när efterfrågan minskar. Om du vill skala in definierar du skalningsregler för att minska antalet instanser i Azure Monitor. | Förhindra wastage och minska onödiga utgifter. |
Operativ Framgång
Operational Excellence fokuserar främst på procedurer för utvecklingsmetoder, observerbarhet och versionshantering.
Designprinciperna för Operational Excellence tillhandahåller en högkvalitativ designstrategi för att uppnå dessa mål i enlighet med arbetsbelastningens driftskrav.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för Operational Excellence, för att definiera processer för observerbarhet, testning och distribution som rör webbappar.
Hantera versioner: Använd distributionsplatser för att hantera versioner effektivt. Du kan distribuera din applikation till en plats, utföra tester och validera dess funktionalitet. Efter verifieringen kan du sömlöst flytta appen till produktion. Den här processen medför inte extra kostnader eftersom sloten körs i samma miljö för virtualiserade maskiner (VM) som produktionsinstansen.
Använd Växla med förhandsversion (växling i flera faser). Med Växla med Förhandsvisning kan du testa appen i dina stagingplatser mot dina produktionsinställningar och även förbereda appen. När du har gjort dina tester och värmt upp alla nödvändiga sökvägar kan du sedan slutföra växlingen och appen börjar ta emot produktionstrafik utan att starta om.
Kör automatiserade tester: Innan du höjer upp en version av webbappen bör du noggrant testa dess prestanda, funktioner och integrering med andra komponenter. Använd Azure Load Testing, som integreras med Apache JMeter, ett populärt verktyg för prestandatestning. Utforska automatiserade verktyg för andra typer av testning, till exempel Phantom för funktionell testning.
Automatisera distributioner: Använd CI/CD-pipelines med Azure DevOps eller GitHub Actions för att automatisera distributioner och minska manuella åtgärder kontinuerlig distribution till Azure App Service.
Distribuera oföränderliga enheter: Implementera mönstret Distributionsstämplar för att dela upp App Service i en oföränderlig stämpel. App Service stöder användning av containrar som är oföränderliga. Överväg anpassade containrar för din App Service-webbapp.
Varje stämpel representerar en fristående enhet som du snabbt kan skala ut eller skala in. Enheter som baseras på den här stämpeln är tillfälliga och tillståndslösa. Tillståndslös design förenklar drift och underhåll. Den här metoden är idealisk för verksamhetskritiska program. För ett exempel, se Verksamhetskritisk baslinje med App Service.
Använd en IaC-teknik (infrastruktur som kod), till exempel Bicep, för att utrota enheter med repeterbarhet och konsekvens.
Skydda produktionsmiljöer: Skapa separata App Service-planer för att köra produktions- och förproduktionsmiljöer. Gör inte ändringar direkt i produktionsmiljön för att säkerställa stabilitet och tillförlitlighet. Separata instanser ger flexibilitet i utveckling och testning innan du för fram ändringar till produktion.
Använd låga miljöer för att utforska nya funktioner och konfigurationer på ett isolerat sätt. Håll utvecklings- och testmiljöer tillfälliga.
Hantera certifikat: För anpassade domäner måste du hantera TLS-certifikat.
Ha processer på plats för att skaffa, förnya och verifiera certifikat. Avlasta dessa processer till App Service om möjligt. Om du använder ditt eget certifikat måste du hantera dess förnyelse. Välj en metod som bäst överensstämmer med dina säkerhetskrav.
Rekommendation | Fördel |
---|---|
(Webbapp) Övervaka hälsotillståndet för dina instanser och aktivera hälsoprober för instanser. Konfigurera en specifik sökväg för hantering av hälsokontrollförfrågningar. |
Du kan snabbt identifiera problem och vidta nödvändiga åtgärder för att upprätthålla tillgänglighet och prestanda. |
(Webbapp) Aktivera diagnostikloggar för programmet och instansen. Frekvent loggning kan göra systemet långsammare, öka lagringskostnaderna och medföra risker om du har osäker åtkomst till loggar. Följ dessa metodtips: - Logga rätt informationsnivå. – Ange kvarhållningsprinciper. – Behåll en spårningslogg med auktoriserad åtkomst och obehöriga försök. – Behandla loggar som data och tillämpa dataskyddskontroller. |
Diagnostikloggar ger värdefulla insikter om appens beteende. Övervaka trafikmönster och identifiera avvikelser. |
(Webbapp) Dra nytta av App Service-hanterade certifikat för att avlasta certifieringshantering till Azure. | App Service hanterar automatiskt processer som certifikatanskaffning, certifikatverifiering, certifikatförnyelse och import av certifikat från Key Vault. Du kan också ladda upp certifikatet till Key Vault och ge App Service-resursprovidern åtkomst till det. |
(App Service) Verifiera appändringar i mellanlagringsplatsen innan du byter den mot produktionsplatsen. | Undvik stilleståndstid och fel. Återställ snabbt till det senast kända goda tillståndet om du upptäcker ett problem efter ett byte. |
Prestandaeffektivitet
Prestandaeffektivitet handlar om upprätthålla användarupplevelsen även när belastningen ökar genom att hantera kapaciteten. Strategin omfattar skalning av resurser, identifiering och optimering av potentiella flaskhalsar och optimering för högsta prestanda.
Designprinciperna för prestandaeffektivitet tillhandahåller en strategi för design på hög nivå för att uppnå dessa kapacitetsmål för den förväntade användningen.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning av prestandaeffektivitet för att definiera en baslinje baserat på nyckelprestandaindikatorer för webbappar.
Identifiera och övervaka prestandaindikatorer: Ange mål för programmets nyckelindikatorer, till exempel volymen av inkommande begäranden, tiden det tar för programmet att svara på begäranden, väntande begäranden och fel i HTTP-svar. Överväg nyckelindikatorer som en del av prestandabaslinjen för arbetsbelastningen.
Samla in App Service-mått som utgör grunden för prestandaindikatorer. Samla in loggar för att få insikter om resursanvändning och aktiviteter. Använd APM-verktyg (application performance monitoring), till exempel Application Insights, för att samla in och analysera prestandadata från programmet. Mer information finns i App Service-övervakningsdatareferens.
Inkludera instrumentering på kodnivå, transaktionsspårning och prestandaprofilering.
Utvärdera kapacitet: Simulera olika användarscenarier för att fastställa den optimala kapacitet som du behöver för att hantera förväntad trafik. Använd Belastningstestning för att förstå hur programmet beter sig under olika belastningsnivåer.
Välj rätt nivå: Använd dedikerad beräkning för produktionsarbetsbelastningar. Premium V3-nivåer erbjuder större SKU:er med ökad minne- och CPU-kapacitet, fler instanser och fler funktioner, till exempel zonredundans. Mer information finns i Premium V3-prisnivå.
Optimera din skalningsstrategi: Använd när det är möjligt automatisk skalning i stället för att manuellt justera antalet instanser när programbelastningen ändras. Med automatisk skalning justerar App Service serverkapaciteten baserat på fördefinierade regler eller utlösare. Kontrollera att du utför lämpliga prestandatester och anger rätt regler för rätt utlösare.
Om du prioriterar enkelheten under den första installationen använder du ett alternativ för automatisk skalning som inte kräver att du definierar regler och du bara behöver ange gränser.
Ha tillräckligt med resurser tillgängliga för att säkerställa optimala prestanda. Allokera resurser på lämpligt sätt för att underhålla prestandamål, till exempel svarstid eller dataflöde. Beakta överbeläggning av resurser när det är nödvändigt.
När du definierar regler för autoskalning tar du hänsyn till den tid det tar för programmet att initieras. Ha detta i åtanke när du fattar alla skalningsbeslut.
Använd cachelagring: Att hämta information från en resurs som inte ändras ofta och som är dyr att komma åt påverkar prestanda. Komplexa förfrågningar, inklusive sammanslagningar och flera uppslag, påverkar körtiden. Utför cachelagring för att minimera bearbetningstiden och svarstiden. Cacha frågeresultat för att undvika upprepade turer till databasen eller backänden och minska bearbetningstiden för kommande begäranden.
Mer information om hur du använder lokal och distribuerad cache i arbetsbelastningen finns i Cachelagring.
Granska prestandaantimönstret: Undvik vanliga antimönsterför att säkerställa att webbprogrammet utför och skalar i enlighet med dina affärskrav. Här är några antimönster som App Service korrigerar.
Antimönster Beskrivning upptagen klientdel Resursintensiva uppgifter kan öka svarstiderna för användarbegäranden och orsaka långa svarstider.
Flytta processer som förbrukar betydande resurser till en separat serverdel. Använd en meddelandemäklare för att köa resursintensiva uppgifter som bakändan tar upp för asynkron bearbetning.Ingen cachelagring Hantera begäranden från en mellanliggande cache framför serverdelsdatabasen för att minska svarstiden. störig granne Multitenantsystem delar resurser mellan klienter. Aktiviteten för en klientorganisation kan ha en negativ effekt på en annan klientorganisations användning av systemet. App Service Environment tillhandahåller en helt isolerad och dedikerad miljö för att köra App Service-appar.
Rekommendationer
Rekommendation | Fördel |
---|---|
(App Service) Aktivera inställningen AlwaysOn när program delar en enda App Service-plan. App Service-appar tas automatiskt bort när de är inaktiva för att spara resurser. Nästa begäran utlöser en kallstart, vilket kan orsaka tidsgränser för begäran. | Programmet tas aldrig bort med AlwaysOn aktiverat. |
(Web Apps) Överväg att använda HTTP/2 för program för att förbättra protokolleffektiviteten. | Välj HTTP/2 över HTTP/1.1 eftersom HTTP/2 helt multiplexar anslutningar, återanvänder anslutningar för att minska kostnaderna och komprimerar rubriker för att minimera dataöverföringen. |
Kompromisser
Du kan behöva göra designavvägningar om du använder metoderna i checklistorna för pelare. Här är några exempel på fördelar och nackdelar.
Densitet och isolering
Högre densitet: Samla flera appar i samma App Service-plan för att minimera resurserna. Alla appar delar resurser som CPU och minne, vilket kan spara pengar och minska driftkomplexiteten. Den här metoden optimerar även resursanvändningen. Appar kan använda outnyttjade resurser från en annan app om belastningsmönstren ändras över tid.
Tänk också på nackdelarna, till exempel resurskonkurration. Toppar i användningen eller instabiliteten i en app kan till exempel påverka prestandan för andra appar. Incidenter i en app kan också genomsyra andra appar i den delade miljön, vilket kan påverka säkerheten. För kritiska program som kräver hög tillgänglighet och prestanda isolerade miljöer som App Service Environment V3 (ASE) tillhandahålla dedikerade resurser men till en högre kostnad. Överväg att använda delade miljöer för icke-kritiska arbetsbelastningar och isolerade miljöer för verksamhetskritiska program.
Högre isolering: Isolering hjälper till att undvika interferens. Den här strategin gäller säkerhet, prestanda och till och med uppdelning av utvecklings-, testnings- och produktionsmiljöer.
App Service Environment ger bättre kontroll över säkerhet och dataskydd eftersom varje app kan ha sina egna säkerhetsinställningar. Din miljö kan innehålla överträdelser eftersom isoleringen begränsar sprängningsradien. Resurskonkurration minimeras ur ett prestandaperspektiv. Isolering möjliggör oberoende skalning baserat på specifik efterfrågan och individuell kapacitetsplanering.
Som en nackdel är den här metoden dyrare och kräver driftst stringens.
tillförlitlig skalningsstrategi
En väldefinierad skalningsstrategi säkerställer att ditt program kan hantera olika belastningar utan att äventyra prestanda. Det finns dock kompromisser när det gäller kostnader. Skalningsåtgärder tar tid. När nya resurser allokeras måste programmet initieras korrekt innan det effektivt kan bearbeta begäranden. Du kan överetablera resurser (prewarm-instanser) för att tillhandahålla ett säkerhetsnät. Utan den extra kapaciteten kan det under initieringsfasen uppstå en fördröjning i serveringsbegäranden, vilket påverkar användarupplevelsen. Autoskalningsåtgärder kan utlösas tillräckligt tidigt för att aktivera korrekt resursinitiering när kunderna använder resurserna.
Som en nackdel kostar överprovisionerade resurser mer. Du debiteras per sekund för varje instans, inklusive förvärmade instanser. Högre nivåer omfattar förvärmade instanser. Avgör om funktioner med dyrare nivåer är värda investeringen.
Skapa redundans
Redundans erbjuder återhämtning men medför också kostnader. Servicenivåmål (SLO) för din arbetsbelastning fastställer godtagbara prestandatrösklar. Det blir slöseri om redundansen överskrider SLO-kraven. Utvärdera om överflödig redundans förbättrar SLO:er eller lägger till onödig komplexitet.
Tänk också på nackdelarna. Redundans i flera regioner ger till exempel hög tillgänglighet, men ökar komplexiteten och kostnaden på grund av datasynkronisering, redundansmekanismer och kommunikation mellan regioner. Avgör om zonredundans kan uppfylla dina service-nivåmål.
Azure-policyer
Azure tillhandahåller en omfattande uppsättning inbyggda principer som rör App Service och dess beroenden. En uppsättning Azure-principer kan granska några av föregående rekommendationer. Du kan till exempel kontrollera om:
Rätt nätverkskontroller finns på plats. Du kan till exempel införliva nätverkssegmentering genom att placera App Service i Azure Virtual Network via virtuell nätverksinmatning för att få större kontroll över nätverkskonfigurationen. Programmet har inte offentliga slutpunkter och ansluter till Azure-tjänster via privata slutpunkter.
Identitetskontroller finns på plats. Programmet använder till exempel hanterade identiteter för att autentisera sig mot andra resurser. Inbyggd App Service-autentisering (Easy Auth) verifierar inkommande begäranden.
Funktioner som fjärrfelsökning och grundläggande autentisering inaktiveras för att minska attackytan.
För att uppnå omfattande styrning, granska de inbyggda Azure Policy-definitionerna och andra policyer som kan påverka säkerheten för beräkningslagret.
Azure Advisor-rekommendationer
Azure Advisor är en anpassad molnkonsult som hjälper dig att följa bästa praxis för att optimera dina Azure-distributioner. Här följer några rekommendationer som kan hjälpa dig att förbättra tillförlitlighet, säkerhet, kostnadseffektivitet, prestanda och driftseffektivitet för dina webbprograminstanser.
Nästa steg
Tänk på följande artiklar som resurser som visar de rekommendationer som markeras i den här artikeln.
Använd dessa referensarkitekturer som exempel på hur du tillämpar dessa rekommendationer på en arbetsbelastning.
Om du aldrig har distribuerat en webbapp kan du läsa Grundläggande webbapp.
Som en grundläggande arkitektur som utgångspunkt för att starta en distribution redo för produktion, se Baslinje med hög tillgänglighet zonredundant webbapplikation.
Använd följande produktdokumentation för att skapa din implementeringsexpertis: