Rekommendationer för att optimera flödeskostnader

Gäller för denna checklista för Azure Well-Architected Framework Cost Optimization:

CO:09 Optimera flödeskostnader. Justera kostnaden för varje flöde med flödesprioritet. När du prioriterar flöden bör du tänka på funktionerna, funktionerna och de icke-funktionella kraven för varje flöde. Att optimera flödesutgifter kräver ofta strategiska kompromisser.

Den här guiden beskriver rekommendationerna för att optimera kostnaden för vart och ett av flödena i din arbetsbelastning. Kostnadsoptimering av flödena i en arbetsbelastning innebär att strategiskt allokera och hantera resurser för att minimera utgifter samtidigt som prestandan bibehålls. Den här optimeringen är avgörande eftersom den säkerställer effektiv användning av investerade resurser, minskar onödiga utgifter och förbättrar den totala avkastningen på investeringen för infrastrukturen. Om du inte kostnadsoptimerar flödena i en arbetsbelastning riskerar du överförbrukning på resurser, vilket resulterar i uppblåsta driftskostnader och minskad lönsamhet.

Definitioner

Period Definition
Frikoppla Strategin att ta bort ett flöde från en resurs som innehåller flera flöden och placera det i en separat resurs.
Flow 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.
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 Sökvägar eller sekvenser av åtgärder som användarna vidtar inom ett program eller system.

Viktiga designstrategier

Investera mer i högprioriterad flöden än i flöden med lägre prioritet. Att justera flödesprioritet och utgifter kan innebära avkoppling av flöden som för närvarande delar samma resurs. Det kan också innebära att kombinera flöden som har liknande krav men som körs på separata resurser. Anta till exempel att du har ett webbprogram som innehåller flera flöden, till exempel användarregistrering, inloggning och databearbetning. Dessa flöden körs på en enskild server, även om de har olika resursbehov. För att optimera både kostnader och prestanda kan du separera flöden eller kombinera flöden:

  • Avgränsa flöden. Du kan till exempel frikoppla användarregistreringsflödet från de andra och flytta det till en dedikerad server med lägre kostnad. Det här flödet är viktigt men inte resursintensivt, så det är en bra kandidat för en billigare server.

  • Kombinera flöden. Du kan till exempel kombinera inloggnings- och databearbetningsflöden, som båda har högre resurskrav, och köra dem tillsammans på en högpresterande server. Genom att kombinera dessa flöden kan servern effektivt hantera de resursintensiva behoven i båda flödena. Den optimerar prestanda och kostnader.

I en arbetsbelastning kan det finnas olika typer av flöden eller sökvägar som du behöver tänka på. Den här guiden fokuserar på följande flödestyper:

  • Systemflöden. Att optimera systemflöden innebär att effektivisera kommunikationen och interaktionen mellan systemkomponenter, minimera flaskhalsar och säkerställa effektiv resursanvändning.

  • Användarflöden. Att optimera användarflöden innebär att förbättra användarupplevelsen, minska friktionspunkter och säkerställa smidig navigering och interaktion i programmet eller systemet.

Skapa en inventering av flöden

En flödesinventering är en omfattande lista och beskrivning av alla sekvenser av åtgärder, dataövergångar och systeminteraktioner i en arbetsbelastning. En flödesinventering är det första steget för att säkerställa att investeringarna överensstämmer med flödens prioritet. Du bör bara optimera flöden när du förstår deras syfte och beroenden fullt ut. Här följer steg för att skapa en inventering av arbetsbelastningsflöden:

  1. Dokumentflöden. Börja med att dokumentera och lista alla befintliga flöden i din arbetsbelastning för att få en förståelse för systemets omfattande tillstånd. Inkludera varje sekvens med åtgärder, dataövergångar och systeminteraktioner. Bekanta dig med alla komponenter, till exempel externa tjänster, databaser, mellanprogram och integreringar från tredje part. Dessutom kan du spåra eller uppskatta mängden begäranden över tid.

  2. Visualisera flöden. För att få ett tydligare perspektiv kan du representera dina resultat visuellt, eventuellt i flödesscheman eller diagram. Visualiseringar hjälper dig att se beroenden mellan komponenter. Överväg att använda ett verktyg som Visio för att hjälpa dig med visualiseringarna.

  3. Kategorisera flöden. Paketera liknande flöden med hänsyn till attribut som deras funktioner (till exempel autentisering, datahämtning och transaktionsbearbetning), affärskritiskhet eller de resurser som de använder (CPU, minne eller bandbredd).

Prioritera flöden

Flödesprioritering är processen att klassificera flöden baserat på deras påverkan på affärsresultat, konsekvenser för användarupplevelsen och de resurser de använder. Kritiska flöden kräver ofta högre tillgänglighetsnivåer, snabbare återställningstider och bättre prestanda för att uppfylla arbetsbelastningsmålen. Genom att prioritera flöden kan du bättre anpassa utgifterna till flödesprioritet. Tänk på följande steg för att prioritera flöden:

  • Identifiera flödesvärde. När du optimerar arbetsbelastningsflödeskostnaderna måste du identifiera det flöde som ger mest värde. Du vill inte spendera mer än ett flöde är värt. I stället för att helt enkelt sänka kostnaderna bör du överväga att flytta kostnader för att prioritera de mer värdefulla flödena. Ditt utcheckningsflöde är till exempel viktigt för företag, men det är inte inköpshistoriken. Du bör allokera fler resurser och budget till utcheckningsflödet.

    Lågprioriterad flöden har lägre förväntningar på tillgänglighet, återställning och prestanda. Du kan minska kostnaderna genom att använda billigare konfigurationer för att minska prestanda, tillgänglighet eller utgifter för affärskontinuitet.

  • Överväg flödesmått. Om du har svårt att prioritera dina flöden bör du överväga de tillgänglighets- och återställningsmål som du har tilldelat dem. Kritiska flöden har ofta höga tillgänglighetskrav och serviceavtal (SLA). Flöden som är associerade med ett lägre RPO och RTO är viktigare än flöden som har ett högre RPO och RTO.

Optimera oberoende flöden

Ibland körs dina flöden redan på olika resurser. I dessa fall kan du enklare utvärdera och optimera utgifter. Utvärdera de komponenter och processer som ingår i varje oberoende flöde för att avgöra om det finns sätt att optimera eller förenkla dem. Du kan optimera oberoende flöden genom att följa dessa steg:

  • Eliminera onödiga komponenter. Ta bort eventuella onödiga element som inte bidrar till flödets kärnfunktioner, vilket minskar komplexiteten och kostnaderna.

  • Gör om flödet. Överväg att designa om flödets arkitektur för att förbättra dess effektivitet. Du kan till exempel ändra åtgärdssekvensen, minska svarstiden eller förbättra dataöverföringshastigheten.

  • Välj en lämplig prestandanivå. Olika flöden kan ha olika krav när det gäller bearbetningshastighet, minne eller andra resursmått. Se till att välja en resursnivå som överensstämmer väl med varje flödes specifika krav.

  • Justera skalningsinställningarna. Om ett flöde upplever variabel efterfrågan kan du överväga att implementera automatisk skalning för att dynamiskt justera resurser efter realtidsbehov, vilket optimerar kostnaderna.

  • Finjustera konfigurationer. Finjustera andra inställningar, till exempel nätverk eller datalagringsalternativ, för att bättre anpassa till flödets prestanda- och budgetkrav.

Avgränsa olika flöden

Att separera olika flöden till olika resurser är en process för att allokera distinkta uppgifter med varierande beräkningsbehov till dedikerade resurser. Olika flöden är flöden som har olika attribut. Dessa attribut kan omfatta beräkningskrav, databeroenden, I/O-åtgärder, svarstidskänslighet, säkerhetsbehov och efterlevnadskrav. Det är ofta mer kostnadseffektivt att köra olika typer av flöden på separata resurser. Detta möjliggör exakt resursallokering för varje flöde, vilket minskar onödiga utgifter och säkerställer maximal effektivitet.

Överväg att separera olika flöden som för närvarande kombineras. Den här separationen ökar skalbarheten, feltoleransen och anpassningsbarheten och effektiviserar även kostnaderna. Genom att se till att varje flöde fungerar oberoende av varandra minskar du interferensriskerna och kan allokera resurser mer kostnadseffektivt baserat på varje flödes prioritet. Anta till exempel att du samlokaliserar CRM (användarflöde) med en datamotor (dataflöde). Användartrafik till CRM-systemet under kontorstid kan göra datamotorn långsammare. När du frikopplar flöden kan datamotorn skala varje komponent eller tjänst oberoende av arbetsbelastningens efterfrågan. Den här avkopplingen optimerar resursallokeringen och minskar kostnaderna.

Kombinera liknande flöden

Att kombinera liknande flöden till en enskild resurs är en process för att konsolidera uppgifter eller processer med jämförbara attribut och använda delade resurser för dem. Den här strategin eliminerar redundans och säkerställer en effektivare användning av resurser, vilket leder till betydande kostnadsbesparingar. Liknande typer av flöden har liknande attribut. Du kan överväga samma attribut som du tittar på när du separerar olika flöden: beräkningskrav, databeroenden, I/O-åtgärder, svarstidskänslighet, säkerhetsbehov och efterlevnadskrav. Här följer några exempel där en kombination av liknande arbetsbelastningsflöden för att använda samma resurs kan leda till stora besparingar:

  • Webbservrar. I stället för att ange separata webbservrar för varje program bör du överväga att konsolidera dem, särskilt om deras trafik inte är konsekvent hög. En delad webbserver, tillsammans med en omvänd proxyserver, kan effektivt hantera och dirigera trafik till flera program.

  • API-gatewayer. I stället för att underhålla enskilda API-gatewayer för separata mikrotjänster eller program kan du använda en centraliserad API-gateway för att effektivisera begäranden och dirigera dem till den relevanta tjänsten. Detta gör hanteringen enklare och minskar även kostnaderna.

  • Loggbearbetning. I stället för att ha flera program eller tjänster som var och en använder sina egna loggbearbetningsinstanser bör du överväga att dirigera dem alla till ett verktyg för delad loggbearbetning. Den här metoden minimerar antalet aktiva instanser, vilket innebär direkta kostnadsbesparingar.

  • Autentiseringstjänster. Om flera program distribuerar sina egna distinkta autentiseringsmekanismer introduceras redundans. Integreringen av en lösning för enkel inloggning (SSO) eller en gemensam autentiseringstjänst minskar den här dupliceringen och optimerar resursanvändningen, vilket minskar kostnaderna.

Risk: Missta inte sammanträffanden med design. Två flöden som ser liknande ut tjänar inte nödvändigtvis samma syfte. Du måste förstå funktionen och designen för varje flöde innan du sammanfogar eller ändrar dem. Feltolkning av ett flöde genom att enbart fokusera på dess utseende kan leda till oavsiktliga konsekvenser och störa den tjänst eller process som det stöder. Om flera flöden har samma funktion och det inte finns några märkbara skillnader i deras design eller avsikt bör du överväga att konsolidera dem.

Övervaka flöden kontinuerligt

Typen av flöden och arbetsbelastningar kan ändras över tid, så du måste granska flödesutgifterna för att säkerställa att kostnaderna överensstämmer med prioriteringarna. Utvärdera resursanvändningen för varje flöde genom att analysera beräknings-, lagrings- och nätverksanvändningen som är associerad med varje flöde. Identifiera eventuella ineffektiviteter eller områden där resurserna är underutnyttjda. Den här analysen hjälper dig att hitta möjligheter till kostnadsoptimering. Här följer några saker att tänka på när du granskar flödesanvändningen:

  • Analysera användningsmönster. Analysera flödens användningsmönster. Vissa flöden kan vara mer aktiva under vissa tider på dagen eller månaden, medan andra kan ha en konsekvent belastning. Genom att förstå dessa mönster kan du förutsäga resursbehov och justera allokeringen för att undvika flaskhalsar och överetablering.

  • Övervaka relevanta mått. Fastställ de mått som kan hjälpa dig att utvärdera effektiviteten och kostnadseffektiviteten för varje flöde. Överväg processoranvändning, kostnader för dataöverföring, transaktionskostnader och lagringsfotavtryck. Använd övervakningsverktyg för att samla in detaljerade mått om resursanvändning och prestanda.

  • Överväg löpande underhåll. Överväg kostnaden för underhåll, särskilt när du använder infrastruktur som en tjänst-lösningar som virtuella datorer. Du måste ta hänsyn till aktiviteter som korrigeringar, uppgraderingar, säkerhetskopior, övervakning och säkerhet.

Under analysen identifierar du eventuella ineffektiviteter eller områden där resurser inte används effektivt. Överväg inaktiva beräkningsinstanser, oanvända data och låg nätverksbandbredd. Dessa ineffektiviteter kan tyda på möjligheter till kostnadsoptimering.

Azure-underlättande

Prioritera, optimera och övervaka flöden: Verktyget Användarflöde i Application Insights ger en visuell representation av användarnavigeringen på webbplatsens sidor och funktioner. Det här verktyget hjälper dig att identifiera områden där användare ofta lämnar, upprepar åtgärder eller följer specifika sökvägar. Genom att jämföra det faktiska användarbeteendet med dina förväntade resultat och mål kan du identifiera kritiska flöden. Du kan också optimera potentiella problem, till exempel höga omsättningshastigheter, repetitiva åtgärder eller designfel. Verktyget möjliggör också anpassad egenskapsfiltrering genom dimensioner, vilket ger en mer skräddarsydd analys.

Azure Monitor hjälper dig att få insikter om dina programs prestanda och hälsa. Den tillhandahåller funktioner för övervakning och diagnostik. Med de här funktionerna kan du identifiera flaskhalsar i prestanda, optimera resursanvändningen och identifiera och felsöka problem som kan påverka kostnaderna.

Log Analytics är ett verktyg som gör att du kan samla in, analysera och visualisera loggdata från olika källor. Genom att använda Log Analytics kan du få insikter om dina program- och infrastrukturloggar, identifiera trender och optimera kostnader genom att hantera användning och datakvarhållning. Överväg att samlokalisera loggar och använda dedikerade lösningar i stället för delade för att bättre hantera kostnader.

Checklista för kostnadsoptimering

Se den fullständiga uppsättningen rekommendationer.