Ottimizza i costi: computing, container e serverless

Last reviewed 2023-07-12 UTC

Questo documento nel Framework dell'architettura Google Cloud fornisce suggerimenti per aiutarti a ottimizzare il costo delle macchine virtuali (VM), container e risorse serverless in Google Cloud.

Le indicazioni in questa sezione sono rivolte ad architect, sviluppatori e responsabili del provisioning e della gestione delle risorse per i carichi di lavoro nel cloud.

Le risorse di calcolo sono la parte più importante della tua infrastruttura cloud. Quando esegui la migrazione dei carichi di lavoro su Google Cloud, una tipica prima scelta è Compute Engine, che ti consente di eseguire il provisioning delle VM e gestirle in modo efficiente nel cloud. Compute Engine offre un'ampia gamma di tipi di macchine disponibile a livello globale in tutte le Regioni di Google Cloud. I tipi di macchina predefinita e personalizzata di Compute Engine consentono di eseguire VM che offrono una capacità di calcolo simile a quella dell'infrastruttura on-premise. consentendoti di accelerare il processo di migrazione. Compute Engine offre il vantaggio di pagare solo per l'infrastruttura che utilizzi consente risparmi significativi man mano che utilizzi più risorse di calcolo per utilizzo sostenuto.

Oltre a Compute Engine, Google Cloud offre container e serverless computing. L'approccio serverless può essere più conveniente per i nuovi servizi che non sono sempre in esecuzione (ad esempio API, elaborazione dati, e l'elaborazione degli eventi).

Oltre a consigli generali, questo documento fornisce indicazioni per aiutarti ottimizzare il costo delle risorse di computing quando utilizzi i seguenti prodotti:

  • Compute Engine
  • Google Kubernetes Engine (GKE)
  • Cloud Run
  • Cloud Functions
  • App Engine

Consigli generali

I seguenti suggerimenti sono applicabili a tutte le risorse di computing, container e serverless in Google Cloud descritti in questo .

Monitora utilizzo e costi

Utilizza i seguenti strumenti e tecniche per monitorare l'utilizzo e i costi delle risorse:

Controlla il provisioning delle risorse

Utilizza i seguenti suggerimenti per controllare la quantità di risorse di cui è stato eseguito il provisioning nel cloud e la località in cui vengono create le risorse:

  • Per garantire che il consumo e i costi delle risorse non superino il previsione, utilizzare una risorsa quote di spazio di archiviazione.
  • Esegui il provisioning delle risorse nella regione con il costo più basso che soddisfa la latenza i requisiti del tuo carico di lavoro. Per controllare dove viene eseguito il provisioning delle risorse, puoi usare il vincolo del criterio dell'organizzazione gcp.resourceLocations.

Ottenere sconti per impegno di utilizzo

Sconti per impegno di utilizzo (CUD) sono ideali per carichi di lavoro con esigenze prevedibili in termini di risorse. Dopo la migrazione del carico di lavoro per Google Cloud, trovare la base di riferimento per le risorse richieste e ottieni sconti maggiori per l'utilizzo impegnato. Ad esempio, acquista un o per tre anni e ottieni uno sconto notevole su Compute Engine prezzi delle VM.

Automatizza il monitoraggio dei costi utilizzando le etichette

Definisci e assegna etichette costantemente. Di seguito sono riportati alcuni esempi di come utilizzare le etichette per automatizzare monitoraggio dei costi:

  • Assegna l'etichetta alle VM utilizzate solo dagli sviluppatori durante l'orario di apertura env: development. Puoi usare Cloud Scheduler per configurare un server funzione Cloud Function per arrestare queste VM dopo l'orario di lavoro se necessario.

  • Per un'applicazione che ha diversi servizi Cloud Run e le istanze Cloud Functions, assegnano un'etichetta coerente a tutte Cloud Run e Cloud Functions Google Cloud. Identificare le aree ad alto costo e intervenire per ridurre i costi.

Personalizzare i report sulla fatturazione

Configura il tuo Report di fatturazione Cloud impostando i filtri richiesti e raggruppando i dati in base alle necessità (ad ad esempio da progetti, servizi o etichette).

Promuovere una cultura del risparmio sui costi

Formare gli sviluppatori e gli operatori sulla tua infrastruttura cloud. Crea e promuovere programmi di apprendimento tramite lezioni convenzionali o online, gruppi, revisioni dei compagni, programmazione di coppie e giochi per risparmiare sui costi. Come mostrato in ricerca DORA di Google, la cultura organizzativa è un fattore chiave per migliorare le prestazioni, riducendo rielaborazione e burnout, nonché l'ottimizzazione dei costi. Offrendo ai dipendenti visibilità il costo delle risorse, li aiuti ad allineare le priorità e le attività con obiettivi e vincoli commerciali.

Compute Engine

Questa sezione fornisce indicazioni per aiutarti a ottimizzare il costo del tuo alle risorse di Compute Engine. Oltre a queste indicazioni, ti consigliamo che segui consigli generali di cui abbiamo parlato in precedenza.

Informazioni sul modello di fatturazione

Per saperne di più sulle opzioni di fatturazione per Compute Engine, consulta Prezzi.

Analizza il consumo di risorse

Per aiutarti a comprendere il consumo di risorse in Compute Engine, sull'utilizzo in BigQuery. Esegui una query sul datastore di BigQuery analizzare le tendenze di utilizzo delle CPU virtuali (vCPU) del progetto e determinare il numero di vCPU che puoi recuperare. Se hai definito soglie per il numero di core per progetto, analizzare le tendenze di utilizzo per individuare le anomalie e adottare soluzioni azioni.

Recupera le risorse inattive

Utilizza i suggerimenti seguenti per identificare e recuperare VM e dischi inutilizzati, come le VM per i progetti proof of concept che nel frattempo hanno subito una minore priorità:

  • Utilizza la motore per suggerimenti VM inattive per identificare le VM e i dischi permanenti inattivi in base alle metriche di utilizzo.
  • Prima di eliminare le risorse, valuta il potenziale impatto dell'azione di ricreare le risorse, se necessario.
  • Prima di eliminare una VM, valuta la possibilità scattando uno snapshot. Quando elimini una VM, i dischi collegati vengono eliminati, a meno che tu non abbia ha selezionato l'opzione Conserva disco.
  • Quando è possibile, considera arresto delle VM anziché eliminarli. Quando arresti una VM, l'istanza viene terminata ma vengono conservati finché i dischi e gli indirizzi IP non vengono scollegati o eliminati.
  • Quando vuoi mettere in pausa la fatturazione per le risorse della CPU allocate a una VM inattiva. ma non vuoi eliminare o arrestare la VM, puoi sospendere la VM e poi riprendila quando necessario. Questa opzione può essere utile per i carichi di lavoro in cui le attività di inizializzazione o avvio post-avvio richiedono molto tempo.

Regola la capacità in base alla domanda

Pianifica l'avvio e l'arresto automatico delle VM. Ad esempio, se una VM viene utilizzata solo otto ore al giorno per cinque giorni a settimana (ovvero 40 ore nella settimana), può potenzialmente ridurre i costi del 75% arrestando la VM durante il 128 le ore della settimana in cui la VM non viene usata.

Scala automaticamente la capacità di calcolo in base alla domanda utilizzando gruppi di istanze gestite. Puoi scalare automaticamente la capacità in base ai parametri importanti per la tua attività (ad esempio, utilizzo della CPU o capacità di bilanciamento del carico).

Scegli i tipi di macchina appropriati

Dimensiona le VM in base ai requisiti di computing del tuo carico di lavoro utilizzando Motore per suggerimenti sul tipo di macchina VM.

Per carichi di lavoro con requisiti di risorse prevedibili, personalizza il tipo di macchina alle tue esigenze e risparmia denaro utilizzando VM personalizzate.

Per carichi di lavoro di elaborazione batch a tolleranza di errore, valuta l'utilizzo VM spot. Computing ad alte prestazioni (HPC), big data, transcodifica multimediale, continua pipeline di integrazione e distribuzione continua (CI/CD) e applicazioni web stateless sono esempi di carichi di lavoro di cui è possibile eseguire il deployment Spot VM. Ecco un esempio di come Descartes Labs ha ridotto usando le VM prerilasciabili (la versione precedente Spot VM) per elaborare le immagini satellitari, consulta le Case study di Descartes Labs.

Valuta le opzioni di licenza

Quando esegui la migrazione di carichi di lavoro di terze parti su Google Cloud, potresti essere in grado per ridurre i costi BYOL (Bring Your Own License). Ad esempio, per eseguire il deployment alle VM Microsoft Windows Server, anziché utilizzare un immagine premium che comporta costi aggiuntivi per la licenza di terze parti, puoi creare a immagine BYOL di Windows personalizzata. Quindi paghi solo per l'infrastruttura delle VM che utilizzi su Google Cloud. Questa strategia ti consente di continuare a ottenere valore dai tuoi investimenti esistenti in licenze di terze parti.

Se decidi di utilizzare un approccio BYOL, ti consigliamo di eseguire la seguenti:

  • Esegui il provisioning del numero richiesto di core della CPU di computing indipendentemente utilizzando tipi di macchine personalizzate, e limitare il costo delle licenze di terze parti al numero di core CPU che di cui hai bisogno.
  • Riduci il numero di vCPU per core da 2 a 1 disabilitando multi-threading simultaneo (SMT) e ridurre i costi delle licenze del 50%.

Se i tuoi carichi di lavoro di terze parti hanno bisogno di hardware dedicato per garantire la sicurezza di conformità, puoi portare le tue licenze nodi single-tenant.

Google Kubernetes Engine

Questa sezione fornisce indicazioni per aiutarti a ottimizzare il costo del tuo delle risorse GKE.

Oltre ai seguenti consigli, consulta il consigli generali visti in precedenza:

  • Utilizza le funzionalità di GKE Autopilot per consentire a GKE di massimizzare l'efficienza dell'infrastruttura. Non è necessario monitorare l'integrità dei nodi, il bin packing o calcolare la capacità necessaria ai tuoi carichi di lavoro.
  • Ottimizza la scalabilità automatica di GKE utilizzando il pod orizzontale Gestore della scalabilità automatica (HPA), Gestore della scalabilità automatica pod verticale (VPA), Gestore della scalabilità automatica del cluster (CA), o provisioning automatico dei nodi in base ai requisiti del carico di lavoro.
  • Per i carichi di lavoro batch non sensibili alla latenza di avvio, utilizza ottimizzazione-utilizzo del profilo di scalabilità automatica per migliorare l'utilizzo del cluster.
  • Utilizza le funzionalità di provisioning automatico dei nodi per estendere il gestore della scalabilità automatica dei cluster GKE e creare ed eliminare i pool di nodi in base specifiche dei pod in attesa senza overprovisioning.
  • Usa pool di nodi separati: un pool di nodi statico per il carico statico e uno statico pool di nodi con gruppi di scalabilità automatica del cluster per carichi dinamici.
  • Utilizza le funzionalità di VM spot per i pool di nodi Kubernetes, quando i pod sono a tolleranza di errore e possono e terminare in modo controllato in meno di 25 secondi. In combinazione con Gestore della scalabilità automatica dei cluster GKE, questa strategia ti aiuta nel pool di nodi con VM a costo inferiore (in questo caso, le VM spot) scala per prime.
  • Scegli tipi di macchine economicamente convenienti (ad esempio: E2 N2D T2D), che garantiscono un rapporto prestazioni migliore del 20-40%.
  • Utilizza le funzionalità di Misurazione dell'utilizzo di GKE per analizzare i cluster i profili di utilizzo in base a spazi dei nomi ed etichette. Identificazione il team o l'applicazione che spende di più, l'ambiente o che ha causato picchi nell'utilizzo o nei costi, oltre al fatto che il team Google Cloud.
  • Utilizza le funzionalità di quote delle risorse in cluster multi-tenant per evitare che qualsiasi tenant utilizzi più del suo la quota assegnata delle risorse del cluster.
  • Pianificare il downscaling automatico degli ambienti di sviluppo e test dopo l'orario di lavoro.
  • Segui le best practice per l'esecuzione di applicazioni Kubernetes con ottimizzazione dei costi su GKE.

Cloud Run

Questa sezione fornisce indicazioni per aiutarti a ottimizzare il costo del tuo delle risorse Cloud Run.

Oltre ai seguenti consigli, consulta il consigli generali visti in precedenza:

  • Modifica il impostazione di contemporaneità (valore predefinito: 80) per ridurre i costi. Cloud Run determina di richieste da inviare a un'istanza in base all'utilizzo di CPU e memoria. Aumentando la contemporaneità delle richieste, puoi ridurre il numero di di Compute Engine.
  • Imposta un limite per il numero di istanze di cui è possibile eseguire il deployment.
  • Stima il numero di istanze richieste utilizzando il comando Tempo istanza fatturabile o una metrica di valutazione. Ad esempio, se la metrica mostra 100s/s, circa 100 istanze sono stati pianificati. Aggiungi un buffer del 30% per preservare le prestazioni. ossia 130 di Compute Engine per 100 s/s di traffico.
  • Per ridurre l'impatto degli avvii a freddo, configura un numero minimo di istanze. Quando queste istanze sono inattive, vengono fatturate a un decimo del prezzo.
  • Traccia CPU utilizzata, e regolare i limiti di CPU di conseguenza.
  • Utilizza la gestione del traffico. per determinare una configurazione ottimale in termini di costi.
  • Valuta l'uso Cloud CDN o Firebase Hosting per la pubblicazione di asset statici.
  • Per le app Cloud Run che gestiscono le richieste a livello globale, puoi eseguire il deployment dell'app più regioni, perché il trasferimento di dati tra più continenti può essere costoso. Questo design è consigliata se utilizzi un bilanciatore del carico e una CDN.
  • Ridurre i tempi di avvio delle istanze, perché anche il tempo di avvio è fatturabile.
  • Acquista Sconti per impegno di utilizzo, e risparmia fino al 17% sul prezzo on demand per un impegno di un anno.

Cloud Functions

Questa sezione fornisce indicazioni per aiutarti a ottimizzare il costo del tuo alle risorse di Cloud Functions.

Oltre ai seguenti consigli, consulta il consigli generali visti in precedenza:

  • Osservazione il tempo di esecuzione delle tue funzioni. Sperimenta e ottimizza la progettazione della funzione più piccola che soddisfano comunque la soglia di rendimento richiesta.
  • Se i tuoi carichi di lavoro Cloud Functions vengono eseguiti costantemente, valuta la possibilità di utilizzare GKE o Compute Engine per gestire i carichi di lavoro. I container o le VM potrebbero essere opzioni più economiche per i carichi di lavoro sempre in esecuzione.
  • Limita le numero di istanze di funzione che possono coesistere.
  • Confronta le prestazioni di runtime delle funzioni Cloud Functions lingue di programmazione con il carico di lavoro della tua funzione. I programmi nei linguaggi compilati hanno avvii a freddo più lunghi, ma più veloci. I programmi in linguaggi interpretati vengono eseguiti ma prevedono un overhead dell'avvio a freddo più basso. Funzioni brevi che di frequente potrebbe costare meno in un linguaggio interpretato.
  • Eliminare i file temporanei vengono scritte sul disco locale, ovvero un file system in memoria. I file temporanei consumano memoria allocata alla funzione e a volte persistono tra una chiamata e l'altra. Se non elimini questi file, viene potrebbe verificarsi un errore di memoria insufficiente e attivare un avvio a freddo, che aumenta tempi e costi di esecuzione.

App Engine

Questa sezione fornisce indicazioni per aiutarti a ottimizzare il costo del tuo delle risorse di App Engine.

Oltre ai seguenti consigli, consulta il consigli generali visti in precedenza:

  • Imposta il numero massimo di istanze in base al traffico e alla latenza delle richieste. App Engine in genere scala la capacità in base al traffico le applicazioni. Puoi controllare i costi limitando il numero di che App Engine può creare.
  • Per limitare la memoria o la CPU disponibile per la tua applicazione, imposta un valore classe dell'istanza. Per le applicazioni ad alta intensità di CPU, alloca più CPU. Testa alcune configurazioni per determinare la dimensione ottimale.
  • Esegui il benchmarking del carico di lavoro di App Engine in più lingue di programmazione. Ad esempio, un carico di lavoro implementato in un linguaggio potrebbe richiedere meno istanze e costi inferiori per completare le attività in tempo rispetto allo stesso carico di lavoro programmato in un'altra lingua.
  • Ottimizza per ridurre gli avvii a freddo. Se possibile, riduci l'utilizzo intensivo della CPU per le attività a lunga esecuzione che si verificano nell'ambito globale. Prova ad analizzare in operazioni più piccole che possono essere "caricamento lento" nel contesto una richiesta.
  • Se prevedi traffico intenso, configura un numero minimo di istanze inattive preparate. Se non prevedi traffico, puoi configurare il numero minimo di istanze inattive a zero.
  • Per bilanciare prestazioni e costi, esegui un test A/B suddividere il traffico tra due versioni, ciascuna con una configurazione diversa. Monitora il le prestazioni e il costo di ogni versione, ottimizzarle in base alle esigenze e decidere alla quale deve essere inviato il traffico.
  • Configura richiedi la contemporaneità, e imposta un numero massimo di richieste in parallelo su un valore superiore a quello predefinito. Più richieste che ciascuna istanza può gestire contemporaneamente, più efficacemente potrai e usare istanze esistenti per gestire il traffico.

Passaggi successivi