Share via


Consigli per l'ottimizzazione dei costi dell'ambiente

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

CO:08 Ottimizzare i costi dell'ambiente. Allineare la spesa per classificare in ordine di priorità gli ambienti di preproduzione, produzione, operazioni e ripristino di emergenza. Per ogni ambiente, prendere in considerazione la disponibilità, le licenze, le ore di funzionamento e le condizioni necessarie e la sicurezza. Gli ambienti non di produzione devono emulare l'ambiente di produzione. Implementare compromessi strategici in ambienti non di produzione.

Questa guida descrive le raccomandazioni per l'ottimizzazione dei costi degli ambienti del carico di lavoro. Ogni ambiente deve essere personalizzato per lo scopo specifico e ottimizzato per l'efficienza dei costi. È importante fare compromessi strategici e allocare risorse in cui sono più importanti, senza compromettere i componenti critici. Trattando gli ambienti in modo diverso e ottimizzandoli di conseguenza, è possibile ottenere un equilibrio tra ottimizzazione dei costi e soddisfare gli obiettivi necessari.

Definizioni

Termine Definizione
Obiettivo del punto di ripristino (RPO) Durata massima accettabile della perdita di dati durante un evento imprevisto.
Obiettivo del tempo di ripristino (RTO) Il tempo massimo accettabile in cui un'applicazione può rimanere non disponibile dopo un evento imprevisto.
Contratto di servizio Contratto contrattuale tra il provider di servizi e il cliente del servizio. Il contratto definisce gli obiettivi del livello di servizio . Il mancato rispetto del contratto potrebbe avere conseguenze finanziarie per il provider di servizi.

Strategie di progettazione chiave

L'obiettivo di ottimizzare i costi dell'ambiente è trovare il giusto equilibrio tra valore, costo e rischio per ogni ambiente, inclusi ambienti di produzione, preproduzione e ripristino di emergenza. Personalizzare ogni ambiente per un uso specifico per risparmiare denaro e usare in modo efficiente le risorse. Determinare i vantaggi di ogni ambiente, ad esempio efficienza o soddisfazione dei clienti. Si vuole valutare il ritorno sugli investimenti (ROI) per l'ambiente, anche se non crea un profitto diretto. Spendere più denaro in ambienti ad alto rischio per ridurre i problemi e risparmiare denaro in ambienti a basso rischio. Mirare a bilanciare valore, costo e rischio in ogni ambiente.

Valutare il valore dell'ambiente

La valutazione del valore di ogni ambiente implica la comprensione dell'effetto più ampio sull'azienda, la valutazione della soddisfazione degli utenti e la determinazione dell'allineamento con gli obiettivi organizzativi generali. Questa valutazione consente di prendere decisioni informate sull'allocazione delle risorse e allineare i costi alle priorità ambientali. L'essenza del valore si estende oltre la quantità di ricavi generati da un ambiente. Quando si valuta il valore di un ambiente, è necessario classificare in ordine di priorità la spesa in modo che restituisca gli obiettivi del carico di lavoro. Per valutare il valore di ogni ambiente, considerare i fattori seguenti:

  • Prendere in considerazione l'utente: considerare gli utenti che usano ogni ambiente e le informazioni necessarie. Ad esempio, i clienti usano l'ambiente di produzione, che deve essere affidabile e soddisfare contratti di servizio specifici per prestazioni e tempi di attività.

    D'altra parte, l'ambiente di sviluppo è principalmente per il team del carico di lavoro, ad esempio sviluppatori e tester. Questo ambiente non deve soddisfare i contratti di servizio rivolti ai clienti, ma deve avere gli strumenti e le risorse necessari per il team per lavorare in modo efficace.

    Quando si conoscono le esigenze specifiche degli utenti in ogni ambiente, è possibile allocare meglio le risorse ed evitare costi aggiuntivi. Questo evitamento garantisce che ogni ambiente sia funzionale e conveniente.

  • Allinearsi alle misure organizzative di valore: allineare le attività di riduzione dei costi alle priorità dell'organizzazione, ad esempio profitto o soddisfazione dei dipendenti. Per ogni ambiente, comprendere come viene definito l'esito positivo, in modo da poter mantenere le azioni di destinazione. Ad esempio, se l'organizzazione è incentrata sull'ottimizzazione dei profitti o sulla soddisfazione dei dipendenti, allineare le decisioni di spesa con tali metriche.

Determinare i costi dell'ambiente

Determinare i costi dell'ambiente consiste nel conoscere i costi dell'infrastruttura, dei servizi, delle licenze e delle spese operative in ogni ambiente del carico di lavoro. Gli strumenti di gestione dei costi sono fondamentali per ottenere informazioni dettagliate sui modelli di spesa e sulle tendenze in tutti gli ambienti. Per determinare i costi dell'ambiente, prendere in considerazione queste strategie:

  • Identificare i driver dei costi: identificare i fattori chiave che determinano i costi in ogni ambiente. Questi fattori possono includere l'utilizzo delle risorse, l'utilizzo dell'archiviazione, la conservazione dei dati, il trasferimento dei dati e servizi specifici.

  • Valutare i rischi: valutare i rischi associati alle decisioni di spesa e il potenziale effetto sull'ambiente e sulle operazioni aziendali. Prendere in considerazione fattori quali sicurezza dei dati, conformità, prestazioni, controlli e requisiti del contratto di servizio.

  • Monitorare e regolare la spesa: monitorare e analizzare continuamente i modelli di spesa, il recapito dei valori e i fattori di rischio. Esaminare e modificare regolarmente le strategie di ottimizzazione della spesa man mano che si evolvono le esigenze dell'ambiente e dell'azienda.

Ottimizzare l'ambiente di produzione

L'ottimizzazione dei costi nell'ambiente di produzione comporta l'implementazione di strategie per ridurre le spese non necessarie e migliorare l'efficienza operativa. Concentrarsi sulla differenziazione delle distribuzioni di produzione e sulle esigenze degli utenti. Ecco i suggerimenti per ottimizzare l'ambiente di produzione:

  • Differenziare le aree: spendere meno in aree che servono meno clienti. Ad esempio, è consigliabile investire di più in un'area che serve il 90% degli utenti rispetto a un'area che serve il 10% degli utenti. Modificare la strategia di distribuzione per soddisfare i requisiti di ogni area e segmento utente.

  • Differenziare il ridimensionamento: implementare strategie di scalabilità orizzontale e verticale. Ridimensionare le risorse in modo efficiente per soddisfare la domanda senza over-provisioning.

  • Differenziare l'infrastruttura: scegliere soluzioni hardware e infrastruttura convenienti che soddisfino le prestazioni e la scalabilità necessarie. Prendere in considerazione fattori come prestazioni, costi, affidabilità e scalabilità.

  • Ottimizzare i modelli di tenant: personalizzare l'ambiente in base al modello di tenant. Ad esempio, spendere di più per servizi e funzionalità per tenant a pagamento e spendere meno per i tenant senza pagamento.

Ottimizzare l'ambiente di ripristino di emergenza

Un ambiente di ripristino di emergenza si riferisce all'infrastruttura e ai processi usati da un carico di lavoro per il ripristino dopo un evento di arresto improvviso. Gli eventi di interruzione includono calamità naturali, attacchi informatici e errori hardware. Bilanciare il costo della gestione di un ambiente di ripristino di emergenza e il potenziale impatto di un evento di interruzione. Considerare le strategie seguenti:

  • Valutare la criticità dei sistemi e dei dati: valutare l'importanza dei sistemi e dei dati per determinare il livello di protezione e risorse necessario per ogni componente.

  • Determinare gli obiettivi RTO e RPO: per determinare la progettazione dell'ambiente di ripristino di emergenza, definire i limiti di tempo di inattività e perdita di dati accettabili per ogni sistema o applicazione.

  • Ottimizzare un ambiente di ripristino di emergenza sporadico: un ambiente di ripristino di emergenza sporadico ha un'infrastruttura limitata o nessuna infrastruttura o servizi in esecuzione. È possibile usare l'infrastruttura come codice (IaC) per distribuire rapidamente l'infrastruttura durante un evento di arresto improvviso. I criteri di backup e archiviazione devono soddisfare gli obiettivi RPO e gli oggetti RTO dell'ambiente. Assicurarsi che la quantità e la frequenza dei backup dei dati non siano più affidabili del necessario.

    Compromesso: un ambiente di ripristino di emergenza sporadico è un'opzione conveniente, ma potrebbero essere presenti tempi di ripristino lunghi.

  • Ottimizzare un ambiente di ripristino di emergenza frequente: tutti i servizi e l'infrastruttura vengono eseguiti in un ambiente di ripristino di emergenza frequente. I dati rispecchiano il sito primario in tempo reale. Offre un failover quasi istantaneo e una perdita minima di dati in caso di emergenza. Prendere in considerazione una distribuzione attiva-attiva per ottimizzare i costi.

  • Ottimizzare un ambiente di ripristino di emergenza caldo: un approccio di ripristino di emergenza caldo è un punto intermedio tra un ambiente di ripristino di emergenza sporadico e un ambiente di ripristino di emergenza frequente. Un ambiente ad accesso frequente è parzialmente attivo e si sincronizza periodicamente con il sito primario. Offre un equilibrio tra il costo e il tempo di ripristino. Tuttavia, si tratta dell'approccio ottimizzato per i costi minimo. Prendere in considerazione un approccio sporadico o frequente per ottimizzare i costi.

Ottimizzare gli ambienti di preproduzione

L'ottimizzazione degli ambienti di preproduzione comporta la gestione strategica delle risorse all'interno di aree di sviluppo, test e gestione temporanea per simulare attentamente la produzione riducendo i costi non necessari. Gli ambienti di preproduzione non richiedono la scalabilità completa e la disponibilità degli ambienti di produzione. La maggior parte delle opportunità consiste nel personalizzare questi ambienti in base a specifiche esigenze di test e sviluppo senza duplicare esattamente la produzione. Le aree di riduzione dei costi includono l'uso di risorse a basso costo, la disattivazione dei servizi non necessarie e l'applicazione di sconti offerti per l'utilizzo della preproduzione. Prendere in considerazione le strategie seguenti per ottimizzare gli ambienti di preproduzione:

Valutare gli ambienti di preproduzione

L'allocazione insufficiente o non corretta degli ambienti di preproduzione potrebbe causare il provisioning eccessivo o il sottoprovisioning delle risorse. Per valutare gli ambienti di preproduzione per il carico di lavoro, prendere in considerazione le indicazioni seguenti:

  • Comprendere i tipi di ambiente: identificare i tipi di ambienti di preproduzione, ad esempio sviluppo, test e gestione temporanea, necessari per il carico di lavoro. Ogni ambiente deve avere un ruolo definito e una funzione specifica per garantire un'allocazione efficiente delle risorse.

  • Allinearsi ai requisiti degli utenti: prima di configurare gli ambienti di preproduzione, comprendere i requisiti e le aspettative degli utenti. Personalizzare le caratteristiche e le specifiche in base alle proprie esigenze per evitare spese superflue di funzionalità o risorse.

  • Consolidare l'ambiente: determinare se è possibile combinare gli ambienti senza compromettere le funzionalità. Combinare ambienti con funzioni che non si sovrappongono. Ad esempio, è possibile unire un ambiente di accettazione utente con un ambiente di controllo qualità. Le funzioni sono distinte e un ambiente è in genere inattiva quando l'altro è in uso.

    Rischio: prestare attenzione quando si combinano gli ambienti per assicurarsi di non introdurre conflitti o compromettere i processi di test o sviluppo.

La tabella seguente fornisce esempi di ambienti di preproduzione comuni.

Esempio di ambiente di preproduzione Descrizione
Ambiente di sviluppo Gli sviluppatori usano questo ambiente per scrivere e testare il codice. Offre uno spazio sandbox, in modo che gli sviluppatori possano sperimentare, compilare e integrare le modifiche del codice.
Ambiente di controllo della qualità Questo ambiente è dedicato alle attività di controllo della qualità. Per il test per identificare e correggere bug o problemi prima della distribuzione nell'ambiente di produzione.
Ambiente di sicurezza Questo ambiente è destinato ai test di sicurezza. È per garantire che un'applicazione sia protetta da minacce e vulnerabilità.
Ambiente di test di accettazione dell'utente In questo ambiente, gli utenti finali e gli stakeholder testano un'applicazione per convalidare la funzionalità e assicurarsi che soddisfi i requisiti e le aspettative.
Ambiente di gestione temporanea Questo ambiente è molto simile all'ambiente di produzione. Si tratta di test e convalida finali prima della distribuzione nell'ambiente di produzione.

Applicare la governance

L'applicazione della governance riguarda la limitazione delle opzioni di distribuzione negli ambienti di preproduzione per controllare le spese e attenuare i rischi. Nella preproduzione è possibile personalizzare le configurazioni e distribuire le risorse. Più l'ambiente di preproduzione devia dall'ambiente di produzione, maggiore è il rischio potenziale. Usare la governance per vincolare gli ambienti di preproduzione. Considerare le linee guida seguenti:

  • Limitare i livelli di prestazioni: valutare i requisiti di prestazioni degli ambienti di preproduzione. Scegliere i livelli di prestazioni che bilanciano i costi e le prestazioni. Un servizio ha spesso livelli di prestazioni diversi e alcuni di questi livelli sono più adatti per i test. Alcuni servizi dispongono di livelli che offrono funzionalità simili alla produzione, ma non sono dotate di un contratto di servizio. Questi servizi riducono i costi, ma forniscono comunque le funzionalità necessarie per il test e lo sviluppo.

  • Informazioni sugli SKU di preproduzione: alcuni SKU sono progettati per gli ambienti di sviluppo. Per ottimizzare i costi, valutare i servizi e i livelli. Optare per i livelli a prestazioni ridotte se il carico di lavoro non richiede prestazioni elevate.

  • Controllare il numero di istanze e CPU: determinare il numero ottimale di istanze e risorse della CPU necessarie per l'ambiente di preproduzione in base alle esigenze del carico di lavoro. Evitare il provisioning eccessivo delle risorse per ridurre al minimo i costi.

  • Limitare la conservazione e la registrazione: definire i criteri di conservazione per i log e i dati negli ambienti di preproduzione. Prendere in considerazione la durata necessaria per conservare i log e i dati in base ai requisiti di conformità e alle considerazioni sui costi. Evitare un numero eccessivo di registrazione e conservazione per ridurre i costi di archiviazione.

  • Usare un'architettura della CPU coerente: usare la stessa architettura della CPU nella preproduzione e nell'ambiente di produzione. Ad esempio, le applicazioni x86 non vengono eseguite in modo nativo in Azure Resource Manager e viceversa. Usare la stessa architettura della CPU dell'ambiente di produzione per garantire la compatibilità e ridurre al minimo i potenziali problemi.

  • Usare lo stesso sistema operativo: evitare di modificare il sistema operativo (ad esempio da Windows a Linux) o il kernel negli ambienti di preproduzione. Il software compilato per Windows spesso non viene eseguito in modo nativo in Linux senza un livello di compatibilità e viceversa. I file system e le strutture di directory sono diversi, che possono causare problemi di applicazione di patch. Gli ambienti coerenti consentono di ridurre il rischio di problemi di compatibilità e garantire distribuzioni uniformi.

  • Vincola il ridimensionamento: per ottimizzare i costi, è possibile vincolare l'automazione per ridurre l'automazione da esecuzione. Ad esempio, impostare un limite massimo di scalabilità a tre nell'ambiente di sviluppo e impostarlo su 10 nell'ambiente di produzione. Vincolare il ridimensionamento per controllare l'utilizzo delle risorse e i costi di automazione.

  • Disattiva risorse non necessarie: disattiva le risorse quando non vengono usate attivamente, ad esempio durante gli orari di minore attività e i fine settimana. È possibile usare gli strumenti o gli script di automazione per pianificare l'arresto e l'avvio delle risorse. Alcuni fornitori forniscono API che è possibile usare per arrestare e avviare le risorse a livello di codice. Prendere in considerazione l'uso di IaC per creare ambienti temporanei che è possibile rimuovere quando non sono più necessari.

  • Limitare le aree disponibili: considerare il potenziale vantaggio dell'esecuzione di ambienti di preproduzione in aree diverse in cui le risorse di Azure potrebbero risultare più economiche. Limitare le distribuzioni di preproduzione a queste aree per ottimizzare il costo di questi ambienti.

Bilanciare la somiglianza con la produzione

Spesso non è necessario e costoso per gli ambienti di preproduzione rispecchiare esattamente l'ambiente di produzione. L'obiettivo è garantire che ogni ambiente di preproduzione sia appropriato rispetto alla produzione per evitare costi non necessari. Tuttavia, quando la preproduzione e la produzione sono diverse, esiste il rischio di distribuire un bug nell'ambiente di produzione. Più sono diversi questi ambienti, maggiore è il rischio. Personalizzare l'ambiente di preproduzione per soddisfare le proprie esigenze può aiutare a gestire i rischi ottimizzando i costi. Per bilanciare la somiglianza con la produzione, considerare le raccomandazioni seguenti:

  • Evitare repliche esatte: evitare di creare l'ambiente di preproduzione una copia esatta dell'ambiente di produzione. Può inutilmente aumentare i costi. Create un ambiente di preproduzione conveniente, ma consente di individuare e affrontare potenziali rischi prima della distribuzione.

  • Evitare deviazioni estreme: evitare una deviazione eccessiva dalla produzione, ad esempio l'uso di servizi diversi. Diversi servizi potrebbero non simulare accuratamente rischi reali. Determinare una soglia di rischio e non superare la soglia esclusivamente per risparmiare denaro.

  • Abbreviare i runtime: è consigliabile abbreviare i runtime dei processi nella fase di preproduzione per risparmiare denaro. Prestare attenzione alle nuove vulnerabilità che potrebbero verificarsi, ad esempio perdite di memoria non rilevate.

  • Esaminare le licenze: esaminare i piani di licenza per gli strumenti di sicurezza. Se il numero di nodi varia in modo significativo tra le configurazioni di produzione e preproduzione, rivaluta le esigenze per ottimizzare i costi senza compromettere la sicurezza.

Ottimizzare gli ambienti di sviluppo

Gli ambienti di sviluppo sono progettati per scopi di sviluppo, test e debug. Hanno cicli di vita più brevi e vengono spesso creati in base alle esigenze ed esistono per un breve periodo di tempo. Gli ambienti di sviluppo hanno in genere requisiti inferiori per affidabilità, capacità e sicurezza rispetto ad altri ambienti di preproduzione e produzione. Potrebbero avere meno funzionalità e possono accettare un utilizzo inferiore delle risorse. Per ottimizzare l'ambiente di sviluppo:

  • Valutare gli strumenti: valutare regolarmente l'efficacia dei costi della configurazione corrente degli strumenti, inclusi gli ambienti di sviluppo integrato (IDE), le licenze e gli strumenti correlati. Prendere in considerazione alternative gratuite o open source che offrono funzionalità simili senza compromettere la qualità. Rivalutare continuamente la necessità e l'efficienza di questi strumenti man mano che il panorama di sviluppo si evolve.

  • Prendere in considerazione l'hardware: valutare i costi e le prestazioni delle configurazioni hardware correnti. Investire in hardware migliore e più efficiente può migliorare la produttività e ridurre i costi a lungo termine. Invece di frequenti sostituzioni hardware, è consigliabile aggiornare i sistemi esistenti per prolungarne la durata e migliorare le prestazioni.

  • Ottimizzare il numero di ambienti: analizzare i vantaggi e gli svantaggi degli ambienti di sviluppo individualizzati rispetto a un ambiente condiviso. I singoli ambienti possono simulare le configurazioni di produzione, prevenire interferenze tra gli sviluppatori e offrire configurazioni personalizzate. Tuttavia, il ridimensionamento diventa più costoso man mano che aumenta il numero di sviluppatori. Gli ambienti condivisi possono risparmiare sui costi, ma potrebbero verificarsi problemi di affidabilità se i problemi interessano l'intero team di sviluppo contemporaneamente. Trovare il giusto equilibrio in base al costo, alla mitigazione dei rischi, all'efficienza e alla soddisfazione degli sviluppatori.

  • Pulire regolarmente: pulire e ottimizzare regolarmente l'ambiente di sviluppo per evitare l'accumulo di risorse orfane, dati inutilizzati e esperimenti di verifica. Implementare processi di pulizia o strumenti automatizzati per identificare e rimuovere le risorse inutilizzate. Mantenere solo componenti essenziali e attivi. La pulizia regolare consente di ridurre i costi di archiviazione e garantisce un utilizzo efficiente delle risorse.

  • Implementare la scalabilità campionata: invece di ridimensionare tutti i componenti alla capacità massima, prendere in considerazione un approccio campionato in cui è possibile ridimensionare in modo selettivo i componenti vitali. Questo approccio può essere conveniente riducendo al minimo i rischi. Valutare il rapporto rischio-vantaggio per non ridimensionare determinati elementi e considerare il potenziale effetto sull'ambiente.

  • Ottimizzare la gestione dei dati: gli ambienti di sviluppo potrebbero avere esigenze basse per la conservazione dei dati e la frequenza di backup.

Prendere in considerazione l'emulazione degli endpoint

È possibile ottimizzare i costi in un ambiente di preproduzione usando l'emulazione degli endpoint o gli endpoint fittizi, in particolare per risorse costose come GPU. Identificare i componenti o i servizi nell'ambiente di preproduzione che sono i più costosi o a elevato utilizzo di risorse. Usare endpoint fittizi per simulare le risposte di questi componenti costosi senza richiamarli. Per simulare le risposte api, è possibile usare strumenti come WireMock, il server fittizio di Postman o le implementazioni personalizzate.

L'emulazione e gli endpoint fittizi consentono di risparmiare sui costi, ma è necessario assicurarsi che rappresentino l'ambiente di produzione in un grado sufficiente per i test. Bilanciare l'accuratezza e il costo per evitare problemi futuri nell'ambiente di produzione. Ad esempio, se le GPU sono un fattore di costo principale, prendere in considerazione l'emulazione della GPU per le attività che non richiedono una potenza di elaborazione GPU reale nelle fasi di preproduzione. L'emulazione potrebbe non rappresentare completamente le prestazioni o i quirk delle GPU reali, quindi usarla quando il comportamento della GPU esatto non è critico per i test di preproduzione.

Facilitazione di Azure

Determinare e ottimizzare i costi dell'ambiente:Gestione costi Microsoft è una suite di strumenti che consentono alle organizzazioni di monitorare, allocare e ottimizzare il costo dei carichi di lavoro Microsoft Cloud. Gestione costi è disponibile per chiunque abbia accesso a un ambito di fatturazione o gestione delle risorse.

Azure Advisor è uno strumento che fornisce raccomandazioni sull'ottimizzazione dei costi, tra cui l'identificazione di aree di utilizzo delle macchine virtuali che richiedono l'ottimizzazione. Usare Advisor per prendere decisioni informate e ottimizzare i costi nell'ambiente di Azure. Azure offre strumenti e funzionalità di gestione dei costi che consentono di assegnare priorità alla spesa. È possibile usare questi strumenti per tenere traccia e analizzare i costi in ambienti, impostare i budget e ricevere raccomandazioni sull'ottimizzazione dei costi.

Applicazione della governance: con Criteri di Azure è possibile limitare i tipi di risorse, gli SKU e le istanze definendo regole dei criteri che applicano restrizioni ai tipi di risorse che è possibile distribuire nell'ambiente Azure. È possibile mantenere il controllo sulle risorse di cui è stato effettuato il provisioning e garantire la conformità ai criteri e alle procedure consigliate dell'organizzazione.

Per limitare i tipi di risorse usando Criteri di Azure, è possibile definire regole dei criteri che specificano i tipi di risorse consentiti. Applicare queste regole alle sottoscrizioni o ai gruppi di risorse di Azure pertinenti. Criteri di Azure impedisce agli utenti di distribuire risorse non consentite.

Usare Azure Resource Manager per definire e gestire le risorse in modo dichiarativo. È possibile ottimizzare le risorse allocate a ogni ambiente in base ai requisiti specifici. Usare modelli e parametrizzare le configurazioni delle risorse per ottimizzare i costi.

Ottimizzazione degli ambienti di preproduzione: Azure offre opzioni di prezzi di sviluppo/test che offrono tariffe scontate per ambienti non di produzione. È possibile allocare più risorse e budget agli ambienti di produzione critici, che ottimizzano i costi in ambienti non di produzione. È anche possibile usare l'offerta di licenze di Azure, Vantaggio Azure Hybrid.

È possibile usare Gestione API di Azure per la simulazione dell'API. Gestione API funge da facciata per i servizi back-end, che consente ai provider di API di astrarre implementazioni api ed evolvere l'architettura back-end senza influire sui consumer di API.

Elenco di controllo Ottimizzazione costi

Fare riferimento al set completo di raccomandazioni.