Designprinciper för prestandaeffektivitet
Prestandaeffektivitet är arbetsbelastningens förmåga att anpassa sig till ändringar i efterfrågan. En arbetsbelastning måste kunna hantera en ökad belastning utan att äventyra användarupplevelsen. Omvänt måste arbetsbelastningen spara sina resurser när belastningen minskar. Kapacitet, som anger resurstillgänglighet (CPU och minne), är en viktig faktor.
Arbetsbelastningsdesignen bör inte bara förlita sig på företablerad kapacitet, vilket garanterar prestanda upp till en viss gräns. Om den gränsen överskrids kan arbetsbelastningen ha prestandaproblem eller till och med uppleva avbrott. När belastningen är under den gränsen fortsätter resurserna att köras i onödan, vilket medför kostnader.
Du behöver en omfattande strategi för att upprätthålla prestandamål över tid. Prestandaöverväganden bör inte vara en eftertanke i designprocessen, bara för att åtgärdas när problem uppstår i produktion. Anta i stället ett tänkesätt där prestanda är ett viktigt övervägande från de tidiga designstadierna. Börja med att skapa systemet utan några specifika prestandamål. Därifrån kan du dock testa och mäta prestanda i varje utvecklingsstadium för att säkerställa framsteg och effektivitet. Kontinuerlig optimering av dessa mål under hela processen och med lärdomar från produktion kan avsevärt minska potentiella problem i förväg.
Dessa designprinciper kan hjälpa dig att skapa en strategi för att hantera resursers kapacitet för att uppfylla dina affärskrav för förväntad användning. Minska också avfallet under tider med låg belastning. När du har bestämt dig för en strategi kan du stärka din design med hjälp av checklistan prestandaeffektivitet.
Prestandaeffektivitet handlar om effektiv användning av arbetsbelastningsresurser. Utan en bra strategi kanske du inte kan förutse och uppfylla användarnas krav. Du kan behöva använda en metod för långsiktig prognostisering och företablerad kapacitet, vilket inte gör att du kan dra full nytta av din molnplattform.
Förhandla fram realistiska prestandamål
Den avsedda användarupplevelsen definieras och det finns en strategi för att utveckla ett riktmärke och mäta mål mot de fördefinierade affärskraven. |
---|
Ur ett prestandaperspektiv är det idealiskt att ha väldefinierade prestandamål för att starta designprocessen. För att kunna ange dessa mål måste du ha en god förståelse för affärskraven och den förväntade tjänstkvaliteten som arbetsbelastningen förväntas leverera. Definiera förväntningarna i samarbete med företagets intressenter. I stället för att bara fokusera på tekniska mått ska du fastställa de godkända effekterna på användarupplevelsen för nyckelflödena.
Det finns ett cirkulärt beroende. Du kan inte mäta det du inte har definierat och du kan inte definiera utan mått. Därför är det också viktigt att mäta arbetsbelastningens prestanda tills du uppnår en tillfredsställande definition av godtagbara tröskelvärden med kollektivavtal.
Det finns en stark korrelation mellan prestanda- och tillförlitlighetsmål som hjälper till att fastställa tjänstkvaliteten vad gäller prestanda, tillgänglighet och motståndskraft. Utan en tydlig definition är det svårt att mäta, varna för och testa prestanda. När du har upprättat målen och identifierat faktiska tal genom testning över tid kan du implementera automatisering för kontinuerlig testning mot dessa mål.
Följ metodtipsen för att definiera mål på makronivå, även om de är ungefärliga eller inom ett intervall.
Metod | Fördelar |
---|---|
Förbered för effektiva förhandlingar genom att förstå tekniska begrepp, utforska designmöjligheter med den tillgängliga infrastrukturen och använda resultat från konkreta experiment, om tillgängligt. Använd historiska data för att få insyn i användningsmönster och flaskhalsar. Få insikter från externa faktorer, till exempel indata från marknadsanalys, experter och branschstandarder. |
Du kan fatta välgrundade beslut baserat på praktiska insikter. Prestandamålen fokuserar på användarupplevelsen som baseras på vad som är möjligt, branschens bästa praxis och aktuella marknadstrender. |
Samarbeta med företagsägarna för att förstå användarlöften vad gäller kvalitet och regelefterlevnad, om tillämpligt. Håll ett brett perspektiv och undvik att dyka in i detaljerade detaljer i detta skede. Var tydlig med vad som representerar godtagbara resultat baserat på investeringarna. Förstå affärskontexten och förväntad tillväxt. |
Du undviker att göra antaganden som kanske inte överensstämmer med affärsmålen. Det skapar också tydlighet och motivation i arbetsbelastningsteamet. Att ha en affärskontext om funktionella och icke-funktionella krav kan avslöja designändringar i andra Azure-Well-Architected grundpelare och hjälpa dig att göra välgrundade kompromisser. Att definiera parametrar tidigt hjälper till att undvika kostnader som är associerade med potentiella omdesignar av lösningar senare. Det gör att du kan se till att prestandamålen täcker framtida prognoser, så att du kan anpassa det aktuella arbetet till långsiktiga mål. |
Identifiera arbetsbelastningsflödena och prioritera flödena i arkitekturdiagrammet. Definiera varje flödes prestandatolerans som ett intervall från inspirerande till oacceptabel prestanda. Utvärdera start- och slutpunkterna för varje flöde med tanke på sökvägens allvarlighetsgrad, användningsfrekvens och arkitekturintensitet. |
Genom att prioritera flöden kan du fokusera dina resurser på kritiska områden som har störst effekt på användar- och affärsresultat. Genom att dela upp systemet i dess delar och beroenden förstår du varje komponents funktion och påverkar prestandan. Du blir också medveten om potentiella problem. Det hjälper till att upprätta en prestandabaslinje och enhetsoptimering. |
Börja skapa en prestandamodell Överväg om användningsmönster visar säsongsvariationer eller dagliga variationer. Ta hänsyn till kostnader, åtgärder och allvarlighetsgrad för verksamheten. Använd branschstandarder för att kvantifiera mått och aggregeringsmetoder, till exempel att använda percentiler. Utvärdera de förväntningar och begränsningar för efterfrågan och utbud som affärsbegränsningar medför. Införliva tillväxtutsikter. |
En prestandamodell ger insikter om optimal användning av resurser och hjälper till med strategisk planering. Branschstandarder hjälper till med benchmarking. Framtida bevis säkerställer att prestandamålen förblir relevanta och kan anpassas till förändringar. |
Designa för att uppfylla kapacitetskrav
Tillhandahålla tillräckligt med tillgång för att hantera förväntad efterfrågan. |
---|
Det är viktigt att proaktivt mäta prestanda. Mätning av prestanda innebär att mäta baslinjer och att ha en preliminär förståelse för vilka komponenter i systemet som sannolikt kommer att innebära utmaningar. Du kan uppnå det utan att utföra ett fullständigt prestandatest eller genom detaljerad optimering. Genom att utföra de här inledande stegen skapar du en grund för effektiv prestandahantering tidigt i utvecklingslivscykeln.
Granska systemet som helhet i stället för att fokusera på enskilda komponenter. Undvik finjustering i det här skedet. Att göra detaljerade prestandaförbättringar resulterar i kompromisser inom andra områden. När du går igenom livscykeln och påbörjar acceptanstestning av användare eller går mot produktion kan du snabbt identifiera vilka områden som kräver ytterligare optimering.
Metod | Fördelar |
---|---|
Utvärdera elasticitetskraven för de identifierade flödena. Utforska designmönster som kan implementeras i teknikstacken med tanke på programmet och de underliggande beräknings- och dataskikten. |
Du kan definiera skalbarhetskrav för befintliga komponenter som behöver mer kapacitet och de områden där du behöver extra komponenter för att fördela belastningen. Du är medveten om potentiella flaskhalsar i systemet och utformar kompenserande kontroller, till exempel att lägga till cachelagringsfunktioner för att minska svarstiden och systembelastningen. |
Välj rätt resurser i teknikstacken, vilket gör att du kan uppfylla prestandamålen och integrera med systemet. Överväg funktioner som kan uppfylla skalbarhetskraven. Hitta rätt balans mellan resursallokering och systemkrav för att effektivt hantera oväntade ökningar. |
Genom att analysera resursernas olika funktioner ser du till att varje komponent bidrar till systemets övergripande funktionalitet och prestanda. Du kan dra nytta av de inbyggda funktioner som automatiskt utlöser skalningsåtgärder. Rätt storleksändring av resurser kan möta förändringar i efterfrågan utan överetablering, vilket leder till kostnadsbesparingar. |
Utför kapacitetsplanering baserat på efterfrågan och kapaciteten hos valda resurser för att utöka din prestandamodell. Använd tekniker för förutsägelsemodellering för att förutse förväntade kapacitetsförändringar som kan inträffa med förutsägbara och oväntade ändringar. Definiera prestandamål som kan översättas till tekniska krav. |
Du kan effektivt använda resurser och möta efterfrågan utan överetablering, vilket undviker onödiga kostnader. Du förstår hur designvalen påverkar prestanda. |
Implementera ett konceptbevis som validerar de tekniska kraven och designvalen. | Ett konceptbevis är avgörande för att verifiera designen för att avgöra om systemet kan uppfylla prestandamålen och om dessa mål är realistiska. Baserat på den förväntade belastningen kan du verifiera om förväntad kapacitet kan uppfylla prestandamålen. Kontrollera även kostnadskonsekvenserna av designvalen. |
Dokumentera din strategi för prestandatestning. Inkludera användningsfall, olika metoder och takt för dina testplaner. Definiera en åtgärdsprocess som beskrivs av prestandatestplanen. Sortera och prioritera testfallen i planen. Fokusera på fall som ger värdefulla insikter om prestandamål och anpassa kapacitetsplaneringen. |
Du ser till att rätt aspekter av systemet testas. Du kan allokera resurser effektivt och utföra tester på ett sätt som överensstämmer med företagets prioriteringar och krav. |
Dokumentera din strategi för prestandaövervakning. Utvärdera mått på olika abstraktionsnivåer för varje identifierat flöde. |
Du kan spåra framsteg mot uppnåendet av prestandamål under hela utvecklingscykeln. |
Uppnå och upprätthålla prestanda
Skydda mot prestandaförsämring medan systemet används och utvecklas. |
---|
Utveckling är inte en engångsinsats. Det är en pågående process. Förvänta dig ändringar i prestanda när funktionerna ändras. Det finns avvikelse i användarmönster och profiler, även ändringar från optimeringar i andra Azure-Well-Architected pelare. Alla ändringar kan belasta arbetsbelastningsresurserna.
Skydda systemet från ändringar så att det inte glider tillbaka på prestandamålen. Integrera testning och övervakning i utvecklingsprocessen. Testa systemets prestanda i produktion med verklig belastning och simulera belastningen med automatiserad testning före produktion. I båda fallen bör du ha övervakningsmetoder på plats i verifieringssyfte.
Under hela utvecklingslivscykeln utför du olika typer av tester i olika skeden. I de första stegen testar du konceptbeviset för att se till att prestandaresultaten inte är helt oväntade. När utvecklingen fortskrider utför du manuella tester med låg ansträngning för att fastställa riktmärken. I byggfasen börjar du utveckla automatiserade rutinprestandatester som utvärderar svarstid, stressnivåer, belastningskapacitet och andra egenskaper som definierats i testplanerna.
Övervakning måste vara en integrerad del av denna insats, snarare än att vara en isolerad övning. Du kan se hur systemet och dess resurser presterar över tid. Du kan sedan finjustera dem för att maximera deras värde och se till att de fortsätter att uppfylla prestandastandarder.
Tänk på att prestandamålen varierar över tid, som svar på ändringar. Uppdatera prestandamodellen baserat på testade och övervakade mått. Ange tydligt ökad, minskad eller ingen effekt på flödenas prestanda.
Var alltid redo att omförhandla och återställa förväntningarna med affärsintressenter.
Metod | Fördelar |
---|---|
Integrera rutinmässiga prestandatester i Azure Pipelines. Välj pipelines som kan integrera tester. Omvänt väljer du testverktyg som kan integreras i pipelines. |
Automatiserade tester sparar tid och ger konsekvens som gör det enklare att identifiera regressioner eller förbättringar. Dessa artefakter möjliggör kontinuerlig övervakning av avvikelser eller drift över tid, så att du kan upprätthålla konsekvent prestanda och kvalitet. |
Formalisera prestandatester som kvalitetsgrindar som kan godkänna eller neka versionshöjning och den slutliga distributionen till produktion. | Dessa kontrollpunkter ser till att varje steg i distributionen uppfyller de prestandastandarder som krävs innan du fortsätter till nästa. Kontrollpunkterna hjälper till att förhindra oavsiktlig prestandaregression. Om prestandan till exempel är betydligt lägre än förväntningarna kan du blockera en version tills förbättringar har gjorts. |
Konfigurera en upprepningsbar process för att övervaka verkliga transaktioner i produktion och avvikelser mot dina prestandamål. Använd syntetiska transaktioner i produktion. Konfigurera övervakningsaviseringar för prestandaregressioner. |
Du vill ha insikt i systemets faktiska prestanda under verklig belastning som inte kunde simuleras via tester. Sedan kan du proaktivt identifiera problem och förbättringsområden, till exempel potentiella flaskhalsar, underutnyttjda resurser och andra problem. |
Granska prestandatestresultat och övervaka data noggrant och optimera tills du uppfyller prestandamålen. Prioritera åtgärder som härletts från dessa granskningar och lägg till dem i kvarvarande uppgifter för planerad körning. |
Baserat på testresultat kan du samla in och jämföra data och börja analysera trender. Dina optimeringsinsatser är datadrivna. |
Skapa kodningskunskaper som fokuserar på prestanda. Ha kodningsstandarder som exemplifierar prestandadrivna kodningsmönster. |
Kod som inte har prestandaproblem kan göra testcyklerna mer effektiva eftersom tester kan fokuseras på mer betydande problem. Kodningsmönster hjälper till att undvika omarbetning och håller kodningsstilen konsekvent. |
Åtgärda prestandaerosion när användningen ökar, funktionerna ändras och data ackumuleras över tid för att upprätthålla prestanda. Återställ förväntningarna och etablera nya mål om finjustering endast medför kortsiktiga fördelar. |
Du kan bevara prestandatillståndet innan försämringen utvecklas till problem som negativt påverkar användarupplevelsen utöver det godkända intervallet. Om du ändrar mål återställs prestandamodellen och du slösar inte tid på att optimera systemet som redan har nått sin kapacitet. |
Förbättra effektiviteten genom optimering
Förbättra systemeffektiviteten inom de definierade prestandamålen för att öka arbetsbelastningsvärdet. |
---|
Målen som anges under den inledande fasen baseras på en rimlig nivå av användarupplevelse, med hänsyn till olika begränsningar. Du bör omvärdera och justera mål för att ytterligare förbättra upplevelsen. För att ytterligare förbättra upplevelsen krävs en tydlig förståelse för hur systemet används, hur det har utvecklats och hur plattformen eller tekniken har förändrats över tid. Cykeln för övervakning, optimering, testning och distribution är en kontinuerlig process.
Med effektivitetsoptimering kan en arbetsbelastning arbeta med lägre resursförbrukning. De kan göra att arbetsbelastningen är i ett överetablerade tillstånd med outnyttjad kapacitet. Använd den kapaciteten för att förbättra systemets tillförlitlighet. Eliminera kapacitet för att förbättra kostnaden för systemet. Eller återanvända kapaciteten för att stödja nya produktfunktioner på befintliga resurser.
När systemet får effektivitet kan du ta tillfället i akt att ange och underhålla nya prestandamål.
Metod | Fördelar |
---|---|
Allokera dedikerade cykler för prestandaoptimering för att hantera icke-funktionella krav och optimeringar i funktionella områden. Målen för den här optimeringen är resurser, kod, datakvarhållning, databasfrågor med mera. | Du kan skapa en kultur av prestandadriven optimering. Du håller teamet ansvarigt för proaktiv övervakning av prestandamönster och finjusterar även programmet. |
Förbättra arkitekturen med nya designmönster och komponenter, vilket kan öka prestandan, på sätt som du tidigare inte har tänkt på på grund av begränsad tid eller budget. | Ny design och komponenter kan optimera systemet, vilket leder till bättre användarupplevelse. Du kan till exempel använda cachelagring eller lägga till en nätverkskomponent för innehållsleverans. Det kan också leda till långsiktiga kostnadsfördelar. |
Använd övervakningsverktyg för att analysera historiska trender och identifiera de flöden och kodimplementeringsvägar som skulle gynnas mest av en prestandaoptimering. Vi rekommenderar APM-verktyg (Application Performance Monitoring) och profilerare för detta ändamål. Identifiera driftens heta sökvägar och andra potentiella flaskhalsar i systemet. |
När du identifierar de återkommande problematiska områdena kan teamet fokusera där vinsterna är högst. |
Kom igång och håll dig uppdaterad med teknikinnovationer som kan förbättra prestandan. Dra nytta av de nya versioner som släppts för beroende ramverk och bibliotek. På samma sätt kan du använda de nya funktionerna för plattformsresurser när de uppdateras och korrigeras. |
Att införa ny teknik kan ofta vara den motiverande faktorn för att söka efter möjligheter att förbättra sig. Kod som tidigare kan ha varit långsam kan gå snabbare med dessa uppdateringar. Du vill också vara medveten om hur vissa uppdateringar påverkar prestanda negativt. |