Rekommendationer för att prioritera prestanda för kritiska flöden
Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:
PE:09 | Prioritera prestanda för kritiska flöden. Fördelningen av arbetsbelastningsresurser och prestandaoptimering bör prioritera de flöden som stöder de viktigaste affärsprocesserna, användarna och åtgärderna. |
---|
Den här guiden beskriver rekommendationerna för att prioritera prestanda för kritiska flöden i en arbetsbelastning. Kritiska flöden representerar viktiga affärsprocesser som genererar intäkter eller driver högprioriterad verksamhet. När du prioriterar prestanda för kritiska flöden ser du till att de flöden som har störst inverkan får de resurser de behöver innan flöden med lägre prioritet. Om du inte gör den här prioriteringen kan det få oproportionerliga negativa effekter på arbetsbelastningsprioriteringar och användarupplevelsen.
Definitioner
Period | Definition |
---|---|
Flöden | I en arbetsbelastning, sekvensen med åtgärder som utför en specifik funktion. Ett flöde omfattar förflyttning av data och körning av processer mellan komponenter i arbetsbelastningen. |
Bearbetning av prioritetskö | Bearbetning av uppgifter med hög prioritet före lågprioriterad aktivitet. |
Frekvensbegränsning | Att begränsa hur många begäranden som kan komma åt en resurs. |
Systemflöde | Flödet av information och processer i ett system. Systemet följer automatiskt det här flödet för att aktivera användarflöden eller arbetsbelastningsfunktioner. |
Användarflöde | Den sekvens som en användare följer för att utföra en uppgift. |
Viktiga designstrategier
Kritiska flöden refererar till viktiga användarflöden för kunder eller system- och dataflöden för åtgärder som är avgörande för arbetsbelastningsfunktionen. Dessa flöden kan omfatta åtgärder som användarregistreringar, inloggningar, produktköp, åtkomst till sidor bakom en betalvägg eller någon annan viktig sökväg eller process i din arbetsbelastning.
Kritiska flöden påverkar användarupplevelsen eller verksamheten avsevärt. Kritiska flöden har högre prestandamål och serviceavtal än icke-kritiska flöden. Om resurserna är begränsade bör icke-kritiska flöden ge resursanvändning till kritiska flöden. Du måste identifiera, övervaka och prioritera alla flöden innan du isolerar och optimerar kritiska flöden.
Identifiera alla flöden
Det första steget i att prioritera prestanda för kritiska flöden är att identifiera alla flöden i din arbetsbelastning. Flödesidentifiering omfattar systematisk mappning och förståelse av varje användarsökväg och komponentkommunikation. Fokus ligger på att förstå prestandamåtten och den potentiella effekten av flöden på arbetsbelastningens prestanda.
Genom att dissekera arbetsbelastningen i diskreta flöden kan du hitta flaskhalsar i prestanda, ineffektiv resursanvändning och möjligheter till prestandaoptimering. Den här kunskapen exponerar områden med nödvändiga förbättringar och är det första steget för att identifiera kritiska flöden. Mer information finns i Identifiera och betygsätta användar- och systemflöden.
Övervaka flödesprestandamått
När du har identifierat alla flöden i din arbetsbelastning måste du samla in prestandamått för varje flöde och övervaka dessa mått. Flödesmått ger insikter om svarstider, felfrekvenser och dataflöde. Målet är att konsekvent observera och registrera prestandarelaterade mått för att ytterligare förfina din förståelse av varje flödes inverkan på arbetsbelastningens prestanda. Om du vill övervaka flödesmått kan du använda följande verktyg för att samla in data:
Analys- och spårningsverktyg: Dessa verktyg ger insikter om användarbeteende och interaktioner i ditt program. Genom att analysera användardata kan du identifiera de vanligaste flödena, flaskhalsarna eller potentiella problem.
Verktyg för övervakning av programprestanda (APM): Använd APM-verktyg för att övervaka programmets prestanda och spåra hur flöden körs. De här verktygen ger insyn i svarstider, fel och andra prestandamått, så att du kan identifiera kritiska flöden och optimera deras prestanda.
Loggnings- och felsökningsverktyg: Använd dessa verktyg för att samla in och analysera loggar och felsöka information medan programmet körs. Granska loggar och felsökningsinformation för att spåra hur flöden körs och identifiera problem eller fel.
Identifiera kritiska flöden
Med tillgängliga prestandadata kan du börja rangordna alla flöden och identifiera de kritiska flödena. Identifieringen av kritiska flöden omfattar utvärdering av prestandapåverkan och allvarlighetsgrad för varje flöde. Effektiv flödesprioritering säkerställer att de viktigaste flödena får de resurser som behövs före mindre kritiska flöden. Överväg följande steg för att prioritera flöden i ditt program:
Identifiera affärspåverkan: Börja med att utvärdera vikten av varje flöde i din verksamhet. Fokusera på hur varje flöde överensstämmer med dina affärsmål, dess inverkan på användarna och de potentiella negativa effekterna av dåliga prestanda. En kostnadsfri tjänstnivå kan till exempel locka fler användare, men en betald nivå kan vara viktigare för dina affärsmål.
Överväg även prestandaeffekterna av ett flöde i en eller flera affärsprocesser. Flera flöden kan ha stöd för en enda affärsprocess, men ofta har ett flöde en betydande effekt på processens prestanda. Du vill identifiera de flöden som har störst prestandapåverkan. Omvänt kan ett enda flöde underbygga flera processer. I sådana fall påverkar prestandan för det här flödet direkt effekten av alla relaterade processer, och det är sannolikt ett kritiskt flöde.
Analysera prestandadata: Analysera de prestandamått som är associerade med varje flöde. Leta efter mönster, avvikelser eller framstående mått som kan ge insikter om flödets effektivitet och betydelse. Till exempel är systemflöden med betydande användning sannolikt viktiga flöden.
Tilldela allvarlighetsgrad: Baserat på effekt- och prestandaindikatorerna för verksamheten bör du prioritera flödena. Använd allvarlighetsgraderna Hög, Medel och Låg. Flöden med en betydande affärspåverkan eller hög prestandaefterfrågan bör få en "hög" allvarlighetsgrad. Dessa flöden är dina kritiska flöden. Fokusera på flöden med hög användartrafik eller har en direkt effekt på intäktsgenereringen. Följande tabell innehåller egenskaper för kritiska (hög) och icke-kritiska flöden (medel till låg).
Kritiska flöden | Icke-kritiska flöden |
---|---|
Hög användning | Låg användning |
Affärskritisk | Inte affärskritisk |
Dyra åtgärder | Små åtgärder |
Tidskänslig | Inte tidskänslig |
Produktion | Förproduktion |
Realtidsbearbetning | Batchbearbetning |
Svarstidskänslig | Inte svarstidskänslig |
Betalande användare | Användare som inte betalar |
Premiumnivå | Basic-nivå |
Viktiga uppgifter | Uppgifter som inte är nödvändiga |
Konton med höga intäkter | Konton med låga intäkter |
Isolera kritiska flöden
Processen med att isolera kritiska flöden handlar om att tillhandahålla dedikerade resurser eller kapacitet för att stödja kritiska flöden. Du vill allokera resurser och uppmärksamhet till de flöden som är viktiga för optimal användarupplevelse eller betydande affärsresultat. Målet är att säkerställa att kritiska flöden får tillräckligt med databehandlingskraft, nätverksbandbredd och resurser för att fungera effektivt och effektivt. Genom att isolera kritiska flöden kan du enklare hantera de resurser som stöder kritiska flöden. Här följer rekommendationer för att isolera kritiska flöden:
Resurssegmentering: Skapa separata resurser för kritiska flöden så att de kan fungera oberoende av varandra utan störningar från andra processer. Du kan till exempel isolera kritiska flöden i dedikerade nätverkssegment eller genom att använda dedikerade servrar för att hantera bearbetningsbehoven för dessa flöden. Den här metoden hjälper till att minimera hur icke-kritiska flöden kan påverka kritiska flöden negativt.
Logisk segmentering: Använd virtualiserings- och containerverktyg som Docker eller Kubernetes för att isolera flöden på programvarunivå. Du kan separera kritiska flöden i virtuella datorer (VM). På så sätt skapar du en isolerad miljö, vilket minskar beroenden och potentiell interferens från andra flöden.
Kapacitetsallokering: För kritiska flöden allokerar du uttryckligen en fast uppsättning kapacitet, till exempel CPU, minne och disk-I/O. Den här allokeringen säkerställer att kritiska flöden alltid har tillräckligt med resurser för att fungera effektivt. Ange resurskvoter eller gränser med hjälp av orkestreringsplattformar. Genom att uttryckligen allokera resurser till kritiska flöden förhindrar du resurskonkurrering och prioriterar hur de körs.
Kompromiss: Resurssegmentering påverkar kostnaderna. När du dedikerar resurser till ett flöde ökar du ofta kostnaden och lämnar vissa resurser underutnyttade. För att motivera prestandaförbättringarna för kritiska flöden måste ökningen av affärspåverkan uppväga kostnadsökningen.
Optimera kapacitetsallokering
När du inte kan isolera kritiska flöden är det näst bästa alternativet att prioritera kritiska flöden vid åtkomst till tillgänglig kapacitet. Optimeringen av kapacitetsallokering handlar om att strategiskt distribuera tillgänglig kapacitet till olika flöden baserat på deras allvarlighetsgrad. Kapaciteten omfattar processor, minne, lagring och nätverksbandbredd. Målet är att säkerställa att de mest kritiska flödena (högsta prioritet) får den kapacitet som krävs för att fungera effektivt. Om du vill bestämma hur du ska allokera kapacitet bör du överväga följande strategier:
Utvärdera resurskapacitet: Utvärdera hur mycket resurskapacitet som kan allokeras till flödena. Kapaciteten kan innehålla resurser som CPU, minne, lagring och nätverksbandbredd. Förstå begränsningarna och begränsningarna i din infrastruktur eller miljö.
Analysera flödeskrav: Analysera resurskraven för varje flöde. Förstå de resurser som flödet behöver för att fungera effektivt. För varje flöde identifierar du resurskraven, till exempel processoranvändning, minneskrav och nätverksbandbredd.
Prioritera allokeringar: Matcha den tillgängliga resurskapaciteten med resurskraven för flödena. Allokera resurser baserat på flödesprioriteringar, så att flöden med högre prioritet får de resurser som krävs för att uppfylla deras krav. Förstå var dina strängaste begränsningar finns och optimera kapacitetsallokeringar där de behövs. Köer kan till exempel bara bearbeta vissa meddelanden per minut, men vissa lagringsgränser är svåra att nå.
Använd hastighetsbegränsning: För att säkerställa att kritiska flöden kan förbruka de resurser som de behöver för att uppfylla sina prestandamål tillämpar du hastighetsbegränsningar för icke-kritiska flöden och uppgifter. Hastighetsbegränsningar begränsar antalet begäranden med lägre prioritet och användarna kan göra till begränsade resurser. Du kan till exempel hastighetsbegränsa icke-prioritetsbegäranden till ett API. Mer information finns i mönstret Hastighetsbegränsning och Hastighetsbegränsning för en HTTP-hanterare i .NET.
Använd prioritetsköbearbetning: Prioritetsköbearbetning ger hög prioritet till vissa begäranden. Köer har vanligtvis en först in-, först ut-struktur (FIFO), men du kan uppdatera ditt program för att tilldela en prioritet till meddelanden som läggs till i kön. Använd den här funktionen för att prioritera kritiska flöden och användare. Mer information finns i mönstret Prioritetskö.
Risk: Det kan vara en utmaning att balansera behoven hos kritiska flöden med den övergripande prestandan för en arbetsbelastning. Även om du bör prioritera kritiska flöden bör du inte försumma icke-kritiska flöden. Den övergripande prestandaeffektiviteten för en arbetsbelastning beror på alla flöden. Försummade icke-kritiska flöden kan skapa problem som påverkar alla användare. För mycket brus från oväsentlighet stjäl uppmärksamhet från kritiska föremål. Men för lite brus kan skada hela arbetsbelastningen. Mängden data och antalet aviseringar bör återspegla dessa balanserade prioriteringar.
Azure-underlättande
Identifiera och övervaka flöden: Azure tillhandahåller olika lösningar som hjälper dig att övervaka prestanda för kritiska flöden i din arbetsbelastning. Azure Monitor, Azure Monitor-loggar och Azure Application Insights är några av de tjänster som erbjuder omfattande övervakningsfunktioner för flera typer av program och arbetsbelastningar.
Optimera kapacitetsallokeringar: Vissa Azure-tjänster stöder resurssegmentering, logisk segmentering och kapacitetsallokering för att allokera kapacitet och resurser till kritiska flöden. Du kan isolera kritiska flöden genom tekniker som att skapa separata resurser, öka densiteten, använda virtualisering och containerisering och uttryckligen allokera resurser till kritiska flöden.
Vissa Azure-tjänster, till exempel Azure API Management, tillhandahåller inbyggda principer för hastighetsbegränsning. Azure ger detaljerad vägledning och ett exempel på implementering av designmönstret hastighetsbegränsning.
Azure stöder prioritetsköbearbetning. Azure Functions tillhandahåller händelsedrivna funktioner som du kan utlösa på olika sätt, bland annat genom ett nytt meddelande i en kö eller ett ämne. Kombinera Azure Functions med Azure Queue Storage eller Azure Service Bus för att bearbeta meddelanden baserat på deras prioritet.
Relaterade länkar
- Mönster för prioritetskö
- Mönster för hastighetsbegränsning
- Hastighetsbegränsning för en HTTP-hanterare i .NET
- Azure API Management
- Azure Service Bus
Checklista för prestandaeffektivitet
Se den fullständiga uppsättningen rekommendationer.