Suggerimenti 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 legacy, non necessari e sottoutilizzati, incluse le funzionalità dell'applicazione, le funzionalità della piattaforma e le risorse. |
---|
Questa guida descrive le raccomandazioni per l'ottimizzazione dei costi dei componenti del carico di lavoro. L'ottimizzazione dei costi dei componenti fa riferimento al processo di valutazione e perfezionamento dell'efficienza dei singoli elementi che costituiscono un carico di lavoro. Enfatizza la necessità di una revisione costante e la possibilità di eliminare o migliorare componenti obsoleti, non indispensabili o impiegati di rado, come le funzionalità dell'applicazione, della piattaforma e le risorse. Illustra anche l'ottimizzazione dei costi degli ambienti di ripristino di emergenza e come evitare di introdurre componenti non ottimizzati. Le indicazioni contenute in questo articolo si applicano ai carichi di lavoro esistenti che non sono nella fase di progettazione. L'abbandono dell'ottimizzazione regolare dei componenti può comportare costi gonfiati, sprechi di risorse e carichi di lavoro inefficienti che svuotano sia il tempo che il denaro.
Definizioni
Termine | Definizione |
---|---|
Funzionalità dell'applicazione | Una funzionalità distinta all'interno del software applicativo che consente agli utenti di eseguire attività specifiche o di 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. |
Conto risorse | Una 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 nel perfezionare i vari elementi di un carico di lavoro, tra cui funzionalità dell'applicazione, funzionalità della piattaforma e 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 comportano una spesa maggiore di quella necessaria. Il processo di ottimizzazione dei costi dei componenti garantisce l'allocazione di risorse a funzionalità e componenti che offrono il massimo valore, evitando spese non necessarie.
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 offrono 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 producono un ritorno sufficiente sugli investimenti.
Valutare il valore della funzionalità dell'applicazione
Per determinare il valore di una funzionalità, prendere in considerazione i relativi 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. Il feedback dei clienti, i sondaggi e i dati di utilizzo possono essere utili per comprendere il valore percepito.
Obiettivi aziendali: valutare il modo in cui la funzionalità è allineata agli obiettivi strategici dell'azienda. Valutare il modo in cui 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à fornisce 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 un'allocazione e un'ottimizzazione efficaci delle risorse. Quando si valutano i costi, si considerino diversi aspetti, ad esempio:
Impegno per lo sviluppo: valutare il tempo, le risorse e le competenze necessarie per sviluppare e gestire 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à, incluse correzioni di bug, aggiornamenti della sicurezza e risoluzione dei problemi.
Infrastruttura e utilizzo delle risorse: valutare l'effetto della funzionalità sui requisiti dell'infrastruttura, tra cui risorse server, archiviazione e 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 product manager, sviluppatori di software e business analyst, per valutare il valore di funzionalità specifiche per gli obiettivi aziendali. Questa collaborazione è essenziale per l'ottimizzazione dei costi perché fornisce informazioni dettagliate sulle attività di manutenzione e identifica le funzionalità che potrebbero ostacolare la produttività o sottrarre allo sviluppo di nuove funzionalità preziose. Il team di sviluppo può fornire informazioni importanti sulla quantità di lavoro impiegato per gestire determinate funzionalità. Incoraggiarli a parlare delle funzionalità che potrebbero essere più difficili di quanto ne valga la pena, soprattutto se queste funzionalità distraggono il team dalla creazione di nuove funzionalità.
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: prendere in considerazione 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: è possibile rimuovere inavvertitamente funzionalità critiche per determinati utenti o scenari e influire negativamente su prestazioni, operazioni e sicurezza nell'applicazione.
Reinvesti: alcune funzionalità dell'applicazione potrebbero non aggiungere un valore sufficiente nello stato corrente, ma potrebbero aggiungere valore se vengono reinvestiti. Il reinvestimento significa rielaborare o promuovere la funzionalità dell'applicazione. Classificare in ordine di priorità i miglioramenti identificati in base al valore e alla fattibilità. Determinare la roadmap e la sequenza temporale per l'implementazione delle modifiche. Prendere in considerazione fattori quali risorse di sviluppo, dipendenze e potenziali effetti sull'applicazione.
Monetizzare: trasformare le funzionalità dell'applicazione in un'opportunità di generazione dei ricavi tramite monetizzazione. A volte le funzionalità offrono valore agli utenti, ma non valgono l'investimento corrente. Esplora le opportunità per 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 delle risorse sottoutilizzate necessarie per il carico di lavoro. Questo sforzo può risparmiare denaro, evitare sprechi e garantire che il carico di lavoro usi solo le risorse che aggiungono valore.
Rimuovere le risorse del carico di lavoro inutilizzate. Le risorse inutilizzate sono servizi distribuiti che i processi di carico di lavoro o operazioni non usano. Queste risorse potrebbero essere inattite a lungo termine, orfane o dimenticate. Non forniscono alcun ritorno sugli investimenti e dovresti rimuoverli. Le cause comuni delle risorse inutilizzate includono:
- Avvisi.
- Compilazioni demo.
- Rimozione delle autorizzazioni dell'ambiente.
- Rimozione delle funzionalità.
- Indirizzi IP.
- Firewall di rete.
- Modello di verifica.
- 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:
Eseguire un inventario: eseguire un inventario completo di tutte le risorse all'interno del carico di lavoro in ambienti diversi.
Trovare risorse orfane: le risorse possono diventare orfane quando non sono più necessarie o quando vengono rimosse le risorse padre. 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.
Rimuovere i componenti inattive: in genere è previsto un costo associato a una risorsa distribuita. Anche se la risorsa consente di arrestare o riallocare, è possibile continuare a pagare per la risorsa. Provare a rimuovere le risorse inattive. Se sono necessari i dati, eseguirne prima il backup e quindi rimuovere la risorsa. È preferibile ridistribuire la risorsa e ripristinare i dati anziché consentire alla risorsa di rimanere inattiva.
Ottimizzare le risorse sottoutilizzate. Le risorse sottoutilizzate rappresentano spese sprecate man mano che si paga per la capacità delle risorse non 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:
Monitorare le risorse: usare gli strumenti per monitorare la quantità di CPU, memoria e archiviazione effettivamente usata. Scegliere il piano migliore che soddisfi le proprie esigenze in base a queste informazioni.
Analizzare l'utilizzo: esaminare i dati per individuare le risorse che non si usano. Prestare attenzione alle risorse che hanno un utilizzo ridotto nel tempo o differenze elevate nell'utilizzo tra i tempi occupati e lenti.
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ò di cui hai effettivamente bisogno.
Scalabilità automatica: usare il ridimensionamento automatico per regolare le risorse usate in base alla disponibilità. Assicurarsi di impostare un limite massimo di scalabilità per evitare picchi improvvisi che possono essere costosi e non necessari.
Dopo aver apportato queste modifiche, verificare che tutto funzioni ancora come dovrebbe. Monitorare continuamente l'utilizzo delle risorse e regolare l'allocazione delle risorse man mano che 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 (attiva-passiva) è una fonte comune di sottoutilizzo. In una strategia di ripristino di emergenza ad accesso frequente, un ambiente riceve tutto il carico mentre l'altro ambiente è inattiva finché non si verifica uno scenario di emergenza. Per ottimizzare un ambiente di ripristino di emergenza, considerare il modo in cui un approccio frequente (attivo-attivo), attivo o ridistribuibile attivo può aiutare a evitare risorse sottoutilizzate. Ecco una panoramica di questi tre approcci di ripristino di emergenza:
Piani di accesso frequente: sia gli ambienti primari che secondari gestiscono il traffico contemporaneamente. 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 singolo punto e usare le capacità al massimo. Può comportare una riduzione dei costi in termini di wastage o inattività delle risorse. 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 comporta un ambiente di standby che rimane inattivo fino a quando un'emergenza non attiva la necessità di failover. Poiché l'ambiente di standby non è in esecuzione attivamente, i costi correlati alle operazioni di calcolo, archiviazione e rete vengono ridotti 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 potrebbe essere necessario ripristinare i dati. Assicurarsi che il tempo di ripristino sia allineato agli obiettivi del tempo di ripristino (RTO) dell'azienda prima di impegnarsi 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 pre-distribuite nell'ambiente di ripristino di emergenza, è possibile risparmiare sui costi associati alla gestione delle risorse inattive. I costi vengono addebitati solo 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, potrebbe essere sufficiente un piano di livello inferiore.
Disabilitare le funzionalità inutilizzate: identificare e disabilitare le funzionalità della piattaforma che costano denaro. Potrebbero essere presenti snapshot di archiviazione non necessarie, 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 di quelle necessarie. Eliminare la disponibilità o le prestazioni garantisce che il carico di lavoro non sia necessario.
Eliminare l'automazione non necessario: valutare i processi di automazione ed eliminare eventuali automazione inutilizzate che potrebbero comportare costi aggiuntivi.
Eliminare la ridondanza dello strumento: eliminare gli strumenti non necessari o gli strumenti che forniscono la stessa funzione. Valutare la potenziale ridondanza negli strumenti usati per la creazione di software, la 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 in grado di eseguire il processo. Eliminare la ridondanza degli strumenti per evitare sprechi di denaro e sfruttare al meglio ciò che hai già.
Essere metodici nelle attività di ottimizzazione
Impedire i componenti non ottimizzati consiste nel garantire in modo proattivo che i componenti siano essenziali e ottimizzati prima di aggiungere o modificare. Il modo migliore per evitare sprechi consiste in primo luogo nell’evitarli. Usare strategie che impediscono spese non necessarie risolvendo le inefficienze nella radice, assicurandosi che un carico di lavoro venga eseguito in modo conveniente fin dall'inizio. Per prevenire gli sprechi, considerare 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 è qualcos'altro, 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 le 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-30d
) o altri tag.Documentare le modifiche non standard: documentare le modifiche apportate all'infrastruttura o alle configurazioni eseguite al di fuori del normale processo di controllo del carico di lavoro per ridurre i costi imprevisti. Ad esempio, è possibile aumentare le capacità di aumento o riduzione delle capacità di una risorsa per soddisfare una domanda a breve termine o valutare un problema, ma dimenticare di ridurre le prestazioni. Apportare un elenco di modifiche non standard e usarle come promemoria per ripristinare le modifiche quando non sono più necessarie.
Semplicità: 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 offre 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ù usati che consentono di favorire l'utilizzo e l'efficienza degli obiettivi. Offre una gamma di raccomandazioni, incluse le raccomandazioni 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 individua e segnala le risorse orfane in un ambito definito. È possibile usare Automazione di Azure per arrestare le macchine virtuali durante i periodi di inattività. Gli arresti delle risorse consentono di ridurre i costi riducendo al minimo l'uso di risorse inattive.
È possibile usare la funzionalità di scalabilità automatica in Azure per ridimensionare automaticamente l'applicazione in base a condizioni predefinite, quindi non è necessario effettuare il overprovisioning della 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 consentono di eliminare le risorse inattive, ad esempio negli approcci di ripristino di emergenza.
Collegamenti correlati
- Raccomandazioni per l'ottimizzazione continua delle prestazioni
- Raccomandazioni per la definizione degli obiettivi di affidabilità
- Raccomandazioni per la progettazione multi-area a disponibilità elevata
- Suggerimenti per l'ottimizzazione del ridimensionamento e del partizionamento
- Raccomandazioni per l'impostazione di protezioni di spesa
Elenco di controllo per l'ottimizzazione dei costi
Fare riferimento al set completo di raccomandazioni.