Kompromisser med prestandaeffektivitet
En arbetsbelastning som uppfyller sina prestandamål utan överetablering är effektiv. Målet med prestandaeffektivitet är att alltid ha tillräckligt med tillgång för att hantera efterfrågan. Viktiga strategier för prestandaeffektivitet är korrekt användning av kodoptimeringar, designmönster, kapacitetsplanering och skalning. Tydliga prestandamål och testning ligger till grund för den här pelaren.
Under processen med att förhandla om en arbetsbelastnings prestandamål och utforma en arbetsbelastning för prestandaeffektivitet är det viktigt att vara medveten om hur designprinciperna för prestandaeffektivitet och rekommendationerna i checklistan Designgranskning för prestandaeffektivitet kan påverka optimeringsmålen för andra pelare. Vissa beslut om prestandaeffektivitet kan gynna vissa pelare men utgöra kompromisser för andra. Den här artikeln innehåller exempel på kompromisser som ett arbetsbelastningsteam kan stöta på när de utformar arbetsbelastningsarkitektur och åtgärder för prestandaeffektivitet.
Kompromisser med prestandaeffektivitet med tillförlitlighet
Kompromiss: Minskad replikering och ökad densitet. En hörnsten i tillförlitligheten är att säkerställa motståndskraft genom att använda replikering och begränsa explosionsradien för fel.
En arbetsbelastning som uppnår effektivitet genom att fördröja skalningen till det sista ansvarsfulla ögonblicket uppfyller efterfrågan, men som är sårbar för oförutsedda nodfel och skalningsfördröjningar.
Att konsolidera arbetsbelastningsresurser kan använda överkapacitet och förbättra effektiviteten. Det ökar dock explosionsradien för ett fel i den samlokala komponenten eller programplattformen.
Genom att skala in eller skala ned för att minimera överskottskapaciteten kan en arbetsbelastning vara underetablerade under användningstoppar, vilket leder till avbrott i tjänsten på grund av otillräcklig tillgång.
Kompromiss: Ökad komplexitet. Tillförlitlighet prioriterar enkelhet.
Att använda autoskalning för att balansera arbetsbelastningstillgången mot efterfrågan medför variabilitet i arbetsbelastningens topologi och lägger till en komponent som måste fungera korrekt för att systemet ska vara tillförlitligt. Automatisk skalning leder till att fler programlivscykelhändelser utlöses, till exempel start och stopp.
Datapartitionering och horisontell partitionering hjälper till att undvika prestandaproblem i stora eller ofta använda datauppsättningar. Implementeringen av dessa mönster ökar dock komplexiteten eftersom (eventuell) konsekvens måste upprätthållas mellan ytterligare resurser.
Att avnormalisera data för optimerade åtkomstmönster kan förbättra prestandan, men det medför komplexitet eftersom flera representationer av data måste synkroniseras.
Prestandacentrerade molndesignmönster kräver ibland införandet av ytterligare komponenter. Användningen av dessa komponenter ökar arbetsbelastningens yta. Komponenterna måste sedan själva göras tillförlitliga för att hålla hela arbetsbelastningen tillförlitlig. Exempel:
- En meddelandebuss för belastningsutjämning, som introducerar en kritisk, tillståndskänslig komponent.
- En lastbalanserare för autoskalningsrepliker, vilket kräver tillförlitlig åtgärd och registrering av repliker.
- Avlasta data till cacheminnen, vilket kräver tillförlitliga metoder för cacheintegrering.
Kompromiss: Testning och observation i aktiva miljöer. Att undvika onödig användning av produktionssystem är en metod för självbevarande och riskundandragande för tillförlitlighet.
Prestandatestning i aktiva miljöer, till exempel användning av syntetiska transaktioner, medför risk för fel på grund av teståtgärder eller konfigurationer.
Arbetsbelastningar ska instrumenteras med ett APM-system (Application Performance Monitoring) som gör det möjligt för team att lära sig av aktiva miljöer. APM-verktygen installeras och konfigureras i programkod eller i värdmiljön. Felaktig användning, överskridande av begränsningar eller felkonfiguration av verktyget kan äventyra dess funktioner och underhåll, vilket kan undergräva tillförlitligheten.
Prestandaeffektivitetsavvägningar med säkerhet
Kompromiss: Minskning av säkerhetskontroller. Säkerhetskontroller upprättas över flera lager, ibland redundanta, för att ge skydd på djupet.
En strategi för prestandaoptimering är att ta bort eller kringgå komponenter eller processer som bidrar till fördröjningar i ett flöde, särskilt när bearbetningstiden inte är motiverad. Den här strategin kan dock äventyra säkerheten och bör åtföljas av en grundlig riskanalys. Föreställ dig följande exempel:
Om du tar bort kryptering under överföring eller i vila för att förbättra överföringshastigheten exponeras data för potentiella integritets- eller sekretessöverträdelser.
Att ta bort eller minska säkerhetsgenomsöknings- eller inspektionsverktyg för att minska bearbetningstiderna kan äventyra den konfidentialitet, integritet eller tillgänglighet som dessa verktyg skyddar.
Att minska frekvensen för säkerhetskorrigeringar för att begränsa prestandapåverkan kan göra en arbetsbelastning mer sårbar för nya hot.
Att ta bort brandväggsregler från nätverksflöden för att förbättra nätverksfördröjningen kan tillåta oönskad kommunikation.
Att minimera datavalidering eller innehållssäkerhetskontroller för snabbare databehandling kan äventyra dataintegriteten, särskilt om indata är skadliga.
Att använda mindre entropi i krypterings- eller hashalgoritmer, till exempel på initieringsvektorn (IV), är effektivare men gör krypteringen enklare att knäcka.
Kompromiss: Ökad arbetsbelastningsyta. Säkerhet prioriterar en reducerad och innesluten yta för att minimera attackvektorer och minska hanteringen av säkerhetskontroller.
Prestandacentrerade molndesignmönster kräver ibland införandet av ytterligare komponenter. Dessa komponenter ökar arbetsbelastningens yta. De nya komponenterna måste skyddas, eventuellt på sätt som inte redan används i systemet, och de ökar ofta efterlevnadsomfånget. Tänk på de här komponenterna som ofta läggs till:
En meddelandebuss för belastningsutjämning
En lastbalanserare för autoskalningsrepliker
Avlasta data till cacheminnen, nätverk för programleverans eller nätverk för innehållsleverans
Avlastning av bearbetning till bakgrundsjobb eller till och med klientberäkning
Kompromiss: Ta bort segmentering. Säkerhetspelare prioriterar stark segmentering för att aktivera detaljerade säkerhetskontroller och minska explosionsradien.
Att dela resurser genom ökad densitet är en metod för att förbättra effektiviteten. Exempel är scenarier med flera klientorganisationer eller att kombinera olika program i en arkitektur på en gemensam programplattform. Den ökade densiteten kan leda till följande säkerhetsproblem:
Ökad risk för obehörig lateral förflyttning från en klientorganisation till en annan.
En delad arbetsbelastningsidentitet som bryter mot principen om minsta behörighet och döljer enskilda granskningsloggar i åtkomstloggar.
Perimetersäkerhetskontroller, till exempel nätverksregler, som reduceras för att täcka alla samlokaliseringskomponenter, vilket ger enskilda komponenter mer åtkomst än nödvändigt.
En kompromiss mellan programplattformsvärden eller en enskild komponent på grund av en större explosionsradie. Den här ökningen orsakas av enklare åtkomst till samlokala komponenter.
Samlokalisera olika komponenter som leder till fler komponenter i omfånget för efterlevnad på grund av deras delade värd.
Prestandaeffektivitetsavvägningar med kostnadsoptimering
Kompromiss: För mycket tillgång för efterfrågan. Både kostnadsoptimering och prestandaeffektivitet prioriterar att ha tillräckligt med tillgång för att tillgodose efterfrågan.
Överetablering är en risk när team försöker minimera prestandaproblem i en arbetsbelastning. Några vanliga orsaker till överetablering är:
- Den inledande kapacitetsplaneringen missbedömdes eftersom teamet endast fokuserade på uppskattningar av högsta belastning, vilket försummade strategier för topputjämning i arbetsbelastningsdesignen.
- Skala upp eller ut en resurs under ett felsökningssteg i ett incidentsvar.
Autoskalning kan vara felkonfigurerad. Några exempel på felkonfigurerad autoskalning är:
- Att skala upp med minimala förändringar i efterfrågan eller en utökad nedkylningsperiod kan medföra mer kostnader än vad efterfrågan kräver.
- Att använda autoskalning utan en angiven övre gräns kan leda till okontrollerad tillväxt på grund av systemfel eller missbruk och överskrida de förväntade arbetsbelastningskraven.
Att expandera till flera regioner kan förbättra prestandan genom att föra arbetsbelastningar närmare användaren och kan undvika tillfälliga begränsningar för resurskapacitet. Den topologin lägger dock också till komplexitet och resursduplicering.
Kompromiss: Fler komponenter. En kostnadsoptimeringsteknik är att konsolidera med ett mindre antal resurser genom att öka densiteten, ta bort duplicering och samlokalisera funktioner.
Prestandainriktade molndesignmönster kräver ibland införandet av extra komponenter. Dessa extra komponenter leder vanligtvis till en total kostnadsökning för arbetsbelastningen. Du kan till exempel inkludera en meddelandebuss för belastningsutjämning eller avlastning av uppgifter till ett program- eller innehållsleveransnätverk för bättre svarstider.
Med resurssegmentering kan olika delar av en arbetsbelastning ha distinkta prestandaegenskaper, vilket möjliggör oberoende justering för varje segment. Det kan dock öka de totala ägandekostnaderna eftersom det kräver flera optimerade segment i stället för en enda generaliserad komponent.
Kompromiss: Ökade investeringar på objekt som inte är anpassade till funktionskraven. En metod för kostnadsoptimering är att utvärdera värdet som tillhandahålls av alla lösningar som distribueras.
Premium-tjänster och SKU:er kan hjälpa en arbetsbelastning att uppfylla prestandamålen. Dessa tjänster kostar vanligtvis mer och kan ge extra funktioner. De kan vara underutnyttjade om många av premiumfunktionerna inte används specifikt för att uppfylla prestandamålen.
En högpresterande arbetsbelastning kräver telemetridata för observerbarhet som måste överföras och lagras. En ökning av prestandatelemetrin som samlas in kan öka kostnaden för överföring och lagring av telemetridata.
Prestandatestningsaktiviteter lägger till kostnader som inte är associerade med produktionssystemets värde. Exempel på prestandatestningskostnader är:
- Instansiera miljöer som är dedikerade till prestandainriktade tester.
- Använda specialiserade prestandaverktyg.
- Ägna tid åt att köra testerna.
Medlemmar i utbildningsteamet för specialiserade prestandaoptimeringsuppgifter eller betalning för prestandajusteringstjänster ökar kostnaden för en arbetsbelastning.
Prestandaeffektivitetsavvägningar med operational excellence
Kompromiss: Minskad observerbarhet. Observerbarhet är nödvändigt för att tillhandahålla en arbetsbelastning med meningsfulla aviseringar och hjälpa till att säkerställa ett lyckat incidenthanteringssvar.
Att minska logg- och måttvolymen för att minska bearbetningstiden för insamling av telemetri i stället för andra uppgifter minskar systemets övergripande observerbarhet. Några exempel på den resulterande minskade observerbarheten är:
- Det begränsar de datapunkter som används för att skapa meningsfulla aviseringar.
- Det leder till luckor i täckningen för incidenthanteringsaktiviteter.
- Det begränsar observerbarheten i säkerhetskänsliga eller efterlevnadskänsliga interaktioner och gränser.
När prestandadesignmönster implementeras ökar ofta arbetsbelastningens komplexitet. Komponenter läggs till i kritiska flöden. Strategin för arbetsbelastningsövervakning och prestandaövervakning måste innehålla dessa komponenter. När ett flöde sträcker sig över flera komponenter eller programgränser ökar komplexiteten i övervakningen av flödets prestanda. Flödesprestanda måste korreleras mellan alla sammankopplade komponenter.
Kompromiss: Ökad komplexitet i verksamheten. En komplex miljö har mer komplexa interaktioner och en högre sannolikhet för en negativ inverkan från rutin-, ad hoc- och nödåtgärder.
Att förbättra prestandaeffektiviteten genom att öka densiteten ökar risken i operativa uppgifter. Ett fel i en enda process kan ha en stor explosionsradie.
När prestandadesignmönster implementeras påverkar de operativa procedurer som säkerhetskopior, nyckelrotationer och återställningsstrategier. Till exempel kan datapartitionering och horisontell partitionering komplicera rutinuppgifter när teamen försöker se till att dessa uppgifter inte påverkar datakonsekvensen.
Kompromiss: Kulturstress. Operational Excellence bygger på en kultur av skuldlöshet, respekt och kontinuerlig förbättring.
Att utföra rotorsaksanalys av prestandaproblem identifierar brister i processer eller implementeringar som kräver korrigering. Teamet bör betrakta övningen som en utbildningsmöjlighet. Om teammedlemmar beskylls för problem kan moralen påverkas.
Rutin- och ad hoc-processer kan påverka arbetsbelastningens prestanda. Det anses ofta vara bättre att utföra dessa aktiviteter under låg belastning. Tider med låg belastning kan dock vara obekväma eller utanför ordinarie arbetstid för de teammedlemmar som ansvarar för eller är skickliga på dessa uppgifter.
Relaterade länkar
Utforska kompromisserna för de andra pelarna: