Rekommendationer för att optimera miljökostnader

Gäller för den här rekommendationen om kostnadsoptimering i Azure Well-Architected Framework:

CO:08 Optimera miljökostnader. Justera utgifterna för att prioritera förproduktions-, produktions-, drifts- och haveriberedskapsmiljöer. För varje miljö bör du överväga nödvändig tillgänglighet, licensiering, drifttimmar och villkor samt säkerhet. Icke-produktionsmiljöer bör emulera produktionsmiljön. Implementera strategiska kompromisser i icke-produktionsmiljöer.

Den här guiden beskriver rekommendationerna för kostnadsoptimering av arbetsbelastningsmiljöer. Varje miljö bör skräddarsys för sitt specifika syfte och optimeras för kostnadseffektivitet. Det är viktigt att göra strategiska kompromisser och allokera resurser där de är viktigast, utan att kompromissa med kritiska komponenter. Genom att behandla miljöer på olika sätt och optimera dem i enlighet med detta kan du uppnå en balans mellan kostnadsoptimering och att uppfylla de nödvändiga målen.

Definitioner

Period Definition
Mål för återställningspunkt (RPO) Den maximala godkända varaktigheten för dataförlust under en incident.
Mål för återställningstid (RTO) Den maximala godkända tiden som ett program kan vara otillgängligt efter en incident.
Serviceavtal (SLA) Ett avtal mellan tjänsteleverantören och tjänstekund. Avtalet definierar servicenivåmålen (SLO). Om avtalet inte uppfylls kan det få ekonomiska konsekvenser för tjänsteleverantören.

Viktiga designstrategier

Målet med att optimera miljökostnaderna är att hitta rätt balans mellan värde, kostnad och risk för varje miljö, inklusive miljöer för produktion, förproduktion och haveriberedskap (DR). Anpassa varje miljö för dess specifika användning för att spara pengar och effektivt använda resurser. Fastställ fördelarna med varje miljö, till exempel effektivitet eller kundnöjdhet. Du vill utvärdera avkastningen på investeringen (ROI) för miljön, även om den inte gör någon direkt vinst. Spendera mer pengar på högriskmiljöer för att minska problem och spara pengar på miljöer med låg risk. Sträva efter att balansera värde, kostnad och risk i varje miljö.

Utvärdera miljövärde

Att utvärdera värdet för varje miljö innebär att förstå dess bredare effekt på verksamheten, mäta användarnöjdhet och fastställa hur den överensstämmer med övergripande organisatoriska mål. Den här utvärderingen hjälper dig att fatta välgrundade beslut om resursallokering och anpassa kostnaden till miljöprioriteringar. Kärnan i värdet sträcker sig utöver hur mycket intäkter en miljö genererar. När du utvärderar en miljös värde måste du prioritera utgifter på ett sätt som passar arbetsbelastningens mål. Överväg följande faktorer för att utvärdera värdet för varje miljö:

  • Tänk på användaren: Överväg vem som använder varje miljö och vad de behöver från den. Kunder använder till exempel produktionsmiljön, som måste vara tillförlitlig och uppfylla specifika serviceavtal för prestanda och drifttid.

    Å andra sidan är utvecklingsmiljön främst avsedd för arbetsbelastningsteamet, till exempel utvecklare och testare. Den här miljön behöver inte uppfylla kundriktade serviceavtal, men den bör ha de verktyg och resurser som krävs för att teamet ska fungera effektivt.

    När du förstår användarnas unika behov i varje miljö kan du bättre allokera resurser och undvika extra kostnader. Den här undvikande hjälper till att säkerställa att varje miljö är funktionell och kostnadseffektiv.

  • Anpassa till organisationens värdemått: Anpassa dina kostnadsminskningar till organisationens prioriteringar, t.ex. vinst eller medarbetartillfredsställelse. För varje miljö bör du förstå hur framgång definieras, så att du kan hålla dina åtgärder på målet. Om din organisation till exempel fokuserar på vinstmaximering eller medarbetarnas nöjdhet kan du anpassa dina utgiftsbeslut till dessa mått.

Fastställa miljökostnader

Att fastställa miljökostnader handlar om att känna till kostnaderna för infrastruktur, tjänster, licenser och driftskostnader i varje arbetsbelastningsmiljö. Kostnadshanteringsverktyg är nyckeln till att få insikter om utgiftsmönster och trender i olika miljöer. Tänk på följande strategier för att fastställa miljökostnader:

  • Identifiera kostnadsdrivande faktorer: Identifiera de viktigaste faktorerna som driver kostnader i varje miljö. Dessa faktorer kan vara resursutnyttjande, lagringsanvändning, datakvarhållning, dataöverföring och specifika tjänster.

  • Utvärdera risker: Utvärdera de risker som är kopplade till utgiftsbeslut och deras potentiella effekt på miljön och verksamheten. Överväg faktorer som datasäkerhet, efterlevnad, prestanda, granskningar och SLA-krav.

  • Övervaka och justera dina utgifter: Övervaka och analysera utgiftsmönster, värdeleverans och riskfaktorer kontinuerligt. Granska och justera regelbundet dina strategier för utgiftsoptimering när behoven i miljön och verksamheten utvecklas.

Optimera produktionsmiljön

Att optimera kostnaderna i produktionsmiljön innebär att implementera strategier för att minska onödiga utgifter och förbättra driftseffektiviteten. Fokusera på att differentiera produktionsdistributioner och uppfylla användarnas behov. Här följer rekommendationer för att optimera produktionsmiljön:

  • Differentiera regioner: Spendera mindre på regioner som betjänar färre kunder. Du bör till exempel investera mer i en region som hanterar 90 procent av dina användare än i en region som betjänar 10 procent av användarna. Justera distributionsstrategin så att den uppfyller kraven för varje region och användarsegment.

  • Differentiera skalning: Implementera horisontella och vertikala skalningsstrategier. Skala resurser effektivt för att möta efterfrågan utan överetablering.

  • Differentiera infrastrukturen: Välj kostnadseffektiva maskinvaru- och infrastrukturlösningar som uppfyller de prestanda och skalbarhet som krävs. Överväg faktorer som prestanda, kostnad, tillförlitlighet och skalbarhet.

  • Justera klientmodeller: Anpassa miljön baserat på klientorganisationsmodellen. Du kan till exempel spendera mer på tjänster och funktioner för betalda klienter och spendera mindre för icke-betalande klienter.

Optimera DR-miljön

En DR-miljö refererar till infrastruktur och processer som en arbetsbelastning använder för att återställa efter en störande händelse. Störande händelser omfattar naturkatastrofer, cyberattacker och maskinvarufel. Balansera kostnaden för att underhålla en DR-miljö och de potentiella effekterna av en avbrottshändelse. Tänk på följande strategier:

  • Utvärdera kritiska system och data: Utvärdera vikten av system och data för att fastställa vilken nivå av skydd och resurser som krävs för varje komponent.

  • Fastställ mål för återställningspunktmål och återställningspunktmål: Definiera godkända gränser för stilleståndstid och dataförlust för varje system eller program för att fastställa utformningen av DR-miljön.

  • Optimera en kall DR-miljö: En kall DR-miljö har lite eller ingen infrastruktur eller tjänster som körs. Du kan använda infrastruktur som kod (IaC) för att snabbt distribuera infrastruktur under en störande händelse. Dina principer för säkerhetskopiering och lagring måste uppfylla RPOs och RTO:er i miljön. Se till att mängden och frekvensen för säkerhetskopiering av data inte är mer robust än vad som behövs.

    Kompromiss: En kall DR-miljö är ett kostnadseffektivt alternativ, men du kan ha långa återställningstider.

  • Optimera en hot DR-miljö: Alla infrastrukturer och tjänster körs i en hot DR-miljö. Data speglar den primära platsen i realtid. Det ger nästan omedelbar redundans och minimal dataförlust om det uppstår en katastrof. Överväg en aktiv-aktiv-distribution för att optimera kostnaderna.

  • Optimera en varm DR-miljö: En varm DR-metod är en medelväg mellan en kall DR-miljö och en varm DR-miljö. En varm miljö är delvis aktiv och synkroniseras regelbundet med den primära platsen. Den erbjuder en balans mellan kostnad och återställningstid. Det är dock den minst kostnadsoptimerade metoden. Överväg en kall eller frekvent metod för att optimera kostnaderna.

Optimera förproduktionsmiljöer

Att optimera förproduktionsmiljöer innebär att strategiskt hantera resurser inom utvecklings-, testnings- och mellanlagringsområden för att nära simulera produktionen samtidigt som onödiga kostnader minskas. Förproduktionsmiljöer kräver inte full skalning och tillgänglighet för produktionsmiljöer. De största möjligheterna är att skräddarsy dessa miljöer efter specifika testnings- och utvecklingsbehov utan att duplicera produktionen exakt. Kostnadsminskningsområden omfattar användning av resurser med lägre kostnad, avstängning av onödiga tjänster och tillämpning av rabatter som erbjuds för förproduktionsanvändning. Överväg följande strategier för att optimera förproduktionsmiljöer:

Utvärdera förproduktionsmiljöer

Otillräcklig eller felaktig allokering av förproduktionsmiljöer kan leda till överetablering eller underetablering av resurser. Om du vill utvärdera förproduktionsmiljöerna för din arbetsbelastning bör du överväga följande vägledning:

  • Förstå miljötyperna: Identifiera vilka typer av förproduktionsmiljöer, till exempel utveckling, testning och mellanlagring, som du behöver för din arbetsbelastning. Varje miljö bör ha en definierad roll och specifik funktion för att säkerställa effektiv resursallokering.

  • Anpassa efter användarnas krav: Innan du konfigurerar förproduktionsmiljöer bör du förstå användarnas krav och förväntningar. Skräddarsy funktionerna och specifikationerna baserat på deras behov för att undvika onödiga utgifter för funktioner eller resurser.

  • Konsolidera miljön: Kontrollera om du kan kombinera miljöer utan att kompromissa med deras funktioner. Kombinera miljöer som har funktioner som inte överlappar varandra. Du kan till exempel sammanfoga en användaracceptansmiljö med en kvalitetssäkringsmiljö. Funktionerna är distinkta och en miljö är vanligtvis inaktiv när den andra används.

    Risk: Var försiktig när du kombinerar miljöer för att säkerställa att du inte inför konflikter eller komprometterar testnings- eller utvecklingsprocesserna.

Följande tabell innehåller exempel på vanliga förproduktionsmiljöer.

Exempel på förproduktionsmiljö Description
Utvecklingsmiljö Utvecklare använder den här miljön för att skriva och testa kod. Det ger ett sandbox-utrymme så att utvecklare kan experimentera, skapa och integrera kodändringar.
Kvalitetssäkringsmiljö Den här miljön är avsedd för kvalitetssäkringsaktiviteter. Det för testning för att identifiera och åtgärda buggar eller problem innan du distribuerar till produktionsmiljön.
Säkerhetsmiljö Den här miljön är avsedd för säkerhetstestning. Det är för att säkerställa att ett program är säkert mot hot och sårbarheter.
Testmiljö för användargodkännande I den här miljön testar slutanvändare och intressenter ett program för att verifiera dess funktioner och se till att det uppfyller kraven och förväntningarna.
Mellanlagringsmiljö Den här miljön liknar produktionsmiljön. Det är för slutlig testning och validering innan du distribuerar till produktion.

Tillämpa styrning

Att tillämpa styrning handlar om att begränsa distributionsalternativ i förproduktionsmiljöer för att kontrollera utgifter och minimera risker. I förproduktion har du flexibilitet att skräddarsy konfigurationer och distribuera resurser. Ju mer förproduktionsmiljön avviker från produktionsmiljön, desto större är den potentiella risken. Använd styrning för att begränsa förproduktionsmiljöer. Läs igenom följande riktlinjer:

  • Begränsa prestandanivåer: Utvärdera prestandakraven för dina förproduktionsmiljöer. Välj prestandanivåer som balanserar kostnader och prestanda. En tjänst har ofta olika prestandanivåer, och vissa av dessa nivåer är lämpligare för testning. Vissa tjänster har nivåer som erbjuder produktionsliknande funktioner men som inte har något serviceavtal. Dessa tjänster minskar kostnaderna men ger fortfarande de nödvändiga funktionerna för testning och utveckling.

  • Förstå förproduktions-SKU:er: Vissa SKU:er är utformade för utvecklingsmiljöer. Utvärdera tjänster och nivåer för att optimera kostnaderna. Välj lågprestandanivåer om arbetsbelastningen inte kräver höga prestanda.

  • Kontrollera antalet instanser och processorer: Bestäm det optimala antalet instanser och CPU-resurser som din förproduktionsmiljö behöver baserat på arbetsbelastningskrav. Undvik överetablering av resurser för att minimera kostnaderna.

  • Begränsa kvarhållning och loggning: Definiera kvarhållningsprinciper för loggar och data i förproduktionsmiljöer. Överväg den nödvändiga varaktigheten för att behålla loggar och data baserat på efterlevnadskrav och kostnadsöverväganden. Undvik överdriven loggning och kvarhållning för att minska lagringskostnaderna.

  • Använd en konsekvent CPU-arkitektur: Använd samma CPU-arkitektur i förproduktion och produktion. X86-program körs till exempel inte internt i Azure Resource Manager och vice versa. Använd samma CPU-arkitektur som din produktionsmiljö för att säkerställa kompatibilitet och minimera potentiella problem.

  • Använd samma operativsystem: Undvik att ändra operativsystemet (till exempel från Windows till Linux) eller kernel i förproduktionsmiljöer. Programvara som skapats för Windows körs ofta inte internt i Linux utan ett kompatibilitetslager och vice versa. Filsystemen och katalogstrukturerna skiljer sig åt, vilket kan orsaka problem med programkorrigeringar. Konsekventa miljöer bidrar till att minska risken för kompatibilitetsproblem och säkerställa smidiga distributioner.

  • Begränsad skalning: För att optimera kostnaderna kan du begränsa automatiseringen för att minska den skenande automatiseringen. Ange till exempel en maximal skalningsgräns till tre i utvecklingsmiljön och ange den till 10 i produktionsmiljön. Begränsa skalning för att styra resursanvändningen och automatiseringskostnaden.

  • Inaktivera onödiga resurser: Inaktivera resurser när de inte används aktivt, till exempel under lediga timmar och helger. Du kan använda automatiseringsverktyg eller skript för att schemalägga avstängning och start av resurser. Vissa leverantörer tillhandahåller API:er som du kan använda för att programmatiskt stoppa och starta resurserna. Överväg att använda IaC för att skapa tillfälliga miljöer som du kan ta bort när du inte längre behöver dem.

  • Begränsa tillgängliga regioner: Överväg den potentiella fördelen med att köra förproduktionsmiljöer i olika regioner där Azure-resurser kan vara billigare. Begränsa förproduktionsdistributioner till dessa regioner för att optimera kostnaden för dessa miljöer.

Balansera likheter med produktion

Det är ofta onödigt och dyrt för förproduktionsmiljöer att spegla produktionsmiljön exakt. Målet är att säkerställa att varje förproduktionsmiljö skiljer sig på lämpligt sätt från produktionen för att undvika onödiga kostnader. Men när förproduktion och produktion skiljer sig åt finns det risk för att ett fel distribueras till produktion. Ju mer olika dessa miljöer är, desto större risk finns det. Genom att anpassa förproduktionsmiljön efter dina behov kan du hantera risker samtidigt som du optimerar kostnaderna. Tänk på följande rekommendationer för att balansera likheten med produktionen:

  • Undvik exakta repliker: Undvik att göra förproduktionsmiljön till en exakt kopia av produktionen. Det kan i onödan öka kostnaderna. Skapa en förproduktionsmiljö som är kostnadseffektiv men som gör att du kan upptäcka och åtgärda potentiella risker före distributionen.

  • Undvik extrema avvikelser: Undvik överdriven avvikelse från produktion, till exempel användning av olika tjänster. Olika tjänster kanske inte simulerar verkliga risker korrekt. Fastställ ett risktröskelvärde och överskrid inte tröskelvärdet enbart för att spara pengar.

  • Förkorta körningen: Överväg att förkorta körningen av processer i förproduktionsfasen för att spara pengar. Var försiktig med nya säkerhetsrisker som kan uppstå, till exempel oupptäckta minnesläckor.

  • Granska licenser: Granska licensieringsplanerna för dina säkerhetsverktyg. Om antalet noder varierar avsevärt mellan dina konfigurationer för produktion och förproduktion bedömer du om dina behov av att finjustera kostnaderna utan att äventyra säkerheten.

Optimera utvecklingsmiljöer

Utvecklingsmiljöer är utformade för utveckling, testning och felsökning. De har kortare livscykel och skapas ofta efter behov och finns under en kort tid. Utvecklingsmiljöer har vanligtvis lägre krav på tillförlitlighet, kapacitet och säkerhet jämfört med andra förproduktions- och produktionsmiljöer. De kan ha färre funktioner och kan acceptera lägre resursanvändning. Så här optimerar du utvecklingsmiljön:

  • Utvärdera verktyg: Utvärdera regelbundet kostnadseffektiviteten för den aktuella verktygskonfigurationen, inklusive integrerade utvecklingsmiljöer (IDE:er), licenser och relaterade verktyg. Överväg kostnadsfria alternativ eller alternativ med öppen källkod som erbjuder liknande funktioner utan att äventyra kvaliteten. Utvärdera kontinuerligt behovet och effektiviteten av dessa verktyg när utvecklingslandskapet utvecklas.

  • Överväg maskinvara: Utvärdera kostnaden och prestandan för dina aktuella maskinvarukonfigurationer. Att investera i bättre och effektivare maskinvara kan förbättra produktiviteten och minska de långsiktiga kostnaderna. I stället för frekventa maskinvarubyten bör du överväga att uppgradera befintliga system för att förlänga livslängden och förbättra prestandan.

  • Optimera antalet miljöer: Analysera fördelar och nackdelar med individualiserade utvecklingsmiljöer jämfört med en delad miljö. Enskilda miljöer kan efterlikna produktionskonfigurationer, förhindra störningar bland utvecklare och erbjuda anpassade installationer. Skalning blir dock dyrare i takt med att antalet utvecklare ökar. Delade miljöer kan spara kostnader, men tillförlitlighetsproblem kan uppstå om problem påverkar hela utvecklingsteamet samtidigt. Hitta rätt balans baserat på kostnader, riskreducering, effektivitet och utvecklarnöjdhet.

  • Rensa regelbundet: Rensa och optimera utvecklingsmiljön rutinmässigt för att undvika ackumulering av överblivna resurser, oanvända data och koncepttestexperiment. Implementera rensningsprocesser eller automatiserade verktyg för att identifiera och ta bort resurser som inte används. Behåll endast viktiga och aktiva komponenter. Regelbunden rensning bidrar till att minska lagringskostnaderna och säkerställer effektiv resursanvändning.

  • Implementera exempelskalning: I stället för att skala alla komponenter till maximal kapacitet bör du överväga en exempelmetod där du selektivt skalar viktiga komponenter. Den här metoden kan vara kostnadseffektiv samtidigt som riskerna minimeras. Utvärdera förhållandet mellan risker och fördelar för att inte skala vissa element och ta hänsyn till den potentiella effekten på miljön.

  • Optimera datahantering: Utvecklingsmiljöer kan ha låga behov av datakvarhållning och säkerhetskopieringsfrekvens.

Överväg slutpunktsemulering

Du kan optimera kostnaderna i en förproduktionsmiljö med hjälp av slutpunktsemulering eller falska slutpunkter, särskilt för dyra resurser som GPU:er. Identifiera komponenter eller tjänster i din förproduktionsmiljö som är den dyraste eller resurskrävande. Använd falska slutpunkter för att simulera svaren från dessa kostsamma komponenter utan att anropa dem. Om du vill simulera API-svar kan du använda verktyg som WireMock, Postmans falska server eller anpassade implementeringar.

Emulering och falska slutpunkter bidrar till att spara kostnader, men du måste se till att de representerar produktionsmiljön i tillräcklig grad för testning. Skapa en balans mellan noggrannhet och kostnad för att undvika framtida problem i produktionen. Om GPU:er till exempel är en viktig kostnadsfaktor bör du överväga GPU-emulering för uppgifter som inte kräver verklig GPU-bearbetningskraft i förproduktionsfaser. Emulering kanske inte helt representerar prestanda eller egenheter för verkliga GPU:er, så använd det när exakt GPU-beteende inte är avgörande för förproduktionstestning.

Azure-underlättande

Fastställa och optimera miljökostnader:Microsoft Cost Management är en uppsättning verktyg som hjälper organisationer att övervaka, allokera och optimera kostnaden för sina Microsoft Cloud-arbetsbelastningar. Cost Management är tillgängligt för alla som har åtkomst till ett fakturerings- eller resurshanteringsomfång.

Azure Advisor är ett verktyg som ger rekommendationer för kostnadsoptimering, inklusive att identifiera områden med användning av virtuella datorer som behöver optimering. Använd Advisor för att fatta välgrundade beslut och optimera kostnaderna i din Azure-miljö. Azure tillhandahåller verktyg och funktioner för kostnadshantering som hjälper dig att prioritera utgifter. Du kan använda dessa verktyg för att spåra och analysera kostnader i olika miljöer, ange budgetar och få rekommendationer för kostnadsoptimering.

Tillämpa styrning: Med Azure Policy kan du begränsa resurstyper, SKU:er och instanser genom att definiera principregler som tillämpar begränsningar för de typer av resurser som du kan distribuera i Din Azure-miljö. Du kan behålla kontrollen över de etablerade resurserna och säkerställa efterlevnad av organisationens principer och bästa praxis.

Om du vill begränsa resurstyper med hjälp av Azure Policy kan du definiera principregler som anger de tillåtna resurstyperna. Tillämpa dessa regler på relevanta Azure-prenumerationer eller resursgrupper. Azure Policy hindrar användare från att distribuera resurser som inte tillåts.

Använd Azure Resource Manager för att definiera och hantera resurser på ett deklarativt sätt. Du kan justera resurser som allokeras till varje miljö baserat på deras specifika krav. Använd mallar och parametrisera resurskonfigurationer för att optimera kostnaderna.

Optimera förproduktionsmiljöer: Azure erbjuder prisalternativ för utveckling/testning som ger rabatterade priser för icke-produktionsmiljöer. Du kan allokera fler resurser och budgetar till kritiska produktionsmiljöer, vilket optimerar kostnaderna i icke-produktionsmiljöer. Du kan också använda Azure-licensieringserbjudandet Azure Hybrid-förmån.

Du kan använda Azure API Management för API-modellering. API Management fungerar som en fasad för serverdelstjänster, vilket gör det möjligt för API-leverantörer att abstrahera API-implementeringar och utveckla serverdelsarkitektur utan att påverka API-konsumenter.

Organisatorisk anpassning

Cloud Adoption Framework ger vägledning för att betona vikten av att optimera miljökostnaderna i hela organisationen.

Mer information finns i Metodtips för kostnadsberäkning och storleksändring av Azure-resurser.

Checklista för kostnadsoptimering

Se den fullständiga uppsättningen rekommendationer.