Azure Well-Architected Framework-perspektiv på Azure App Service (Web Apps)
Azure App Service är en paaS-beräkningslösning (plattform som en tjänst) som du kan använda för att vara värd för din arbetsbelastning på Azure-plattformen. Det är en fullständigt hanterad tjänst som abstraherar den underliggande beräkningen och avlastar ansvaret för att skapa, distribuera och skala till plattformen. En App Service körs alltid i en App Service-plan. Den tjänstplan som du väljer avgör i vilken region arbetsbelastningen körs, beräkningskonfigurationerna och operativsystemet. Flera faktureringsmodeller är tillgängliga för App Service.
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 är mappade till principerna för grundpelarna i Azure Well-Architected Framework.
Viktigt!
Så här använder du den här guiden
Varje avsnitt har en checklista för design som presenterar arkitekturområden som är viktiga tillsammans med designstrategier som är lokaliserade till teknikomfånget.
Dessutom ingår rekommendationer om de teknikfunktioner som kan hjälpa till att materialisera 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
- Web Apps
Andra Azure-erbjudanden är associerade med App Service, till exempel Azure Functions, Azure Logic Apps och App Service-miljön. Dessa erbjudanden ligger utanför omfånget för den här artikeln. App Service-miljön refereras ibland för att förtydliga funktioner eller alternativ för de grundläggande App Service-erbjudandena.
Tillförlitlighet
Syftet med grundpelare för tillförlitlighet är att tillhandahålla fortsatt funktionalitet genom att skapa tillräckligt med motståndskraft och möjlighet att återhämta sig snabbt 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 design
Starta din designstrategi baserat på checklistan för designgranskning för 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. 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 riskreduceringsstrategier för potentiella fel. I följande tabell visas exempel på analys av felläge.
Fel Riskreducering 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 att trafiken dirigeras till instanser med feltillstånd Övervaka instanshälsa. Överväg svarstider och undvik att skicka begäranden till instanser som inte är felfria. Mer information finns i Analys av felläge för Azure-program.
Skapa redundans: Skapa redundans i programmet och stödinfrastrukturen. 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.
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. 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 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.
Den App Service-plannivå 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. Ett tillförlitligt skalningstillstånd 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 inläsningsscenarier för att verifiera att appen 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, var och en kör App Service-planinstansen 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.
En App Service-plan distribuerar trafik mellan instanser och övervakar deras hälsa. Observera att den externa lastbalanseraren kanske inte omedelbart identifierar om en instans misslyckas.
Planera återställningen: Redundans är avgörande för affärskontinuitet. Redundansväxla 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 segmentera ditt program i isolerade grupper för att förhindra att ett fel påverkar hela systemet.
Mönster för köbaserad 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 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. Läs mer i Azure-prenumeration och tjänstbegränsningar, kvoter och begränsningar.
Använd hälsoavsökningar 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. Instanser som inte svarar tas bort från lastbalanseraren och ersätts med en ny instans.
Rekommendationer
Rekommendation | Förmån |
---|---|
(App Service-plan) Välj Premium-nivån för en App Service-plan för produktionsarbetsbelastningar. Ange maximalt och minsta antal arbetare enligt din kapacitetsplanering. Mer information finns i Översikt över App Service-plan. |
En Premium App Service-plan erbjuder avancerade skalningsfunktioner och säkerställer redundans om fel inträffar. |
(App Service-plan) 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 felfria instanser i andra zoner och upprätthåller programmets tillförlitlighet om en zon inte är tillgänglig. |
(App Service) Överväg att inaktivera arr-tillhörighetsfunktionen (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. |
(App Service) 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. |
(App Service) 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 instanser som inte är felfria, vilket leder användarna till felfria noder. |
Säkerhet
Syftet med säkerhetspelare är att tillhandahålla garantier för konfidentialitet, integritet och tillgänglighet för arbetsbelastningen.
Principerna för säkerhetsdesign ger en övergripande designstrategi för att uppnå dessa mål genom att tillämpa metoder för den tekniska designen kring värdtjänster i 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äkerhetsbaslinjen för App Service.
Använd den senaste körningen och biblioteken: Testa programversionerna noggrant innan du gör uppdateringar för att fånga upp problem tidigt och säkerställa en smidig övergång till den nya versionen. App Service har stöd för språkkörningssupportprincipen för uppdatering av befintliga staplar och tillbakadragna supportstaplar.
Skapa segmentering via isoleringsgränser som ska 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 den App Service-miljön nivå som ger en hög grad av isolering. Med App Service-miljön 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, webbplatsdeltagare och en allmän deltagare, läsare och ägare.
Kontrollera nätverkstrafik till och från programmet: Exponera inte programslutpunkter för det offentliga Internet. Lägg i stället till en privat slutpunkt i webbappen som placeras i ett dedikerat undernät. Fronta ditt program med en omvänd proxy som kommunicerar med den privata slutpunkten. Överväg att använda Application Gateway eller Azure Front Door för det ändamålet.
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.
En omfattande vy finns i 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. Mer information finns i Kryptering i vila med kundhanterade nycklar.
Använd inte äldre protokoll som TLS 1.0 och 1.1. App Service aktiverar 1.2 som standard. Mer information finns i Översikt över App Service TLS.
Alla instanser av din App Service har ett standarddomännamn. Använd en anpassad domän och skydda domänen med certifikat.
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 via 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 begäranden från de tillåtna domänerna, rubrikerna och andra kriterier. Tillämpa CORS-principer med inbyggda Azure-principdefinitioner.
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.
Överväg att logga som en del av hotmodelleringsprocessen när du utvärderar hot.
Rekommendationer
Rekommendation | Förmån |
---|---|
(App Service) Tilldela hanterade identiteter till webbappen. Om du vill behålla isoleringsgränser ska du inte dela eller återanvända identiteter mellan program. Se till att du ansluter säkert till containerregistret om du använder containrar för distributionen. |
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 distinkta identiteter för kontrollens kornighet. Distinkta identiteter gör det enkelt att återkalla om en identitet komprometteras. |
(App Service) 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 (Transport Layer Security), vilket säkerställer skyddet av känsliga data och skapar användarförtroende. |
(App Service) 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 för flera inloggningsprovidrar och stöder OpenID-Anslut. 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. |
(App Service) Konfigurera programmet för integrering av virtuella nätverk. Använd privata slutpunkter för App Service-appar. Blockera all offentlig trafik. Dirigera containeravbildningen genom integreringen av det virtuella nätverket . 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. |
(App Service) 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. |
(App Service) 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-plan) 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-plan) Aktivera diagnostikloggning och lägg 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å att 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 dina webbappar och 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 är i linje 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 initiala 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å 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, proportionellt till den andra, baserat på din App Service-plans 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å underanvända beräkningsresurser som kan öka dina kostnader till följd av överbeläggning på grund av underoptimal SKU-val eller dåligt konfigurerad inskalningskonfiguration.
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 Faktureringsmodell för App Services.
Ö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 effekten av din skalningsstrategi på kostnaden: Du måste utforma, testa och konfigurera korrekt för utskalning och för att skala in när du implementerar autoskalning. Upprätta exakta max- och minimigränser för autoskalning.
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 på 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 din arbetsbelastning genererar. Överväg att använda mönster som mönstret Serverdelar för klientdelar och mönstret Gateway-sammansättning, 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 platser. Den här metoden minimerar stilleståndstiden och säkerställer smidiga övergångar.
Använd distributionsfack 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. Driftsvägledning finns i Operational Excellence (Driftskompetens).
Rekommendationer
Rekommendation | Förmån |
---|---|
(App Service-plan) 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-plan) 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-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. |
(App Service) Ö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-plan) Skala in 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. |
Driftseffektivitet
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 mot driftskraven för arbetsbelastningen.
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 relaterade till Web Apps.
Hantera versioner: Använd distributionsfack för att hantera versioner effektivt. Du kan distribuera ditt program till ett fack, utföra testning och verifiera dess funktioner. Efter verifieringen kan du sömlöst flytta appen till produktion. Den här processen medför inte extra kostnader eftersom facket körs i samma miljö för virtuella datorer (VM) som produktionsinstansen.
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.
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. Ett exempel 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 höjer upp ändringar i produktionen.
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örmån |
---|---|
(App Service) Övervaka hälsotillståndet för dina instanser och aktivera hälsoavsökningar för instanser. Konfigurera en specifik sökväg för hantering av hälsoavsökningsbegäranden. |
Du kan snabbt identifiera problem och vidta nödvändiga åtgärder för att upprätthålla tillgänglighet och prestanda. |
(App Service) 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. |
(App Service) 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-plan) Verifiera appändringar i mellanlagringsplatsen innan du växlar den med 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 att 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 ger en designstrategi på hög nivå för att uppnå dessa kapacitetsmål mot den förväntade användningen.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för prestandaeffektivitet för att definiera en baslinje baserat på viktiga prestandaindikatorer för Web Apps.
Identifiera och övervaka prestandaindikatorer: Ange mål för programmets nyckelindikatorer, till exempel mängden inkommande begäranden, tiden 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 APM-verktyg (application performance monitoring), till exempel Application Insights, för att samla in och analysera prestandadata från programmet. Mer information finns i Referens för App Service-övervakningsdata.
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-nivåerna erbjuder 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 skalningsstrategin: När det är möjligt använder du 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. Överbeläggning av resurser vid behov.
När du definierar regler för autoskalning tar du hänsyn till den tid det tar för programmet att initieras. Tänk på detta 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 frågor, inklusive kopplingar och flera sökningar, bidrar till körning. Utför cachelagring för att minimera bearbetningstiden och svarstiden. Cachelagra frågeresultat för att undvika upprepade turer till databasen eller serverdelen och minska bearbetningstiden för efterföljande begäranden.
Mer information om hur du använder lokal och distribuerad cache i arbetsbelastningen finns i Cachelagring.
Granska prestandaskydden: Undvik vanliga antimönster för att se till 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 Resurskrävande uppgifter öka svarstiden för användarförfrågningar och orsaka hög latens.
Flytta processer som förbrukar stora mängder resurser till en separat serverdel. Använd en meddelandekö för att köa resursintensiva uppgifter som serverdelen tar upp till asynkront process.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-miljön tillhandahåller en helt isolerad och dedikerad miljö för att köra App Service-appar.
Rekommendationer
Rekommendation | Förmån |
---|---|
Aktivera inställningen Alltid på 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. |
Ö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. |
Avvägningar
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 resurser. 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 inaktiva resurser från en annan app om inläsningsmönstren ändras över tid.
Tänk också på nackdelarna. 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.
Högre isolering: Isolering hjälper till att undvika störningar. Den här strategin gäller säkerhet, prestanda och till och med uppdelning av utvecklings-, testnings- och produktionsmiljöer.
App Service-miljön 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 överetablerade 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. Kontrollera om zonredundans kan uppfylla dina serviceavtal.
Azure-principer
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.
Om du vill ha omfattande styrning läser du de inbyggda Definitionerna för Azure Policy och andra principer 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 metodtipsen 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 webbprogram.
En grundläggande arkitektur som utgångspunkt för en distribution i produktionsklass finns i Baslinje med hög tillgänglighet för zonredundant webbapp.
Använd följande produktdokumentation för att skapa din implementeringsexpertis: