Raccomandazioni per l'ottimizzazione dei costi dei componenti

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

CO:07 Ottimizzare i costi dei componenti. Rimuovere o ottimizzare regolarmente i componenti del carico di lavoro non necessari, inclusi le funzionalità dell'applicazione, le funzionalità della piattaforma e le risorse.

Questa guida descrive i consigli per ottimizzare i costi dei componenti del carico di lavoro. L'ottimizzazione dei costi dei componenti fa riferimento al processo di valutazione e miglioramento dell'efficienza dei costi dei singoli elementi all'interno di un carico di lavoro. Sottolinea la revisione continua e il potenziale rimozione o miglioramento di componenti obsoleti, non necessari o raramente usati, ad esempio funzionalità dell'applicazione, funzionalità della piattaforma e risorse. Illustra anche l'ottimizzazione dei costi degli ambienti di ripristino di emergenza e come evitare l'introduzione di componenti non ottimizzati. Le indicazioni contenute in questo articolo si applicano ai carichi di lavoro esistenti che non si trovano nella fase di progettazione. L'ottimizzazione regolare dei componenti può causare costi gonfiati, rifiuti di risorse e carichi di lavoro inefficienti che svuotano tempo e denaro.

Definizioni

Termine Definizione
Funzionalità dell'applicazione Funzionalità distinte all'interno del software dell'applicazione che consente agli utenti di eseguire attività specifiche o accedere a informazioni specifiche.
Funzionalità della piattaforma Funzionalità o funzionalità specifiche fornite da una piattaforma. Può variare a seconda della piattaforma, ma in genere, le funzionalità della piattaforma sono progettate per migliorare l'esperienza utente, migliorare la produttività o abilitare attività o azioni specifiche.
Risorsa Singola entità o componente che è possibile creare, configurare e usare all'interno di un provider di servizi cloud.

Strategie di progettazione chiave

L'ottimizzazione dei componenti del carico di lavoro consiste nell'perfezionare i vari elementi di un carico di lavoro, incluse le funzionalità dell'applicazione, le funzionalità della piattaforma e la risorsa. L'obiettivo è garantire che il carico di lavoro usi tutti i componenti in modo efficiente e conveniente. Le strategie includono la rimozione, la modifica e l'evitare componenti che consentono di spendere più di quanto necessario. Il processo di ottimizzazione dei costi del componente garantisce l'allocazione delle risorse alle funzionalità e ai componenti che offrono il massimo valore, evitando spese inutili.

Ottimizzare le funzionalità dell'applicazione

L'ottimizzazione delle funzionalità dell'applicazione è il processo di rimozione, reinvestimento o monetizzazione delle funzionalità dell'applicazione in base al valore. Garantisce l'allocazione delle risorse alle funzionalità dell'applicazione che forniscono il massimo valore ai clienti. L'ottimizzazione delle funzionalità dell'applicazione consente di evitare di investire in funzionalità che contribuiscono al debito tecnico o non restituisce un rendimento sufficiente sugli investimenti.

Valutare il valore della funzionalità dell'applicazione

Per determinare il valore di una funzionalità, considerare gli effetti sull'applicazione complessiva e sul valore fornito ai clienti. Alcuni fattori da considerare includono:

  • Esigenze dei clienti: valutare il modo in cui la funzionalità soddisfa le esigenze e le aspettative dei clienti. I commenti dei clienti, i sondaggi e i dati di utilizzo possono essere utili per comprendere il valore percepito.

  • Obiettivi aziendali: valutare in che modo la funzionalità si allinea agli obiettivi strategici dell'azienda. Si consideri come le funzionalità supportano la generazione di ricavi, la soddisfazione dei clienti o il vantaggio competitivo.

  • Effetto sull'esperienza utente: determinare l'effetto della funzionalità per migliorare l'esperienza utente e migliorare l'usabilità o la produttività.

  • Differenziazione: valutare se la funzionalità offre un punto di vendita univoco o un vantaggio competitivo rispetto ad altre applicazioni nel mercato.

Valutare i costi delle funzionalità dell'applicazione

È essenziale comprendere il costo associato a ogni funzionalità per l'allocazione e l'ottimizzazione delle risorse efficaci. Prendere in considerazione vari aspetti durante la valutazione dei costi, ad esempio:

  • Sforzo di sviluppo: valutare il tempo, le risorse e le competenze necessarie per sviluppare e mantenere la funzionalità o le caratteristiche circostanti. Le caratteristiche sottoutilizzate spesso diventano una fonte chiave di debito tecnico.

  • Manutenzione e supporto: prendere in considerazione i costi in corso associati alla gestione e al supporto della funzionalità, tra cui correzioni di bug, aggiornamenti della sicurezza e risoluzione dei problemi.

  • Utilizzo dell'infrastruttura e delle risorse: valutare l'effetto della funzionalità sui requisiti dell'infrastruttura, incluse le risorse del server, l'archiviazione e la larghezza di banda.

  • Complessità dell'integrazione: valutare la complessità e il costo dell'integrazione della funzionalità con altri sistemi o servizi di terze parti.

  • Considerazioni sulle prestazioni: valutare l'effetto della funzionalità sulle prestazioni dell'applicazione, tra cui scalabilità, tempo di risposta e utilizzo delle risorse.

Esaminare il valore della funzionalità dell'applicazione con gli stakeholder

Esaminare il valore delle funzionalità dell'applicazione con gli stakeholder impegnando personale chiave, ad esempio i responsabili del prodotto, gli sviluppatori software e gli analisti aziendali, per valutare il valore di funzionalità specifiche sugli obiettivi aziendali. Questa collaborazione è essenziale per l'ottimizzazione dei costi perché fornisce informazioni dettagliate sugli sforzi di manutenzione e identifica le funzionalità che potrebbero impedire la produttività o rimuovere dallo sviluppo di nuove funzionalità preziose. Il team di sviluppo può fornire informazioni importanti sulla quantità di lavoro che richiede per mantenere determinate funzionalità. Incoraggiarli a parlare delle funzionalità che potrebbero essere più difficili rispetto a quelle che vale la pena, soprattutto se queste funzionalità distraggono il team dalla creazione di nuovi.

Determinare il futuro della funzionalità

In base all'analisi e alla valutazione, determinare il futuro delle funzionalità dell'applicazione. Rimuovere, reinvestire o monetizzare qualsiasi funzionalità dell'applicazione che non fornisce un ritorno sugli investimenti:

  • Rimozione: considerare la fine pianificata di una funzionalità dell'applicazione in base ai dati. I motivi per la rimozione delle funzionalità possono includere una bassa domanda dei clienti, costi di manutenzione elevati, complessità o ridondanza che non vale la pena risolvere. Creare un piano per la rimozione, che potrebbe comportare il refactoring del codice, l'aggiornamento delle dipendenze o la riorganizzazione dell'interfaccia utente.

    Rischio icona rischio: è possibile rimuovere inavvertitamente le funzionalità critiche per determinati utenti o scenari e potrebbe influire negativamente sulle prestazioni, le operazioni e la sicurezza nell'applicazione.

  • Reinvest: alcune funzionalità dell'applicazione potrebbero non aggiungere un valore sufficiente nello stato corrente, ma potrebbero aggiungere valore se li reinvesti. Il reinvestimento significa rielaborare o promuovere la funzionalità dell'applicazione. Definire la priorità dei miglioramenti identificati in base al valore e alla fattibilità. Determinare la roadmap e la sequenza temporale per implementare le modifiche. Prendere in considerazione fattori quali risorse di sviluppo, dipendenze e potenziale effetto sull'applicazione.

  • Monetizzare: trasformare le funzionalità dell'applicazione in un'opportunità di generazione di ricavi tramite monetizzazione. A volte le funzionalità forniscono valore agli utenti, ma non vale la pena l'investimento corrente. Esplorare le opportunità di monetizzare queste funzionalità, ad esempio offrirle come componenti aggiuntivi a pagamento separati o licenze per altre aziende.

Ottimizzare le risorse del carico di lavoro

L'ottimizzazione delle risorse del carico di lavoro comporta la rimozione di tutte le risorse inutilizzate e l'ottimizzazione di tutte le risorse sottoutilizzate necessarie per il carico di lavoro. Questo sforzo può risparmiare denaro, evitare rifiuti e assicurarsi che il carico di lavoro usi solo le risorse che aggiungono valore.

Rimuovere le risorse del carico di lavoro inutilizzate. Le risorse inutilizzate vengono distribuite ai processi di carico di lavoro o operazioni non usati. Queste risorse potrebbero essere a lungo termine inattiva, orfane o dimenticate. Non forniscono alcun ritorno sugli investimenti e dovresti rimuoverli. Le cause comuni delle risorse inutilizzate includono:

  • Avvisi.
  • Compilazioni demo.
  • Rimozione dell'ambiente.
  • Rimozione delle funzionalità.
  • Indirizzi IP.
  • Firewall di rete.
  • Prova del concetto.
  • Snapshot.
  • Account di archiviazione.
  • Ambienti di test temporanei.
  • Ambienti di valutazione temporanei.

Per rimuovere le risorse inutilizzate in un carico di lavoro, seguire questa procedura:

  1. Eseguire un inventario: eseguire un inventario completo di tutte le risorse all'interno del carico di lavoro in ambienti.

  2. Trovare risorse orfane: le risorse possono diventare orfane quando non sono più necessarie o quando le risorse padre vengono rimosse. Ad esempio, è possibile rimuovere una macchina virtuale, ma l'account di archiviazione associato non viene rimosso. Esaminare il carico di lavoro per identificare le risorse non necessarie o orfane.

  3. Rimuovere i componenti inattive: in genere è associato un costo a una risorsa distribuita. Anche se la risorsa consente di arrestare o riallocare, è possibile continuare a pagare per la risorsa. Prendere in considerazione la rimozione delle risorse inattive. Se sono necessari i dati, eseguirne il backup prima e quindi rimuovere la risorsa. È meglio ridistribuire la risorsa e ripristinare i dati che consentono alla risorsa di rimanere inattivi.

Ottimizzare le risorse sottoutilizzate. Le risorse sottoutilizzate rappresentano spese dispendiose quando si paga per la capacità delle risorse che non viene completamente utilizzata. Identificare e ottimizzare queste risorse per ridurre i costi e allocare le risorse in modo più efficace. Per valutare e ottimizzare il costo delle risorse sottoutilizzate, seguire questa procedura:

  1. Monitorare le risorse: usare strumenti per monitorare la quantità di CPU, memoria e archiviazione effettivamente usata. Scegliere il piano migliore che corrisponda alle proprie esigenze in base a queste informazioni.

  2. Analizzare l'utilizzo: esaminare i dati per scoprire quali risorse non si usano. Prestare attenzione alle risorse che hanno un utilizzo basso nel tempo o grandi differenze di utilizzo tra tempi occupati e lenti.

  3. Ridimensionamento corretto: verificare se sono presenti troppe risorse allocate alle funzionalità che non sono in uso. In tal caso, regolare le dimensioni in modo che corrispondano meglio a ciò che è effettivamente necessario.

  4. Ridimensionamento automatico: usare il ridimensionamento automatico per modificare le risorse usate in base al modo in cui si è occupati. Assicurarsi di impostare un limite massimo di ridimensionamento per evitare picchi improvvisi che possono essere costosi e non necessari.

Dopo aver apportato queste modifiche, testare per assicurarsi che tutto funzioni ancora come dovrebbe. Monitorare continuamente l'utilizzo delle risorse e modificare l'allocazione delle risorse quando le richieste del carico di lavoro cambiano nel tempo. Esaminare e ottimizzare regolarmente l'utilizzo delle risorse per mantenere l'efficienza dei costi e l'ottimizzazione delle prestazioni.

Ottimizzare le risorse di ripristino di emergenza. L'ottimizzazione degli ambienti di ripristino di emergenza consiste nel garantire che le risorse allocate per il ripristino di emergenza vengano usate in modo efficiente. Una strategia di ripristino di emergenza calda (passiva attiva) è una fonte comune di sottoutilizzazione. In una strategia di ripristino di emergenza ad accesso frequente, un ambiente riceve tutto il carico mentre l'altro ambiente non è inattiva fino a quando non è presente uno scenario di emergenza. Per ottimizzare un ambiente di ripristino di emergenza, considerare come un approccio attivo (attivo-attivo), ad accesso sporadico (attivo-off) o a ridistribuire attivo può aiutare a evitare risorse sottoutilizzate. Ecco una panoramica di questi tre approcci di ripristino di emergenza:

  • Piani di scelta frequente: sia gli ambienti primari che secondari servono il traffico simultaneamente. Il carico di lavoro può bilanciare i carichi tra questi ambienti e rispondere alle richieste in tempo reale. La distribuzione del carico tra due ambienti attivi consente di usare risorse più economiche, ridurre i colli di bottiglia a virgola singola e utilizzare le capacità al massimo. Può causare costi ridotti in termini di wastage delle risorse o inattività. Un approccio frequente potrebbe richiedere più investimenti nella sincronizzazione e mantenere la parità tra i due ambienti.

  • Piani ad accesso sporadico: un modello di ripristino di emergenza a freddo prevede un ambiente di standby che rimane inattivo fino a quando un'emergenza attiva la necessità di failover. Poiché l'ambiente di standby non è attivamente in esecuzione, i costi correlati a calcolo, archiviazione e operazioni di rete vengono ridotte al minimo. Le spese riguardano l'archiviazione di backup, immagini di macchine virtuali o modelli. Il failover nel modello a freddo può richiedere più tempo perché le risorse devono essere riavviate e i dati potrebbero essere necessari per il ripristino. Assicurarsi che il tempo di ripristino sia allineato agli obiettivi di tempo di ripristino dell'azienda prima di eseguire il commit in questo approccio.

  • Ridistribuimento attivo: questa strategia usa l'infrastruttura come codice. Quando si verifica un evento di failover, si distribuisce l'ambiente secondario usando modelli e script predefiniti. Senza risorse di calcolo predefinite nell'ambiente di ripristino di emergenza, è possibile risparmiare sui costi associati alla gestione delle risorse inattive. Si comportano solo i costi durante la distribuzione effettiva in uno scenario di failover. Come l'approccio a freddo, questo modello potrebbe introdurre tempi di ripristino più lunghi, soprattutto se la complessità dell'infrastruttura è elevata. È necessario testare e misurare il tempo di ripristino per assicurarsi che soddisfi l'obiettivo del tempo di ripristino.

Ottimizzare le funzionalità della piattaforma

L'ottimizzazione delle funzionalità della piattaforma comporta l'eliminazione o l'aggiornamento delle funzionalità della piattaforma, ad esempio livelli di prestazioni e impostazioni di configurazione, per ottimizzare i costi. Consente di allineare la spesa ai requisiti del carico di lavoro ed evitare spese non necessarie per le funzionalità non necessarie. Ecco alcuni suggerimenti per ottimizzare il costo delle funzionalità della piattaforma:

  • Conoscere le funzionalità degli elementi acquistati: prima di poter ottimizzare, è necessario un inventario chiaro dei servizi e delle relative funzionalità nelle piattaforme cloud. Comprendere le funzionalità e le funzionalità delle piattaforme o dei servizi nel carico di lavoro. Tenere presente il livello specifico scelto e le funzionalità offerte da ogni livello. Ad esempio, se non è necessaria la scalabilità automatica o la rete avanzata, un piano di livello inferiore potrebbe essere sufficiente.

  • Disabilitare le funzionalità inutilizzate: identificare e disabilitare le funzionalità della piattaforma che costano denaro. Potrebbero essere presenti snapshot di archiviazione non autorizzati, dischi inutilizzati, funzionalità di sicurezza ridondanti o funzionalità di rete sottoutilizzate.

  • Usare le versioni corrette: le versioni più recenti di un servizio possono offrire prestazioni simili per lo stesso prezzo. Ad esempio, una macchina virtuale con hardware più recente può spesso offrire le stesse prestazioni per meno denaro.

  • Usare le configurazioni corrette: è possibile pagare più disponibilità o prestazioni rispetto alle esigenze. Eliminare la disponibilità o le prestazioni garantisce che il carico di lavoro non sia necessario.

  • Eliminare l'automazione non autorizzata: valutare i processi di automazione ed eliminare eventuali automazione inutilizzate che potrebbero comportare costi aggiuntivi.

  • Eliminare la ridondanza dello strumento: eliminare gli strumenti che non sono necessari o strumenti che forniscono la stessa funzione. Valutare la potenziale ridondanza negli strumenti usati per la creazione di software, scrittura di codice, sicurezza e monitoraggio. Ad esempio, se si usa GitHub Actions per compilare il software, non è necessario acquistare un altro strumento che compila software. Prima di acquistare funzionalità o strumenti, verificare se nel carico di lavoro è già presente uno strumento che può eseguire il processo. Eliminare la ridondanza dello strumento per evitare i soldi sprecate e fare la maggior parte di ciò che hai già.

Impedire componenti non ottimizzati

La prevenzione di componenti non ottimizzati riguarda la certezza che i componenti siano essenziali e ottimizzati prima di aggiungere o modificare. Il modo migliore per liberarsi dei rifiuti consiste nell'evitare in primo luogo. Usare le strategie che impediscono spese non necessarie indirizzando l'inefficienze alla radice, assicurando che un carico di lavoro venga eseguito in modo conveniente fin dall'inizio. Per prevenire i rifiuti, prendere in considerazione queste strategie:

  • Trovare la causa radice prima di modificare le soluzioni: prima di risolvere un problema, assicurarsi di sapere cosa sta effettivamente causando. Ad esempio, se il sito Web è lento, non passare immediatamente a un nuovo sistema. Prima di tutto, capire perché è lento. Si potrebbe scoprire che il problema reale è un altro problema, ad esempio query di database non valido. Risolvere il problema reale per risparmiare tempo e denaro.

  • Applica metadati: applica metadati per organizzare e tenere traccia delle risorse. È possibile usare i metadati per classificare e raggruppare le risorse, semplificando la traccia, l'eliminazione ed evitare risorse orfane. Creare una strategia di metadati coerente tra le risorse. Prendere in considerazione l'aggiunta di proprietari, la durata prevista della risorsa ,ad esempio , sunset-30do altri tag.

  • Documentare le modifiche non standard: documentare le modifiche apportate all'infrastruttura o alle configurazioni eseguite all'esterno del normale processo di controllo del carico di lavoro per ridurre i costi imprevisti. Ad esempio, è possibile aumentare le capacità di ridimensionamento (up o out) di una risorsa per soddisfare una domanda a breve termine o valutare un problema, ma dimenticare di ridimensionarlo. Apportare un elenco di modifiche non standard e usarle come promemoria per ripristinare le modifiche quando non sono più necessarie.

  • Semplificare le operazioni: semplificare l'infrastruttura e ridurre al minimo la complessità per ridurre i costi. Usare solo le risorse e i servizi necessari che soddisfano i requisiti.

Facilitazione di Azure

Ottimizzazione delle funzionalità dell'applicazione: è possibile usare Monitoraggio di Azure e Application Insights per monitorare l'utilizzo dell'applicazione e identificare le aree che sono o non vengono usate. In base alle informazioni dettagliate raccolte, è possibile prendere decisioni informate per rimuovere o ottimizzare le funzionalità inutilizzate o sottoutilizzate.

Ottimizzazione delle risorse del carico di lavoro e delle funzionalità della piattaforma: Azure Advisor fornisce raccomandazioni sui costi per identificare ed eliminare le risorse inutilizzate. È possibile usare Advisor per analizzare l'utilizzo delle risorse e ricevere suggerimenti sulle risorse da rimuovere o ridurre. La cartella di lavoro Ottimizzazione costi in Azure Advisor funge da hub centralizzato per alcuni degli strumenti più comunemente usati che consentono di guidare l'utilizzo e l'efficienza degli obiettivi. Offre una serie di consigli, inclusi i consigli sui costi di Azure Advisor. Consente inoltre di identificare le risorse inattive e di gestire le macchine virtuali deallocate in modo non corretto.

Monitoraggio di Azure supporta le cartelle di lavoro. Con le cartelle di lavoro di Monitoraggio di Azure è possibile trovare o creare una cartella di lavoro che trova e segnala risorse orfane in un ambito definito. È possibile usare Automazione di Azure per arrestare le macchine virtuali durante periodi di inattività. Gli arresti delle risorse consentono di ridurre i costi riducendo al minimo l'uso delle risorse inattive.

È possibile usare la funzionalità di scalabilità automatica in Azure per ridimensionare automaticamente l'applicazione in base alle condizioni predefinite, quindi non è necessario sovraprovisionare la capacità. La scalabilità automatica consente di allocare le risorse in modo efficiente e conveniente.

Dal punto di vista della progettazione, i servizi di bilanciamento del carico di Azure possono distribuire carichi tra zone e aree di disponibilità. Questi servizi di bilanciamento del carico possono aiutare a eliminare le risorse inattive, ad esempio negli approcci di ripristino di emergenza.

Elenco di controllo Ottimizzazione costi

Fare riferimento al set completo di raccomandazioni.