Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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, vilket gör att du kan fokusera på din programutveckling. Funktionen Web Apps i App Service kör dina appar i kontexten för en App Service-plan. Den här planen bestämmer 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ädet 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 mappas till principerna för Well-Architected Framework-pelarna.
Teknikomfång
Den här granskningen fokuserar på de relaterade besluten för följande Azure-resurser:
- App Service-planer
- Web Apps
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.
Reliability
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 ger en övergripande designstrategi som tillämpas för enskilda komponenter, systemflöden och systemet som helhet.
Checklista för arbetsbelastningsdesign
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 viktiga. 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 antalet 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. Om du placerar ett stort program i en enda plan kan det leda till minnes- eller CPU-problem som påverkar 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 riskreduceringsstrategier för potentiella fel. I följande tabell visas exempel på analys av felläge.
Failure Mitigation 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 som återförsöksmönstret och kretsbrytarmönstret. Övervaka de externa beroendena och ange lämpliga tidsgränser. Fel på grund av trafik som dirigeras till instanser med dålig hälsa 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ödinfrastruktur. 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 om ett program använder en zonredundant distribution.
Använd flera instanser: Ett omedelbart fel med en enskild felpunkt inträffar om du bara kör appen på en instans. 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. Din appkod ska kunna hantera flera instanser utan synkroniseringsproblem när du läser från datakällor 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 det otillförlitligt. Överväg rätt skalningsmetod baserat på dina arbetsbelastningsegenskaper. Med horisontell skalning eller utskalning kan du lägga till fler instanser för att distribuera belastningen. Lodrät skalning eller uppskalning ökar kapaciteten för en befintlig instans, till exempel CPU eller minne. Var försiktig med överprovisionering eftersom onödiga instanser ökar kostnaderna utan konkreta 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. Välj metoden automatisk, eller automatisk skalning, över den manuella metoden. Underhåll alltid en buffert med extra kapacitet under skalningsåtgärder för att förhindra prestandaförsämring.
Den App Service-plannivån som du väljer påverkar skalningen när det gäller antalet instanser och beräkningsenheterna.
Överväg krav för nätverksprotokoll när du utformar din skalningsstrategi, så att både IPv4- och IPv6-trafikmönster omfattas. App Service stöder inkommande IPv6-anslutning tillsammans med IPv4. Endast IPv6-nätverk kan lösa problem med överbelastning i IPv4. Endast IPv6-klienter kräver dock översättningstjänster för IPv4-till-IPv6 när IPv6 inte är aktiverat, vilket skapar potentiella omkostnader för nätverksöversättning. Mer information finns i Inkommande och utgående IP-adresser i Azure App Service.
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. För att åtgärda detta är en strategi att distribuera identiska stämplar, där varje stämpel kör en egen App Service-planinstans och 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 med en zon och Azure Front Door för distributioner med flera regioner. Den här metoden är idealisk för verksamhetskritiska program när tillförlitlighet är avgörande. Mer information finns i Verksamhetskritisk baslinje med App Service.
Planera återställningen: 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 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.
Återförsöksmönstret 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 Designmönster för arkitektur som stöder tillförlitlighet.
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. Mer information finns i Fel- och åtgärdsbiblioteket för 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 Begränsningar för App Service.
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 ditt webbprogram. 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, exkluderar App Service alla ohälsosamma instanser från att hantera begäranden. Den här processen förbättrar din övergripande tillgänglighet.
Appens sökväg för hälsokontroll bör avsöka de viktigaste komponenterna i ditt program, till exempel din databas, cache eller meddelandetjänst. Det här steget hjälper till att säkerställa att statusen som returneras av sökvägen för hälsokontroll är en korrekt bild av applikationens övergripande hälsa.
Använd funktionen för automatisk läkning: Ibland kan programmet uppleva oväntade beteenden som en enkel omstart kan lösa. Använd funktionen för automatisk läktning för att definiera ett villkor som utlöser automatisk läkning och den åtgärd som automatiskt läker initieras när villkoret uppfylls. Mer information finns i Översikt över App Service-diagnostik.
App Service-återhämtningspoängrapport: Mer information om skräddarsydda rekommendationer för bästa praxis finns i översikten över App Service-diagnostik.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| (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 tillhandahåller 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 har 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. |
| (Webbappar) Överväg att inaktivera funktionen för ARR-tillhörighet (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-instans 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. |
| (App Service) Använd inte apptjänstens säkerhetskopierings- och återställningsfunktioner för länkade databaser. | Med hjälp av interna säkerhetskopierings- och återställningsverktyg för dina länkade databaser får du en mer tillförlitlig och justerbar återställningslösning för tillståndsarkivet för webbappen. Säkerhetskopieringen av länkade databaser via App Service är inaktuell. |
| (Webbappar) Definiera regler för automatisk återställning baserat på antal begäranden, 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. |
| (Webbappar) 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. |
Security
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 arbetsbelastningsdesign
Påbörja din designstrategi baserad på checklistan för designgranskning för säkerhet och identifiera sårbarheter och kontroller för att förbättra säkerhetsläget. Utöka strategin till att omfatta fler metoder efter behov.
Granska säkerhetsbaslinjer: För att förbättra säkerhetsläget för din applikation som hostas på en App Service-plan, granska säkerhetsbaslinjen för App Service.
Använd de senaste körnings- och biblioteken: Testa programversionerna noggrant innan du gör uppdateringar för att fånga upp problem tidigt och se till att övergången till den nya versionen blir smidig. 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 begränsa intrång: Tillämpa identitetsbaserad segmentering. 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å. Integrera App Service-appar med ett virtuellt Azure-nätverk för isolering och definiera nätverkssäkerhetsgrupper (NSG:er) för att filtrera trafik.
App Service-planer tillhandahåller den App Service Environment-nivå 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 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.
Tillämpa nätverkssäkerhetskontroller: Integrera Din App Service med ett virtuellt nätverk för att styra den utgående trafiken. Använd privata slutpunkter för att styra inkommande trafik, begränsa åtkomsten till din App Service-instans inifrån ditt virtuella nätverk och inaktivera offentlig Internetåtkomst. Mer information finns i Nätverksroutning.
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 hjälper till att förhindra dataexfiltrering.
Mer information finns i App Service-nätverksfunktioner.
Kryptera data: Skydda data under överföring med hjälp av TLS (End-to-End Transport Layer Security). Använd dina kundhanterade nycklar för fullständig kryptering av vilande data.
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 dina App Service-instanser har ett standarddomännamn. Använd en anpassad domän och skydda domänen med hjälp av 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). Framtvinga konfigurationer med hjälp av Azure-principer. Mer information finns i Azure-principer.
Implementera restriktiva CORS-principer (Cross-Origin Resource Sharing): Använd restriktiva CORS-principer i webbappen för att endast acceptera förfrågningar från de tillåtna domänerna, huvudena och andra kriterier. Tillämpa CORS-principer med hjälp av inbyggda Azure-principdefinitioner.
Använd hanterade identiteter: Aktivera hanterade identiteter för din App Service-instans för att få säkrare åtkomst till andra Azure-tjänster utan att behöva hantera autentiseringsuppgifter.
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 säkerhetsincidenter. Mer information finns i Azure Monitor-resursloggar.
Överväg att logga som en del av hotmodelleringsprocessen när du utvärderar hot.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| (Webbappar) 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. |
| (Webbappar) Konfigurera anpassade domäner för program. 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, vilket säkerställer skyddet av känsliga data och skapar användarförtroende. |
| (Webbappar) Utvärdera 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. |
| (Webbappar) 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. |
| (Webbappar) 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. |
| (Webbappar) 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 ger en övergripande designstrategi för att uppnå dessa mål och göra avvägningar vid behov i den tekniska designen som rör Webbappar och dess miljö.
Checklista för arbetsbelastningsdesign
Påbörja din designstrategi baserat på checklistan för designgranskning och kostnadsoptimering för investeringar. Finjustera designen så att arbetsbelastningen är i linje med den budget som allokeras 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 för 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å innehåller olika beräkningsalternativ.
Övervaka kostnadsmodellen kontinuerligt för att spåra utgifter.
Utvärdera de rabatterade alternativen: På högre nivåer finns 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, proportionellt per sekund, baserat på din App Service-planens prisnivå. 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å outnyttjade beräkningsresurser som kan öka dina kostnader till följd av överallokering på grund av suboptimalt SKU-val eller dåligt konfigurerad skal-in-konfiguration.
Extra App Service-funktioner, till exempel anpassad domänregistrering och anpassade certifikat, kan lägga till kostnader. Andra resurser, till exempel virtuella nätverk som isolerar din lösning eller nyckelvalv som skyddar arbetsbelastningshemligheter, kan också integreras med dina App Service-resurser och lägga till kostnader. Mer information finns i Förstå den fullständiga faktureringsmodellen för App Service.
Ö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 Kompromisser.
Utvärdera effekterna av din skalningsstrategi på kostnaden: Du måste utforma, testa och konfigurera korrekt för utskalning och för att kunna skala in när du implementerar automatisk skalning. 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 resultera i 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 ger 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 att använda den grundläggande nivån eller den kostnadsfria nivån för att köra förproduktionsmiljöer. Dessa nivåer är låga prestanda och låg kostnad. Om du använder den grundläggande nivån eller den kostnadsfria nivån 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 din arbetsbelastning genererar. Överväg att använda mönster som Backends for Frontends-mönstret och Gateway Aggregation-mönstret för att 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 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 befintliga instanser och nya instanser. Kontrollera att du testar ändringarna noggrant. Mer information om driftvägledning finns i Operational Excellence (Driftskvalitet).
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| (App Service) Välj kostnadsfria nivåer 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. | De kostnadsfria nivåerna och de grundläggande nivåerna ä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 dev/test-planer. - Azure-reservationer och Azure-sparplaner för dedikerad beräkning som du etablerar på Premium v3-nivån och App Service Environment. 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. |
| (Webbappar) Ö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 skicklighet
Operational Excellence fokuserar främst på procedurer för utvecklingsmetoder, observerbarhet och versionshantering.
Designprinciperna för Operational Excellence tillhandahåller en övergripande designstrategi för att uppnå dessa mål när det gäller arbetsbelastningens driftskrav.
Checklista för arbetsbelastningsdesign
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 distributionsfack 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 funktionen växling med förhandsversion (växling med flera faser). Genom att växla med förhandsversion kan du testa appen i dina mellanlagringsplatser mot dina produktionsinställningar och även värma upp appen. När du har gjort dina tester och förberett alla nödvändiga processer kan du sedan slutföra växlingen. Sedan tar appen 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. Den 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 pipelines för kontinuerlig integrering och kontinuerlig distribution med Azure DevOps eller GitHub Actions för att automatisera distributioner och minska manuellt arbete. Mer information finns i Kontinuerlig distribution till 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 apptjänstens 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. Mer information finns i 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.
| Recommendation | Benefit |
|---|---|
| (Webbappar) Övervaka dina instansers hälsa och aktivera hälsokontroller 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. |
| (Webbappar) 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. |
| (Webbappar) 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. Om du behåller den tidigare distribuerade produktionsversionen i ett fack kan du återgå till det senast kända goda tillståndet om du upptäcker ett problem efter distributionen. Gör att du kan se till att alla instanser värms upp innan de växlas till produktion för att undvika tillfälliga problem med kallstartsrelaterade distributioner. |
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 arbetsbelastningsdesign
Påbörja din designstrategi baserad på designgranskningschecklista för prestanda och effektivitet. Definiera en baslinje som baseras på viktiga prestandaindikatorer för Web Apps.
Identifiera och övervaka prestandaindikatorer: Ange mål för nyckelindikatorerna för programmet, till exempel volymen inkommande begäranden, den tid som programmet tar för 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 programprestandaövervakningsverktyg, 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 ger större SKU:er med ökad minne- och CPU-kapacitet, fler instanser och fler funktioner, till exempel zonredundans. Mer information finns i Prisnivån Premium v3.
Optimera din skalningsstrategi: När det är möjligt kan du använda 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 inledande installationen använder du ett alternativ för automatisk skalning som endast kräver att gränser anges, utan att du behöver definiera regler.
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 prestanda-antimönster: För att se till att webbapplikationen presterar och skalar i enlighet med dina affärskrav, undvik de typiska antimönstren. I följande tabell beskrivs några antimönster som App Service korrigerar.
Antipattern Description 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. Bullrig 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.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| (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 tidsavbrott 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. |
Tradeoffs
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 tillhandahåller isolerade miljöer som App Service Environment v3 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 förhindra 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 hjälper till att säkerställa 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 överprovisionera resurser (eller förvärma instanser) som en säkerhetsåtgärd. 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 ger återhämtning men medför även kostnader. Servicenivåmål (SLO) för din arbetsbelastning avgör 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 för flera regioner ger till exempel hög tillgänglighet men ökar komplexiteten och kostnaden på grund av datasynkronisering, redundansmekanismer och interregional kommunikation. Fastställ om zonredundans kan uppfylla dina tjänstenivåmål.
Azure-riktlinjer
Azure tillhandahåller en omfattande uppsättning inbyggda principer som rör App Service och dess beroenden. Några av föregående rekommendationer kan granskas via Azure Policy. 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 (eller Enkel autentisering) 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 definitionerna för Azure Policy för App Service och andra principer som kan påverka säkerheten hos beräkningslagret.
Azure Advisor-rekommendationer
Azure Advisor är en anpassad molnkonsult som hjälper dig att följa metodtipsen för att optimera dina Azure-distributioner.
Mer information finns i Azure Advisor.
Exempelarkitektur
Grundläggande arkitektur som visar de viktigaste rekommendationerna: App Service-baslinjearkitektur.
Nästa steg
Tänk på följande artiklar som resurser som visar de rekommendationer som markeras i den här artikeln.
Använd följande referensarkitekturer som exempel på hur du tillämpar dessa rekommendationer på en arbetsbelastning.
- Om du inte har distribuerat en webbapp kan du läsa Grundläggande webbprogram.
- 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: