Suggerimenti per l'ottimizzazione dei costi del flusso

Si applica a questa raccomandazione per l'ottimizzazione dei costi di Azure Well-Architected Framework:

CO:09 Ottimizzare i costi del flusso. Allineare il costo di ogni flusso alla priorità del flusso. Quando si assegnano priorità ai flussi, prendere in considerazione le funzionalità, le funzionalità e i requisiti non funzionali di ogni flusso. L'ottimizzazione della spesa per i flussi richiede spesso compromessi strategici.

Questa guida descrive le raccomandazioni per ottimizzare il costo di ognuno dei flussi nel carico di lavoro. L'ottimizzazione dei costi dei flussi in un carico di lavoro comporta l'allocazione strategica e la gestione delle risorse per ridurre al minimo le spese mantenendo al tempo stesso le prestazioni. Questa ottimizzazione è fondamentale perché garantisce un utilizzo efficiente delle risorse investite, riduce le spese non necessarie e migliora il ritorno complessivo sugli investimenti per l'infrastruttura. Se non si ottimizzano i flussi in un carico di lavoro, si rischia di sovraccaricare le risorse, con conseguente aumento dei costi operativi e riduzione della redditività.

Definizioni

Termine Definizione
Separare Strategia di rimozione di un flusso da una risorsa che contiene più flussi e di inserirlo in una risorsa separata.
Flow In un carico di lavoro, la sequenza di azioni che esegue una funzione specifica. Un flusso implica lo spostamento dei dati e l'esecuzione di processi tra i componenti del carico di lavoro.
Flusso di sistema Flusso di informazioni e processi all'interno di un sistema. Il sistema segue automaticamente questo flusso per abilitare i flussi utente o le funzionalità del carico di lavoro.
Flusso utente Percorsi o sequenze di azioni eseguite dagli utenti all'interno di un'applicazione o di un sistema.

Strategie di progettazione chiave

Investire più in flussi ad alta priorità rispetto ai flussi con priorità più bassa. L'allineamento della priorità del flusso e della spesa può comportare il disaccoppiamento dei flussi che attualmente condividono la stessa risorsa. Può anche comportare la combinazione di flussi che hanno requisiti simili, ma vengono eseguiti su risorse separate. Si supponga, ad esempio, di avere un'applicazione Web che include più flussi, ad esempio la registrazione dell'utente, l'accesso e l'elaborazione dei dati. Questi flussi vengono eseguiti in un singolo server, anche se hanno esigenze di risorse diverse. Per ottimizzare i costi e le prestazioni, è possibile separare i flussi o combinare i flussi:

  • Flussi separati. Ad esempio, è possibile separare il flusso di registrazione utente dagli altri e spostarlo in un server dedicato a costi inferiori. Questo flusso è importante ma non a elevato utilizzo di risorse, quindi è un buon candidato per un server meno costoso.

  • Combinare i flussi. Ad esempio, è possibile combinare i flussi di accesso e di elaborazione dei dati, che hanno entrambi requisiti di risorse più elevati ed eseguirli insieme in un server ad alte prestazioni. La combinazione di questi flussi consente al server di gestire in modo efficiente le esigenze a elevato utilizzo di risorse di entrambi i flussi. Ottimizza le prestazioni e i costi.

In un carico di lavoro possono essere presenti diversi tipi di flussi o percorsi da considerare. Questa guida è incentrata sui tipi di flusso seguenti:

  • Flussi di sistema. L'ottimizzazione dei flussi di sistema comporta la semplificazione della comunicazione e dell'interazione tra i componenti di sistema, la riduzione dei colli di bottiglia e la garanzia di un utilizzo efficiente delle risorse.

  • Flussi utente. L'ottimizzazione dei flussi utente comporta il miglioramento dell'esperienza utente, la riduzione dei punti di attrito e la fluidità della navigazione e dell'interazione all'interno dell'applicazione o del sistema.

Creare un inventario dei flussi

Un inventario dei flussi è un elenco completo e una descrizione di tutte le sequenze di azioni, transizioni di dati e interazioni di sistema all'interno di un carico di lavoro. Un inventario dei flussi è il primo passaggio per garantire che gli investimenti siano allineati alla priorità dei flussi. È consigliabile ottimizzare i flussi solo quando si conoscono appieno lo scopo e le dipendenze. Ecco i passaggi per la creazione di un inventario dei flussi di carico di lavoro:

  1. Flussi di documenti. Per iniziare, documentare ed elencare tutti i flussi esistenti nel carico di lavoro per comprendere lo stato completo del sistema. Includere ogni sequenza di azioni, transizioni di dati e interazioni di sistema. Acquisire familiarità con ogni componente, ad esempio servizi esterni, database, middleware e integrazioni di terze parti. Inoltre, tenere traccia o stimare il volume delle richieste nel tempo.

  2. Visualizzare i flussi. Per ottenere una prospettiva più chiara, rappresentare visivamente i risultati, possibilmente in diagrammi di flusso o diagrammi. Le visualizzazioni consentono di visualizzare le interdipendenze tra i componenti. È consigliabile usare uno strumento come Visio per facilitare l'uso delle visualizzazioni.

  3. Classificare i flussi. Aggregare flussi simili, tenendo conto di attributi come la relativa funzionalità (ad esempio, autenticazione, recupero dei dati e elaborazione delle transazioni), criticità per le aziende o le risorse usate (CPU, memoria o larghezza di banda).

Classificare in ordine di priorità i flussi

La definizione delle priorità del flusso è il processo di classificazione dei flussi in base alla loro influenza sui risultati aziendali, sulle implicazioni sull'esperienza utente e sulle risorse utilizzate. I flussi critici richiedono spesso livelli di disponibilità più elevati, tempi di ripristino più rapidi e prestazioni migliori per soddisfare gli obiettivi del carico di lavoro. Assegnando priorità ai flussi, è possibile allineare meglio la spesa alla priorità del flusso. Per classificare in ordine di priorità i flussi, prendere in considerazione i passaggi seguenti:

  • Identificare il valore del flusso. Quando si ottimizzano i costi del flusso di carico di lavoro, è necessario identificare il flusso che fornisce il massimo valore. Non si vuole spendere più di un flusso. Invece di ridurre semplicemente i costi, prendere in considerazione lo spostamento dei costi per classificare in ordine di priorità i flussi più preziosi. Ad esempio, il flusso di estrazione è fondamentale per le aziende, ma la cronologia degli acquisti non è. È consigliabile allocare più risorse e budget al flusso di checkout.

    I flussi con priorità bassa hanno aspettative più basse per la disponibilità, il ripristino e le prestazioni. È possibile ridurre i costi usando configurazioni più economiche per ridurre le prestazioni, la disponibilità o la spesa per la continuità aziendale.

  • Prendere in considerazione le metriche del flusso. Se si sta lottando per classificare in ordine di priorità i flussi, prendere in considerazione gli obiettivi di disponibilità e ripristino assegnati. I flussi critici hanno spesso requisiti di disponibilità elevata e contratti di servizio. I flussi associati a un RPO inferiore e un RTO sono più importanti rispetto ai flussi con un RPO e un RTO più elevati.

Ottimizzare i flussi indipendenti

In alcuni casi i flussi sono già in esecuzione su risorse diverse. In questi casi, è possibile valutare e ottimizzare più facilmente la spesa. Valutare i componenti e i processi coinvolti in ogni flusso indipendente per determinare se esistono modi per ottimizzarli o semplificarli. Per ottimizzare i flussi indipendenti, è possibile seguire questa procedura:

  • Eliminare i componenti non necessari. Rimuovere tutti gli elementi estranei che non contribuiscono alla funzionalità principale del flusso, riducendo così complessità e costi.

  • Riprogettare il flusso. Valutare la possibilità di riprogettare l'architettura del flusso per migliorarne l'efficienza. È possibile modificare la sequenza di operazioni, ridurre la latenza o migliorare la velocità di trasferimento dei dati, ad esempio.

  • Scegliere un livello di prestazioni appropriato. I diversi flussi possono avere esigenze diverse in termini di velocità di elaborazione, memoria o altre metriche delle risorse. Assicurarsi di scegliere un livello di risorsa che sia allineato bene ai requisiti specifici di ogni flusso.

  • Regolare le impostazioni di ridimensionamento. Se un flusso sperimenta una domanda variabile, valutare la possibilità di implementare la scalabilità automatica per regolare dinamicamente le risorse in base alle esigenze in tempo reale, ottimizzando così i costi.

  • Ottimizzare le configurazioni. Ottimizzare altre impostazioni, ad esempio le opzioni di rete o di archiviazione dei dati, per allinearsi meglio ai requisiti di prestazioni e budget del flusso.

Separare i flussi diversi

La separazione di flussi diversi in risorse diverse è un processo di allocazione di attività distinte con esigenze di calcolo diverse alle risorse dedicate. I flussi dissimili sono flussi con attributi diversi. Questi attributi possono includere requisiti di calcolo, dipendenze dei dati, operazioni di I/O, riservatezza della latenza, esigenze di sicurezza e requisiti di conformità. Spesso è più conveniente eseguire diversi tipi di flussi in risorse separate. In questo modo, l'allocazione precisa delle risorse a ogni flusso riduce le spese non necessarie e garantisce la massima efficienza.

Valutare la possibilità di separare flussi diversi che sono attualmente combinati. Questa separazione aumenta la scalabilità, la tolleranza di errore e l'adattabilità e semplifica anche i costi. Assicurandosi che ogni flusso funzioni in modo indipendente, si riducono i rischi di interferenza e si possono allocare risorse in modo più conveniente in base alla priorità di ogni flusso. Si supponga, ad esempio, di aver condiviso CRM (flusso utente) con un motore di dati (flusso di dati). Il traffico degli utenti verso il sistema CRM durante le ore di ufficio potrebbe rallentare il motore dati. Quando si separano i flussi, il motore di dati può ridimensionare ogni componente o servizio in modo indipendente in base alla domanda del carico di lavoro. Questo disaccoppiamento ottimizza l'allocazione delle risorse e riduce i costi.

Combinare flussi simili

La combinazione di flussi simili in una singola risorsa è un processo di consolidamento di attività o processi con attributi confrontabili e l'uso di risorse condivise. Questa strategia elimina le ridondanze e garantisce un uso più efficiente delle risorse, consentendo un significativo risparmio sui costi. Tipi simili di flussi condividono attributi simili. È possibile considerare gli stessi attributi esaminati quando si separano i flussi diversi: requisiti di calcolo, dipendenze dei dati, operazioni di I/O, riservatezza della latenza, esigenze di sicurezza e requisiti di conformità. Ecco alcuni esempi in cui la combinazione di flussi di carico di lavoro simili per l'uso della stessa risorsa può comportare un notevole risparmio:

  • Server Web. Invece di dedicare server Web separati per ogni applicazione, è consigliabile consolidarli, soprattutto se il traffico non è costantemente elevato. Un server Web condiviso, associato a un proxy inverso, può gestire e instradare efficacemente il traffico a più applicazioni.

  • Gateway API. Invece di gestire singoli gateway API per microservizi o applicazioni separati, è possibile usare un gateway API centralizzato per semplificare le richieste e indirizzarle al servizio pertinente. In questo modo la gestione risulta più semplice e riduce anche i costi.

  • Elaborazione dei log. Invece di avere più applicazioni o servizi che ognuna gestisce le proprie istanze di elaborazione dei log, è consigliabile indirizzarle a uno strumento di elaborazione log condiviso. Questo approccio riduce al minimo il numero di istanze attive, che si traduce in risparmi diretti sui costi.

  • Servizi di autenticazione. Se più applicazioni distribuiscono meccanismi di autenticazione distinti, viene introdotta la ridondanza. L'integrazione di una soluzione Single Sign-On (SSO) o di un servizio di autenticazione comune riduce questa duplicazione e ottimizza l'utilizzo delle risorse, riducendo così i costi.

Rischio: non sbagliare la coincidenza con la progettazione. Due flussi simili non servono necessariamente allo stesso scopo. È necessario comprendere la funzione e la progettazione di ogni flusso prima di unirle o modificarle. L'interpretazione errata di un flusso concentrandosi esclusivamente sull'aspetto può causare conseguenze impreviste e interrompere il servizio o il processo supportato. Se più flussi servono la stessa funzione e non esistono differenze distinguibili nella progettazione o nella finalità, è consigliabile consolidarli.

Monitorare i flussi in modo continuo

La natura dei flussi e dei carichi di lavoro può cambiare nel tempo, quindi è necessario rivedere la spesa del flusso per garantire che i costi siano allineati alle priorità. Valutare l'utilizzo delle risorse di ogni flusso analizzando l'uso di calcolo, archiviazione e rete associato a ogni flusso. Identificare eventuali inefficienze o aree in cui le risorse sono sottoutilizzate. Questa analisi consente di individuare le opportunità per l'ottimizzazione dei costi. Ecco alcune considerazioni da tenere in considerazione quando si esamina l'utilizzo del flusso:

  • Analizzare i modelli di utilizzo. Analizzare i modelli di utilizzo dei flussi. Alcuni flussi potrebbero essere più attivi durante determinati orari del giorno o del mese, mentre altri potrebbero avere un carico coerente. Comprendendo questi modelli, è possibile prevedere le esigenze delle risorse e regolare l'allocazione per evitare colli di bottiglia e overprovisioning.

  • Monitorare le metriche pertinenti. Determinare le metriche che consentono di valutare l'efficienza e l'efficacia dei costi di ogni flusso. Prendere in considerazione l'utilizzo della CPU, i costi di trasferimento dei dati, i costi delle transazioni e il footprint di archiviazione. Usare gli strumenti di monitoraggio per raccogliere metriche dettagliate sull'utilizzo e sulle prestazioni delle risorse.

  • Prendere in considerazione la manutenzione in corso. Prendere in considerazione il costo della manutenzione, soprattutto quando si usano soluzioni infrastructure-as-a-service come le macchine virtuali. È necessario tenere conto di attività come l'applicazione di patch, gli aggiornamenti, i backup, il monitoraggio e la sicurezza.

Durante l'analisi, identificare eventuali inefficienze o aree in cui le risorse non vengono usate in modo efficace. Prendere in considerazione istanze di calcolo inattive, dati inutilizzati e larghezza di banda di rete ridotta. Queste inefficienze possono indicare opportunità di ottimizzazione dei costi.

Facilitazione di Azure

Definizione delle priorità, ottimizzazione e monitoraggio dei flussi: lo strumento Flusso utente in Application Insights offre una rappresentazione visiva dello spostamento utente tra le pagine e le funzionalità del sito. Questo strumento consente di identificare le aree in cui gli utenti lasciano spesso, ripetono azioni o seguono percorsi specifici. Confrontando il comportamento effettivo degli utenti con i risultati e gli obiettivi previsti, è possibile identificare i flussi critici. Consente inoltre di ottimizzare potenziali problemi, ad esempio tassi di varianza elevati, azioni ripetitive o di progettazione. Lo strumento consente anche di filtrare le proprietà personalizzate tramite dimensioni, offrendo un'analisi più personalizzata.

Monitoraggio di Azure consente di ottenere informazioni dettagliate sulle prestazioni e sull'integrità delle applicazioni. Fornisce funzionalità di monitoraggio e diagnostica. Queste funzionalità consentono di identificare i colli di bottiglia delle prestazioni, ottimizzare l'utilizzo delle risorse e rilevare e risolvere i problemi che potrebbero influire sui costi.

Log Analytics è uno strumento che consente di raccogliere, analizzare e visualizzare i dati di log da varie origini. Usando Log Analytics, è possibile ottenere informazioni dettagliate sui log dell'applicazione e dell'infrastruttura, identificare le tendenze e ottimizzare i costi gestendo l'utilizzo e la conservazione dei dati. Prendere in considerazione la condivisione dei log e l'uso di soluzioni dedicate anziché quelle condivise per gestire meglio i costi.

Elenco di controllo per l'ottimizzazione dei costi

Fare riferimento al set completo di raccomandazioni.