Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le soluzioni multi-tenant richiedono spesso considerazioni speciali quando si misurano, allocano e ottimizzano i costi. Questo articolo include indicazioni utili per valutare e gestire i costi in modo efficace come progettista di soluzioni che lavora con applicazioni multi-tenant.
Considerazioni e requisiti principali
Prendere in considerazione i requisiti necessari per misurare il consumo nella soluzione. Questi requisiti sono descritti in modo più dettagliato in Misurare l'utilizzo di ogni tenant.
Scopo della misurazione
È importante decidere qual è il tuo obiettivo. Ecco alcuni obiettivi di misurazione dei costi di esempio:
Calcolare un costo del venduto approssimativo per ciascun inquilino. Ad esempio, se si distribuisce un numero significativo di risorse condivise, potrebbe essere necessaria solo un'approssimazione approssimativa del costo addebitato per ogni tenant.
Calcolare il costo esatto che ogni inquilino sostiene. Ad esempio, se si addebita ai tenant l'esatta quantità di consumo che comportano, è necessario avere informazioni precise sul costo delle risorse di ogni tenant.
Identificare gli inquilini outlier che costano significativamente più di altri inquilini. Ad esempio, se si fornisce un modello tariffario a tariffa fissa, potrebbe essere necessario determinare se i tenant utilizzano una quantità sproporzionata della capacità di cui è stato effettuato il provisioning in modo da poter applicare criteri di uso equo. In molti scenari, questo caso d'uso non richiede una misurazione precisa dei costi.
Ridurre il costo complessivo di Azure per la soluzione. Ad esempio, potresti voler valutare il costo di ogni componente e quindi determinare se hai sovradimensionato le risorse per il carico di lavoro.
Comprendendo l'obiettivo di misurare il consumo da parte di un tenant, è possibile determinare se le allocazioni dei costi devono essere approssimative o precise. Questa distinzione influisce sugli strumenti specifici che è possibile usare e sulle procedure da seguire.
Componenti condivisi
È possibile che si riesca a ridurre il costo di una soluzione multi-tenant spostando i tenant nell'infrastruttura condivisa. Tuttavia, è necessario considerare attentamente gli effetti della condivisione delle risorse, ad esempio se i tenant iniziano a riscontrare il problema del vicino rumoroso o se i componenti di condivisione forniscono i limiti di isolamento richiesti o previsti dai tenant.
È anche necessario valutare il modo in cui misurare e allocare i costi dei componenti condivisi. Ad esempio, è possibile dividere uniformemente il costo tra ognuno dei tenant che usano il componente condiviso. In alternativa, è possibile misurare l'utilizzo di ogni tenant per ottenere una misurazione più precisa del consumo di componenti condivisi.
Approcci e modelli da prendere in considerazione
Quando si pianifica l'allocazione dei costi in un'architettura multi-tenant, prendere in considerazione le strategie e i modelli di progettazione seguenti per garantire trasparenza, equità, scalabilità ed efficienza.
Allocare i costi usando i tag delle risorse
Con Azure è possibile applicare i tag alle risorse. Un tag è una coppia chiave-valore. I tag consentono di aggiungere metadati personalizzati. I tag sono utili per molte operazioni di gestione e per analizzare il costo del consumo di Azure. Dopo aver applicato i tag, è possibile determinare i costi associati a ogni tag.
Il modo in cui si usano i tag in una soluzione multi-tenant può variare a seconda dell'architettura.
In alcune soluzioni è possibile distribuire risorse dedicate per ogni tenant. Ad esempio, è possibile distribuire indicatori di distribuzione dedicati per ogni tenant. In questi scenari è chiaro che qualsiasi consumo di Azure associato a tali risorse deve essere allocato al tenant corrispondente. Per supportare questo approccio, è possibile contrassegnare le risorse di Azure con l'ID tenant.
In altri scenari, potrebbero essere presenti set di risorse condivise. Ad esempio, quando si applica il modello di partizionamento orizzontale, è possibile distribuire più database e distribuire i tenant tra di essi. Prendere in considerazione l'assegnazione di tag alle risorse con un identificatore per il gruppo di tenant. Potrebbe non essere possibile allocare facilmente i costi a un singolo tenant. Tuttavia, è possibile usare questo approccio per limitare il costo a un gruppo definito di tenant. È anche possibile usare le informazioni sull'utilizzo per ribilanciare i tenant tra le partizioni se si nota che una partizione specifica accumula costi più elevati rispetto alle altre partizioni.
Annotazioni
Esiste un limite al numero di tag che possono essere applicati a una risorsa. Quando si lavora con le risorse condivise, non aggiungere un tag per ogni tenant che condivide la risorsa. Considera invece di aggiungere un tag con l'ID del gruppo di tenant, lo shard ID o un altro identificatore del gruppo di tenant.
Si consideri una soluzione multi-tenant di esempio creata usando il modello Deployment Stamps e un modello tenancy partizionato verticalmente. Ogni stamp di distribuzione include un server Web e database partizionati. Un timbro viene condiviso tra due tenant e uno è dedicato a un singolo tenant. È possibile applicare tag a ognuno dei componenti di Azure, come illustrato nel diagramma seguente.
Prendere in considerazione la strategia di assegnazione di tag seguente:
- Ogni risorsa ha un tag
stamp-id. - Ogni database partizionato ha un tag
shard-id. - Ogni risorsa dedicata a un tenant specifico ha un
tenant-idtag.
Usando questa strategia di assegnazione di tag, è possibile filtrare facilmente le informazioni sui costi in un unico timbro. È anche facile trovare il costo delle risorse specifiche del cliente, ad esempio il costo totale del database per il cliente C. I componenti condivisi non hanno un tag tenant-id, ma il costo dei componenti condivisi per un'istanza può essere ripartito tra i clienti a cui è assegnata l'istanza o la partizione. Memorizzi tale mappatura separatamente, in una shard map o in una tabella di corrispondenza.
Instrumentare l'applicazione
Negli scenari in cui non si ha una relazione diretta tra una risorsa di Azure e un tenant, è consigliabile instrumentare l'applicazione per raccogliere i dati di telemetria.
Il livello applicazione potrebbe già raccogliere log e metriche utili per rispondere alle domande sulla misurazione. Considerare le caratteristiche di utilizzo seguenti:
- Numero di richieste API effettuate per ogni tenant nel tempo.
- Periodi di attività di picco per tenant specifici durante il giorno.
- Differenze nei modelli di utilizzo tra il tenant A e il tenant B.
In Azure Application Insights acquisisce spesso queste metriche. Modificando i dati OpenTelemetry, è possibile arricchire i dati di telemetria acquisiti da Application Insights per includere un identificatore del tenant o altri dati personalizzati.
Tuttavia, Application Insights e altre soluzioni di registrazione e monitoraggio non sono appropriate per misurazioni precise dei costi o per scopi di misurazione. Application Insights è progettato per campionare i dati, soprattutto quando l'applicazione ha un volume elevato di richieste. Il campionamento è progettato per ridurre il costo del monitoraggio della soluzione perché l'acquisizione di ogni parte dei dati di telemetria può spesso diventare costosa.
Se è necessario tenere traccia di dettagli precisi sul consumo o sull'utilizzo a scopo di fatturazione, è opportuno creare una pipeline personalizzata per registrare i dati necessari. È necessario quindi aggregare i dati in base alle esigenze. I servizi di Azure che possono essere utili a questo scopo includono Hub eventi di Azure per acquisire grandi volumi di dati di telemetria e Analisi di flusso di Azure per elaborarlo in tempo reale.
Usare le regole di allocazione dei costi
Se i tenant sono associati a sottoscrizioni, gruppi di risorse o tag a cui sono già associati costi, prendi in considerazione le regole di allocazione di Gestione costi di Azure. Queste regole possono distribuire i costi condivisi in modo uniforme, in base a percentuali personalizzate o in proporzione ai costi di destinazione. Supportano solo tipi specifici di account di fatturazione Azure e non supportano gli acquisti di piani di prenotazione o risparmio.
Usare le prenotazioni di Azure e il piano di risparmio di Azure per ridurre i costi
Azure prenotazioni consentono di ridurre i costi Azure impegnandosi a una quantità specificata di un prodotto Azure idoneo per un periodo fisso. Lo sconto per la prenotazione si applica automaticamente all'utilizzo delle risorse corrispondente nell'ambito della prenotazione.
In una soluzione multi-tenant, le prenotazioni possono essere molto efficaci. Prendere in considerazione i fattori seguenti:
Quando si distribuisce una soluzione multi-tenant che include risorse condivise, considerare il livello di utilizzo di base necessario per il carico di lavoro. È possibile prendere in considerazione una prenotazione per il consumo previsto e quindi pagare tariffe standard per un consumo più elevato durante picchi imprevedibili.
Quando si distribuiscono risorse per ogni tenant, valutare se è possibile impegnarsi anticipatamente per l'utilizzo delle risorse di un tenant specifico o attraverso l'intero portafoglio di tenant.
Le prenotazioni di Azure consentono di definire l'ambito delle prenotazioni da applicare a un gruppo di risorse, a una sottoscrizione o a un set di sottoscrizioni. Questa funzionalità consente di sfruttare i vantaggi delle prenotazioni anche se si partiziona il carico di lavoro in più sottoscrizioni.
Gli ambiti di prenotazione possono essere utili anche quando i tenant hanno carichi di lavoro imprevedibili. Si consideri, ad esempio, una soluzione in cui il tenant A necessita solo di un'istanza di una risorsa specifica, ma i tenant B e C necessitano di due istanze. Il tenant B diventa quindi meno occupato, quindi si riduce il numero di istanze e il tenant A aumenta il numero di istanze. Le prenotazioni vengono applicate ai tenant che ne hanno bisogno.
Piani di risparmio di Azure sono soluzioni flessibili che consentono di risparmiare significativamente rispetto ai prezzi a consumo. Si accetta un contratto e si ricevono sconti sui servizi di calcolo o di database idonei. I servizi di calcolo includono macchine virtuali, host dedicati, istanze di contenitore, app per le funzioni Premium e piani di Servizio app di Azure. I servizi di database includono database SQL di Azure, Azure Cosmos DB e Database di Azure per PostgreSQL. I risparmi si applicano a questi servizi di calcolo indipendentemente dall'area, dalle dimensioni dell'istanza o dal sistema operativo. Per ulteriori informazioni, vedere Panoramica del piano di risparmio di Azure e documentazione del piano di risparmio di Azure.
Combinare prenotazioni e un piano di risparmio per ottimizzare ulteriormente i costi e la flessibilità.
Antipattern da evitare
Ignorare completamente il rilevamento dei costi. È importante avere almeno un'idea approssimativa dei costi sostenuti e del modo in cui ogni tenant influisce sul costo della distribuzione della soluzione. In caso contrario, se i costi cambiano nel tempo, non sarà disponibile alcun dato di riferimento per un confronto. Potrebbe anche non essere possibile prevedere in che modo una crescita nei tenant influisce sui costi e sulla redditività.
Si supponga o si indovini senza dati. Assicurarsi che la misurazione dei costi sia basata su informazioni reali. È possibile che non sia necessario eseguire misurazioni precise, ma basare le stime sui dati effettivi.
Progettare eccessivamente per la precisione. Spesso non è necessaria una contabilità dettagliata di ogni costo che ogni tenant comporta. La creazione di processi di misurazione e ottimizzazione dei costi inutilmente precisi può essere controproducente perché aggiungono complessità di progettazione e creano processi fragili.
Misurare i costi in tempo reale. La maggior parte delle soluzioni non necessitano di misurazioni dei costi in tempo reale. Poiché i dati di misurazione e consumo possono essere complessi da elaborare, è necessario registrare i dati necessari e quindi aggregarli e elaborarli in modo asincrono in un secondo momento come processo batch.
Usare gli strumenti di monitoraggio per la fatturazione. Assicurarsi di usare gli strumenti progettati per il monitoraggio dei costi e la misurazione. Le soluzioni di monitoraggio delle applicazioni in genere non sono buoni candidati per questo tipo di dati, soprattutto quando è necessaria una precisione elevata.
Contributori
Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.
Autore principale:
- John Downs | Principal Software Engineer, Azure Patterns & Practices
Altri collaboratori:
- Sherri Babylon | Senior Customer Engineer, FastTrack per Azure
- Arsen Vladimirskiy | Ingegnere principale per i clienti, FastTrack per Azure
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Risorsa collegata
- Misurare il consumo di ogni tenant