Lösningar för flera klienter kräver ofta särskild hänsyn när du mäter och allokerar kostnader och när du optimerar kostnaderna. På den här sidan beskriver vi några viktiga riktlinjer för lösningsarkitekter att tänka på när det gäller mätning, allokering och optimering av kostnader för ett program med flera klientorganisationer.
Viktiga överväganden och krav
Tänk på vilka krav du har för att mäta förbrukningen för din lösning. Detta beskrivs mer detaljerat om Mäta förbrukningen för varje klientorganisation.
Mätningssyfte
Det är viktigt att bestämma vad ditt mål är. Följande är exempel på mål:
- Beräkna en ungefärlig kostnad för sålda varor för varje klientorganisation. Om du till exempel distribuerar ett stort antal delade resurser kanske du bara är intresserad av en ungefärlig uppskattning av kostnaden för varje klientorganisation.
- Beräkna den exakta kostnaden för varje klientorganisation. Om du till exempel debiterar dina klienter för den exakta förbrukning de medför måste du ha exakt information om hur mycket varje klientorganisations resurser kostar.
- Identifiera avvikande klienter som kostar betydligt mer än andra. Om du till exempel tillhandahåller en fast prismodell kan du behöva avgöra om några klienter förbrukar en oproportionerlig mängd av din etablerade kapacitet, så att du kan tillämpa principer för rättvis användning. I många situationer kräver det här användningsfallet inte exakta kostnadsmätningar.
- Minska den totala Azure-kostnaden för din lösning. Du kanske till exempel vill titta på kostnaden för varje komponent och sedan avgöra om du har överetablerad för arbetsbelastningen.
Genom att förstå målet att mäta en klientorganisations förbrukning kan du avgöra om kostnadsallokeringarna måste vara ungefärliga eller mycket exakta, vilket påverkar de specifika verktyg som du kan använda och de metoder som du kan följa.
Delade komponenter
Du kanske kan minska kostnaden för en lösning med flera klienter genom att flytta klienter till delad infrastruktur. Du måste dock noga överväga effekten av att dela resurser, till exempel om dina klienter kommer att börja uppleva problemet Med bullriga grannar.
Du måste också överväga hur du mäter och allokerar kostnaderna för delade komponenter. Du kan till exempel jämnt dela upp kostnaden mellan var och en av de klienter som använder den delade komponenten. Eller så kan du mäta varje klients användning för att få en mer exakt mätning av deras förbrukning av delade komponenter.
Metoder och mönster att tänka på
Allokera kostnader med hjälp av resurstaggar
Med Azure kan du använda taggar för dina resurser. En tagg är ett nyckel/värde-par. Du använder taggar för att lägga till anpassade metadata. Taggar är användbara för många hanteringsåtgärder, och de är också användbara för att analysera kostnaden för din Azure-förbrukning. När du har tillämpat taggar kan du fastställa kostnader som är associerade med varje tagg.
Hur du använder taggar i en lösning med flera klientorganisationer kommer sannolikt att vara annorlunda, beroende på din arkitektur.
I vissa lösningar kan du distribuera dedikerade resurser för varje klientorganisation, till exempel om du distribuerar dedikerade distributionsstämplar för varje klientorganisation. I dessa situationer är det tydligt att all Azure-förbrukning för dessa resurser ska allokeras till den klientorganisationen, så att du kan tagga dina Azure-resurser med klientorganisations-ID:t.
I andra situationer kan du ha uppsättningar med delade resurser. När du till exempel använder horisontell partitioneringsmönstret kan du distribuera flera databaser och sprida klientorganisationer över dem. Överväg att tagga resurserna med en identifierare för gruppen med klienter. Du kanske inte enkelt kan allokera kostnader till en enda klientorganisation, men du kan åtminstone begränsa kostnaden till en uppsättning klienter när du använder den här metoden. Du kan också använda förbrukningsinformationen för att balansera om klientorganisationer mellan shards, om du märker att ett visst fragment medför högre kostnader än de andra.
Kommentar
Det finns en gräns för hur många taggar som kan tillämpas på en resurs. När du arbetar med delade resurser är det bäst att inte lägga till en tagg för varje klientorganisation som delar resursen. Överväg i stället att lägga till en tagg med shard-ID:t eller något annat sätt att identifiera gruppen med klienter.
Tänk dig en exempellösning för flera klientorganisationer som skapas med hjälp av mönstret Distributionsstämplar och en vertikalt partitionerad innehavarmodell. Varje distributionsstämpel innehåller en delad webbserver och fragmenterade databaser. Taggar kan tillämpas på var och en av Azure-komponenterna, enligt följande diagram.
Den taggningsstrategi som används här är följande:
- Varje resurs har en
stamp-id
tagg. - Varje fragmenterad databas har en
shard-id
tagg. - Varje resurs som är dedikerad till en specifik klientorganisation har en
tenant-id
tagg.
Med den här taggningsstrategin är det enkelt att filtrera kostnadsinformationen till en enda stämpel. Det är också enkelt att hitta kostnaden för de klientspecifika resurserna, till exempel den totala kostnaden för databasen för klientorganisation C. Delade komponenter har tenant-id
ingen tagg, men kostnaden för de delade komponenterna för en stämpel kan delas mellan de klienter som har tilldelats att använda den stämpeln eller fragmentet.
Instrumentera ditt program
I situationer där du inte har en direkt relation mellan en Azure-resurs och en klientorganisation bör du överväga att instrumentera programmet för att samla in telemetri.
Programnivån kanske redan samlar in loggar och mått som är användbara för att besvara frågor om mätning, till exempel:
- Ungefär hur många API-begäranden som görs per klientorganisation?
- Vilka tider på dagen är specifika klienter mest trafikerade?
- Hur skiljer sig klient-A:s användningsmönster från klient B:s användningsmönster?
I Azure registreras dessa mått ofta av Application Insights. Genom att använda telemetriinitierare kan du utöka telemetrin som samlas in av Application Insights och inkludera en klientidentifierare eller andra anpassade data.
Application Insights och andra lösningar för loggning och övervakning är dock inte lämpliga för exakta kostnadsmätningar eller för mätningsändamål. Application Insights är utformat för exempeldata, särskilt när ditt program har en stor mängd begäranden. Sampling är utformat för att minska kostnaderna för att övervaka din lösning, eftersom det ofta kan bli dyrt att samla in alla telemetrier.
Om du behöver spåra exakt information om förbrukning eller användning i faktureringssyfte bör du i stället skapa en anpassad pipeline för att logga nödvändiga data. Du bör sedan aggregera data baserat på dina krav. Azure-tjänster som kan vara användbara för det här ändamålet inkluderar Event Hubs, för att samla in stora mängder telemetri och Stream Analytics för att bearbeta dem i realtid.
Använda Azure-reservationer och Azure-sparplan för att minska kostnaderna
Azure-reservationer: Med Azure-reservationer kan du minska dina Azure-kostnader genom att förbestäma en viss utgiftsnivå. Reservationer gäller för ett antal Azure-resurstyper.
Reservationer kan användas effektivt i en lösning med flera klientorganisationer. Observera följande överväganden:
- När du distribuerar en lösning med flera klientorganisationer som innehåller delade resurser bör du överväga den baslinjeförbrukningsnivå som du behöver för arbetsbelastningen. Du kan överväga en reservation för baslinjeförbrukningen och sedan betala standardpriser för högre förbrukning under oförutsägbara toppar.
- När du distribuerar resurser för varje klientorganisation bör du överväga om du kan genomföra resursförbrukningen i förväg för en specifik klientorganisation eller i hela din portfölj med klienter.
Med Azure-reservationer kan du omfångsbegränsa dina reservationer så att de gäller för en resursgrupp, en prenumeration eller en uppsättning prenumerationer. Det innebär att du kan dra nytta av reservationer, även om du fragmentera din arbetsbelastning i flera prenumerationer.
Reservationsomfång kan också vara till hjälp när du har klienter med oförutsägbara arbetsbelastningar. Tänk dig till exempel en lösning där klient A bara behöver en instans av en specifik resurs, men klientorganisationer B och C behöver två vardera. Sedan blir klient B mindre upptagen, så du minskar antalet instanser och klient A blir mer upptagen, så du ökar antalet instanser. Dina reservationer tillämpas på de klienter som behöver dem.
Azure-sparplan för beräkning: Azure-sparplan för beräkning är en flexibel kostnadsbesparande plan som genererar betydande besparingar jämfört med betala per användning-priser. Du godkänner ett ett- eller treårskontrakt och får rabatter på berättigade beräkningstjänster. Dessa tjänster omfattar virtuella datorer, dedikerade värdar, containerinstanser, Azure Premium-funktioner och Azure-apptjänster. Besparingarna gäller för dessa beräkningstjänster oavsett region, instansstorlek eller operativsystem. Mer information finns i Översikt över Azure-sparplan och Dokumentation om Azure-sparplan.
Kombinera reservationer och sparplan: För att ytterligare optimera kostnader och flexibilitet kan du kombinera en Azure-sparplan med Azure-reservationer.
Antimönster att undvika
- Spårar inte kostnader alls. Det är viktigt att ha minst en ungefärlig uppfattning om de kostnader som du ådrar dig och hur varje klientorganisation påverkar kostnaden för att leverera din lösning. Annars, om dina kostnader ändras över tid, har du ingen baslinje att jämföra med. Du kanske inte heller kan förutsäga hur en ökning av klientorganisationer kommer att påverka dina kostnader och lönsamhet.
- Göra antaganden eller gissa. Se till att kostnadsmätningen baseras på verklig information. Du kanske inte behöver en hög grad av precision, men även dina uppskattningar bör informeras av verkliga mätningar.
- Onödig precision. Du kanske inte behöver ha en detaljerad redovisning av varje kostnad som uppstår för varje klientorganisation. Att skapa onödigt exakta kostnadsmätnings- och optimeringsprocesser kan vara kontraproduktivt, eftersom det ger teknisk komplexitet och skapar spröda processer.
- Realtidsmätning. De flesta lösningar behöver inte kostnadsmätningar på upp till minut. Eftersom mätnings- och förbrukningsdata kan vara komplexa att bearbeta bör du logga nödvändiga data och sedan asynkront aggregera och bearbeta data senare.
- Använda övervakningsverktyg för fakturering. Se till att du använder verktyg som är utformade för kostnadsövervakning och mätning enligt beskrivningen i Instrument ditt program. Lösningar för programövervakning är vanligtvis inte bra kandidater för den här typen av data, särskilt när du behöver hög precision.
Deltagare
Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.
Huvudförfattare:
- John Downs | Huvudprogramtekniker
Övriga medarbetare:
- Sherri Babylon | Senior kundtekniker, FastTrack för Azure
- Arsen Vladimirskiy | Huvudkundtekniker, FastTrack för Azure
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.