Cloud Run è una piattaforma di applicazioni completamente gestita per eseguire codice, funzioni o container sull'infrastruttura ad alta scalabilità di Google.
In breve, Cloud Run consente agli sviluppatori di dedicare il proprio tempo alla scrittura del codice e di dedicare pochissimo tempo al funzionamento, alla configurazione e allo scaling del servizio Cloud Run. Non devi creare un cluster o gestire l'infrastruttura per essere produttivo con Cloud Run.
Servizi e job
Su Cloud Run, il tuo codice può essere eseguito come servizio o job.
La tabella seguente fornisce una panoramica generale delle opzioni fornite da ciascun tipo di risorsa Cloud Run.
| Risorsa | Descrizione |
|---|---|
| Servizio | Risponde alle richieste HTTP inviate a un endpoint univoco e stabile, utilizzando istanze stateless che vengono scalate automaticamente in base a una serie di metriche chiave. Risponde anche a eventi e funzioni. |
| Job | Esegue attività parallelizzabili eseguite manualmente o in base a una pianificazione e completate. |
Servizi Cloud Run
Un servizio Cloud Run ti fornisce l'infrastruttura necessaria per eseguire un endpoint HTTPS affidabile. È tua responsabilità assicurarti che il codice sia in ascolto su una porta TCP e gestisca le richieste HTTP.
Il seguente diagramma mostra un servizio Cloud Run che esegue diverse istanze container per gestire le richieste web e gli eventi del client utilizzando un endpoint HTTPS.
Un servizio standard include le seguenti funzionalità:
- Endpoint HTTPS univoco per ogni servizio
- Ogni servizio Cloud Run ha un endpoint HTTPS su un sottodominio univoco del dominio
*.s3nsrun.fre puoi configurare anche domini personalizzati. Cloud Run gestisce TLS per te e supporta WebSocket, HTTP/2 (end-to-end) e gRPC (end-to-end). - Scalabilità automatica rapida basata sulle richieste
- Cloud Run esegue rapidamente lo scale out per gestire tutte le richieste in entrata o per gestire l'aumento dell'utilizzo della CPU al di fuori delle richieste se l'impostazione di fatturazione è impostata sulla fatturazione basata sulle istanze. Un servizio può essere scalato rapidamente fino a 1000 istanze o anche di più se richiedi un aumento della quota. Se la domanda diminuisce, Cloud Run rimuove i container inattivi. Se ti preoccupano i costi o il sovraccarico dei sistemi downstream, puoi limitare il numero massimo di istanze.
- Scalabilità manuale facoltativa
- Per impostazione predefinita, Cloud Run esegue automaticamente lo scale up a più istanze per gestire più traffico, ma puoi ignorare questo comportamento utilizzando lo scaling manuale per controllare il comportamento di scalabilità.
- Gestione del traffico integrata
Per ridurre il rischio di deployment di una nuova revisione, Cloud Run supporta l'esecuzione di un'implementazione graduale, incluso il routing del traffico in entrata verso l'ultima revisione, il rollback a una revisione precedente e la divisione del traffico tra più revisioni contemporaneamente.
Ad esempio, puoi iniziare inviando l'1% delle richieste a una nuova revisione e aumentare questa percentuale monitorando la telemetria.
- Servizi pubblici e privati
Un servizio Cloud Run può essere raggiungibile da internet oppure puoi limitare l'accesso nei seguenti modi:
- Specifica un criterio di accesso utilizzando Cloud IAM.
- Utilizza le impostazioni di ingresso per limitare l'accesso alla rete. Ciò è utile se vuoi consentire solo il traffico interno dal VPC e dai servizi interni.
- Consenti solo utenti autenticati con Identity-Aware Proxy (IAP).
Puoi pubblicare asset memorizzabili nella cache da una località edge più vicina ai client anteponendo un servizio Cloud Run a una rete CDN (Content Delivery Network), come Firebase Hosting e Cloud CDN.
Scalabilità fino a zero e istanze minime
Per impostazione predefinita, se la fatturazione è impostata sulla fatturazione basata sulle istanze, Cloud Run aggiunge e rimuove automaticamente le istanze per gestire tutte le richieste in entrata o per gestire l'aumento dell'utilizzo della CPU al di fuori delle richieste.
Se non ci sono richieste in entrata al tuo servizio, verrà rimossa anche l'ultima istanza rimanente. Questo comportamento è comunemente chiamato scalabilità a zero. Poi, se non ci sono istanze attive quando arriva una richiesta, Cloud Run crea una nuova istanza. Ciò aumenta il tempo di risposta per queste prime richieste, a seconda della velocità con cui il container diventa pronto a gestire le richieste.
Per modificare questo comportamento, utilizza uno dei seguenti metodi:
- Configura Cloud Run in modo che mantenga attivo un numero minimo di istanze, in modo che il servizio non venga scalato a zero istanze
- Utilizza lo scaling manuale per un maggiore controllo sullo scaling.
Prezzi a consumo per i servizi
Lo scale to zero è interessante per motivi economici, in quanto ti viene addebitato l'utilizzo di CPU e memoria allocati a un'istanza con una granularità di 100 ms. Se non configuri le istanze minime, non ti viene addebitato alcun costo se il servizio non viene utilizzato. È disponibile un generoso livello senza costi. Per ulteriori informazioni, consulta la pagina Prezzi.
Puoi attivare due impostazioni di fatturazione:
- Basata sulle richieste
- Se un'istanza non elabora richieste, non ti viene addebitato alcun costo. Paghi una commissione per richiesta.
- Basata sulle istanze
- Ti vengono addebitati i costi per l'intera durata di un'istanza. Non è prevista alcuna tariffa per richiesta.
È disponibile un generoso livello senza costi. Per ulteriori informazioni, consulta i prezzi e le impostazioni di fatturazione per scoprire come attivare la fatturazione basata sulle richieste o sulle istanze per il tuo servizio.
Un file system contenitore usa e getta
Le istanze su Cloud Run sono usa e getta. Ogni container ha un overlay del file system scrivibile in memoria, che non viene mantenuto se il container viene chiuso. Cloud Run determina quando interrompere l'invio di richieste a un'istanza e arrestarla, ad esempio durante la riduzione della scalabilità.
Per ricevere un avviso quando Cloud Run sta per arrestare un'istanza,
la tua applicazione può intercettare il segnale SIGTERM. In questo modo, il codice può svuotare
i buffer locali e rendere persistenti i dati locali in un datastore esterno.
Per rendere permanenti i file, esegui l'integrazione con Cloud Storage o monta un file system di rete (NFS).
Quando utilizzare i servizi Cloud Run
I servizi Cloud Run sono ideali per il codice che gestisce richieste, eventi o funzioni. Esempi di casi d'uso:
- Siti web e applicazioni web
- Crea la tua app web utilizzando il tuo stack preferito, accedi al tuo database SQL ed esegui il rendering di pagine HTML dinamiche.
- API e microservizi
- Puoi creare un'API REST, un'API GraphQL o microservizi privati che comunicano tramite HTTP o gRPC.
Job Cloud Run
Se il codice esegue un lavoro e poi si arresta, ad esempio utilizzando uno script, puoi utilizzare un job Cloud Run per eseguire il codice. Puoi eseguire un job dalla riga di comando utilizzando Google Cloud CLI, pianificando un job ricorrente.
I job array sono un modo più rapido per eseguire i job
Un job può avviare una singola istanza per eseguire il codice, un modo comune per eseguire uno script o uno strumento.
Tuttavia, puoi anche utilizzare un job array, avviando in parallelo molte istanze identiche e indipendenti. I job array sono un modo più rapido per elaborare i job che possono essere suddivisi in più attività indipendenti.
Il seguente diagramma mostra come un job con sette attività richiede più tempo per essere eseguito in sequenza rispetto allo stesso job quando quattro istanze possono elaborare attività indipendenti in parallelo:
Ad esempio, se ridimensioni e ritagli 1000 immagini da Cloud Storage, l'elaborazione consecutiva è più lenta rispetto all'elaborazione in parallelo con molte istanze, con Cloud Run che gestisce la scalabilità automatica.
Quando utilizzare i job Cloud Run
I job Cloud Run sono adatti per eseguire codice che svolge un lavoro (un job) e termina quando il lavoro è completato. Ecco alcuni esempi:
- Script o strumento
- Esegui uno script per eseguire migrazioni di database o altre attività operative.
- Job array
- Esegui l'elaborazione altamente parallelizzata di tutti i file in un bucket Cloud Storage.
- Job pianificato
- Crea e invia fatture a intervalli regolari oppure salva i risultati di una query del database come XML e carica il file ogni poche ore.