Cloud Run è la piattaforma serverless completamente gestita di Google Cloud che ti permette di distribuire applicazioni senza preoccuparti della gestione dell’infrastruttura. È estremamente flessibile ed è un’ottima scelta per un’ampia gamma di progetti, dagli hobby alle enterprise.
In questo articolo ti spiegherò cos’è Cloud Run, come funziona, quali casi d’uso può coprire e come si confronta con altre soluzioni serverless. Ti mostrerò anche passo dopo passo come distribuire la tua prima applicazione su Cloud Run!
E prima di iniziare: se sei completamente nuovo al cloud computing, ti consiglierei di seguire il nostro corso Introduction to Cloud Computing. Questo corso illustra le basi del cloud, spiega termini chiave come scalabilità e latenza e presenta i vantaggi degli strumenti cloud di provider come GCP.
Che cos’è Cloud Run?
Cloud Run è una piattaforma serverless per l’esecuzione di container che ti consente di distribuire applicazioni senza preoccuparti della gestione dell’infrastruttura.
Con i deployment tradizionali basati su server, di solito devi effettuare il provisioning e mantenere macchine virtuali. Cloud Run funziona in modo leggermente diverso e astrae tutto questo, offrendo un ambiente completamente gestito.
È basato su Knative (una piattaforma open-source basata su Kubernetes che abilita i carichi di lavoro serverless), il che significa che la tua applicazione scala automaticamente in base alla domanda. Quando il traffico aumenta, Cloud Run avvia più istanze per gestirlo. Quando il traffico diminuisce, riduce la scalabilità. Può arrivare persino a zero, così non paghi nulla quando la tua app non è in esecuzione attiva.
Cloud Run è conveniente, ma anche super flessibile. Puoi distribuire applicazioni scritte in qualsiasi linguaggio e usare qualsiasi framework o binario, purché giri in un container. Puoi lavorare con tecnologie comuni come Node.js, Python, Go, Java o con opzioni più di nicchia. In pratica, significa che Cloud Run può alimentare servizi backend, API, carichi di lavoro di AI, web app e persino job batch pianificati.
Questa era un’anteprima. Ora andiamo un po’ più a fondo nelle funzionalità chiave di Cloud Run.
Funzionalità chiave di Cloud Run
Ne abbiamo appena menzionate alcune, ma ecco una panoramica completa delle principali funzionalità di Cloud Run.
Agnostico rispetto a linguaggi e framework
Uno dei maggiori vantaggi di Cloud Run è che non ti vincola a uno specifico linguaggio o framework. Finché la tua applicazione gira in un container, puoi distribuirla. Se sei un team che lavora con uno stack tecnologico eterogeneo, puoi usare Cloud Run per tutti i tuoi servizi. Un unico strumento per governarli tutti!
Scalabilità automatica
Cloud Run scala orizzontalmente e in modo dinamico in base al traffico. Se la tua applicazione riceve più richieste, Cloud Run avvia automaticamente più istanze. Quando la domanda cala, riduce la scalabilità, fino ad arrivare a zero se necessario.
Sicurezza e conformità integrate
Cloud Run offre HTTPS automatico per tutti i servizi distribuiti, identità del servizio gestita da Google per un’autenticazione sicura, connettività VPC per il networking privato e conformità integrata con certificazioni come SOC 2, ISO 27001 e HIPAA (per applicazioni sanitarie). In pratica, sei in buone mani.
Integrazione con i servizi di Google Cloud
Poiché Cloud Run fa parte dell’ecosistema Google Cloud, si integra bene con gli altri servizi GCP. Puoi collegarlo facilmente a Cloud SQL per i database, usare Pub/Sub per lo streaming dei dati, archiviare file in Cloud Storage o usarlo con BigQuery, Firebase e i servizi di AI/ML.
Supporto GPU on-demand
Per i carichi di lavoro di AI, Cloud Run ora offre il supporto GPU on-demand. È un grande miglioramento per l’inferenza di machine learning, l’elaborazione video e il computing scientifico, perché ti consente di eseguire qualsiasi carico accelerato da GPU senza gestire l’hardware sottostante.
Cloud Run Functions: un modello Function-as-a-Service (FaaS)
Se non vuoi gestire container completi, Cloud Run Functions offre un modo semplificato ed event-driven per eseguire piccole funzioni a singolo scopo. È simile ad AWS Lambda o Google Cloud Functions, ma gira sull’infrastruttura di Cloud Run.
Come funziona Cloud Run: passo dopo passo
In questa sezione ti guiderò nel deployment di una semplice applicazione su Cloud Run. Ti accompagnerò nel processo di containerizzazione dell’app, distribuzione su Cloud Run e scalabilità automatica in base alla domanda.
Useremo Docker per containerizzare la nostra applicazione, ma non è strettamente necessario. Ne parliamo alla fine.
Passaggio 1: prepara il tuo ambiente
Prima di distribuire qualsiasi cosa, devi avere installati i seguenti strumenti:
Google Cloud SDK: è un’interfaccia a riga di comando (CLI) che ti consente di interagire con i servizi Google Cloud, incluso Cloud Run. Puoi installarla da qui.
Docker: se la tua app non è già containerizzata, ti servirà Docker per impacchettarla. Installa Docker da qui.
Progetto Google Cloud: assicurati di avere un progetto Google Cloud configurato. Puoi crearne uno dalla Google Cloud Console.
Passaggio 2: scrivi il codice della tua applicazione
Ora, scriviamo una semplice applicazione Node.js “Hello World”.
Crea una directory per la tua app:
mkdir hello-world-app
cd hello-world-appOfferto da
Crea un file index.js nella directory con il seguente contenuto:
const http = require('http');
const requestListener = (req, res) => {
res.writeHead(200);
res.end('Hello, Cloud Run!');
};
const server = http.createServer(requestListener);
server.listen(8080, () => {
console.log('Server is running on port 8080');
});Offerto da
Crea un package.json per definire le dipendenze della tua app:
Ora che l’applicazione è pronta, passiamo alla containerizzazione.
Passaggio 3: containerizza l’applicazione
Crea un Dockerfile per definire l’immagine del container
Nella directory del progetto, crea un file chiamato “Dockerfile” con il seguente contenuto:
# Use the official Node.js image as a base
FROM node:16-alpine
# Set the working directory inside the container
WORKDIR /usr/src/app
# Copy package.json and install dependencies (if any)
COPY package*.json ./
# Copy the rest of the application code
COPY . .
# Expose port 8080 for Cloud Run
EXPOSE 8080
# Start the app
CMD ["node", "index.js"]Offerto da
Compila l’immagine Docker
Esegui il seguente comando per creare la tua immagine Docker:
docker build -t gcr.io/your-project-id/hello-world-app .Offerto da
Nota: sostituisci your-project-id con il tuo ID progetto di Google Cloud.
Testa l’immagine in locale
Puoi testare il tuo container Docker in locale eseguendo:
docker run -p 8080:8080 gcr.io/your-project-id/hello-world-appOfferto da
Visita http://localhost:8080 nel browser per verificare che l’app sia in esecuzione.
Passaggio 4: invia l’immagine a Google Artifact Registry
Abilita Artifact Registry per il tuo progetto
Se non hai ancora abilitato Artifact Registry, esegui il seguente comando
gcloud services enable artifactregistry.googleapis.comOfferto da
Nota: dovrai abilitare la fatturazione per completare questo passaggio!
Crea un repository in Artifact Registry
Crea un nuovo repository Docker in Artifact Registry:
gcloud artifacts repositories create hello-world-repo \
--repository-format=docker \
--location=us-central1Offerto da
Autentica Docker con Artifact Registry
Configura Docker per autenticarsi con Artifact Registry:
gcloud auth configure-docker us-central1-docker.pkg.devOfferto da
Tagga l’immagine Docker per Artifact Registry
Applica un tag alla tua immagine Docker con l’URL del repository Artifact Registry:
docker tag gcr.io/your-project-id/hello-world-app us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-appOfferto da
Esegui il push dell’immagine su Artifact Registry
Invia l’immagine Docker taggata al tuo repository Artifact Registry:
docker push us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-appOfferto da
Passaggio 5: distribuisci su Cloud Run
Una volta che la tua immagine è stata inviata a Artifact Registry, puoi distribuirla su Cloud Run direttamente da Artifact Registry.
Distribuisci la tua immagine su Cloud Run con il seguente comando:
gcloud run deploy hello-world-app \
--image us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app \
--platform managed \
--region us-central1 \
--allow-unauthenticatedOfferto da
hello-world-app: questo è il nome del tuo servizio Cloud Run.
us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app: l’URL della tua immagine archiviata in Artifact Registry.
--platform managed: garantisce che il deployment usi la piattaforma completamente gestita di Cloud Run (non un cluster GKE).
--region us-central1: specifica la regione in cui Cloud Run deve distribuire il servizio.
--allow-unauthenticated: consente l’accesso pubblico al servizio. Se hai bisogno di accesso ristretto, puoi modificare questo flag di conseguenza.
Dopo aver eseguito questo comando, Cloud Run distribuirà la tua applicazione containerizzata e ti fornirà un URL per accedervi.
E abbiamo finito! Dai un’occhiata alla console GCP: dovresti vedere la tua nuova istanza.
Passaggio 6: pulizia
Per evitare costi ricorrenti, assicurati di eliminare il servizio quando hai concluso i test.
1. Elimina il servizio Cloud Run
Esegui il seguente comando per eliminare il servizio Cloud Run distribuito:
gcloud run services delete hello-world-app --region us-central1Offerto da
Questo rimuove l’istanza Cloud Run ma non elimina l’immagine del container.
2. Elimina l’immagine in Artifact Registry
Per rimuovere l’immagine da Artifact Registry, prima elenca le immagini:
gcloud artifacts docker images list us-central1-docker.pkg.dev/your-project-id/hello-world-repoOfferto da
Quindi elimina l’immagine con:
gcloud artifacts docker images delete us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app --delete-tagsOfferto da
Ora anche il tuo Artifact Registry è stato ripulito.
3. Elimina il repository di Artifact Registry (se non più necessario)
Se vuoi rimuovere completamente il repository di Artifact Registry, esegui:
gcloud artifacts repositories delete hello-world-repo --location=us-central1Offerto da
Questo passaggio è necessario solo se hai concluso con il repository; in caso contrario, puoi riutilizzarlo per i deployment futuri.
4. (Opzionale) Elimina il progetto Google Cloud
Se si trattava di un progetto di test e non ti serve più, puoi eliminare l’intero progetto per rimuovere tutte le risorse associate:
Ricordi quando ho detto che non sempre devi containerizzare manualmente la tua app?
Cloud Run ora supporta i deployment da sorgente, il che significa che può creare il container a partire dal tuo codice sorgente usando Cloud Build.
Puoi usare il comando:
gcloud run deploy hello-world-app \
--source . \
--region us-central1 \
--allow-unauthenticatedOfferto da
Cloud Build rileva automaticamente il linguaggio della tua applicazione (Node.js, Python, Go, Java, ecc.), crea per te un’immagine container e la archivia in Artifact Registry. Cloud Run quindi distribuisce l’immagine compilata come se avessi creato manualmente un container. Lo consiglierei sicuramente per applicazioni semplici con linguaggi supportati (Node.js, Python, Go, Java, ecc.), ma non se ti serve il pieno controllo del container (ad esempio dipendenze personalizzate, modifiche a livello di OS, build multistep).
Consigli per usare Cloud Run in modo efficiente
Ok, distribuire un’app su Cloud Run è piuttosto semplice, ma farla girare in modo efficiente richiede un po’ di messa a punto. Ho passato una fase di tentativi ed errori quando ho iniziato a usarlo, e questo è ciò che ho imparato:
1. I cold start esistono davvero
Soprattutto se lavori con un’immagine del container grande. Più piccola è l’immagine, più velocemente il servizio si avvia. Usare un’immagine base minimale come distroless può fare una grande differenza. Se stai costruendo app Python, prova a usare le versioni slim delle immagini ufficiali. Oppure, se i costi non sono una grande preoccupazione, imposta il numero minimo di istanze a 1.
2. La variabile migliore con cui sperimentare è la concorrenza delle richieste
Cloud Run consente a ogni istanza di gestire più richieste contemporaneamente, ma il valore predefinito (80 richieste per container) spesso non è ottimale. Per attività CPU-intensive, ho scoperto che abbassare la concorrenza a 1 o 2 rende tutto molto più fluido. Al contrario, le API di solito possono gestire numeri più alti. Più alto è il numero, più puoi ridurre il numero di istanze necessarie e quindi spendere meno: vale sicuramente la pena sperimentare valori diversi per trovare il punto di equilibrio per la tua app.
3. Imposta i limiti delle istanze!
È utilissimo quando qualcuno (io) decide di fare del load testing e avvia un numero assurdo di richieste. Ho imparato la lezione così tu non debba farlo. Imposta per favore il conteggio massimo di istanze.
4. Assicurati che le persone giuste possano accedere alla tua istanza
Per impostazione predefinita, i servizi Cloud Run possono essere accessibili da chiunque abbia l’URL, ottimo per demo veloci ma non ideale in produzione. Se la tua app non è pensata per essere pubblica, limita l’accesso con le autorizzazioni IAM.
5. Cloud Logging e Cloud Trace diventeranno i tuoi migliori amici
Se, come me, tendi a fare debug accedendo via SSH alle macchine virtuali, rimarrai deluso. I log di Cloud Run sono trasmessi direttamente alla dashboard di Google Cloud, quindi puoi vedere tutto lì. Assicurati di aggiungere logging strutturato alla tua applicazione: renderà la risoluzione dei problemi molto più semplice.
Casi d’uso di Cloud Run
Abbiamo parlato di alcuni casi d’uso di Cloud Run, come eseguire web app, API o job schedulati, ma ce ne sono ovviamente molti altri.
Analisi di video e immagini
Puoi distribuire un modello di riconoscimento delle immagini per elaborare in tempo reale le immagini caricate su una piattaforma social, oppure eseguire task di transcodifica video quando un video viene caricato. Cloud Run può gestire i picchi di domanda (come contenuti virali) con la sua scalabilità automatica, garantendo al contempo l’efficienza dei costi quando la domanda è bassa.
Immagina di costruire un sistema che monitori il comportamento degli utenti su un marketplace online. Elaborando flussi di eventi da Pub/Sub o BigQuery, puoi attivare azioni istantanee in base all’attività degli utenti, come inviare notifiche push o analizzare le tendenze in tempo reale. Cloud Run scala automaticamente per gestire gli eventi in ingresso durante i picchi e riduce la scalabilità quando il volume dei flussi diminuisce.
Un caso d’uso potrebbe essere l’analisi dei file di log in tempo reale per una grande azienda. Ogni volta che un file di log viene caricato su Cloud Storage, Cloud Run può attivare un container per analizzare il file, eseguire l’analisi e conservare i risultati, il tutto scalando dinamicamente in base alla dimensione del file e alla complessità dell’elaborazione.
Cloud Run è ideale per gestire servizi backend per applicazioni IoT. Ad esempio, in una soluzione IoT che traccia dati ambientali da migliaia di sensori, Cloud Run può elaborare in tempo reale i dati in arrivo da ogni dispositivo.
Cloud Run segue un modello pay-as-you-go, cioè paghi solo per le risorse di calcolo utilizzate mentre la tua applicazione è in esecuzione attiva. Quando la tua app non gestisce richieste, può scalare fino a zero, quindi non sostieni costi inutili.
Ripartizione dei costi
A marzo 2025, Cloud Run addebita i costi in base a due fattori principali:
Risorsa
Costo
Free Tier
CPU
$0.000018 per vCPU-second
240,000 vCPU-seconds/mese
Memoria
$0.000002 per GiB-second
450,000 GiB-seconds/mese
Questi prezzi si riferiscono alla fatturazione basata sulle istanze, ma funzionano diversamente per la fatturazione basata sulle richieste. Il prezzo sopra e il free tier variano leggermente anche a seconda della regione in cui ti trovi, quindi controlla la pagina ufficiale di Google Cloud per i numeri esatti. C’è un calcolatore dei prezzi per aiutarti a stimare i costi e sono disponibili sconti per uso con impegno.
Piccolo suggerimento: il traffico con altri servizi Google Cloud nella stessa regione è gratuito, quindi prova a usare Cloud Storage, Cloud SQL o Pub/Sub invece di servizi esterni per lo scambio di dati.
Cloud Run vs. Cloud Run Functions
Google offre due opzioni di compute serverless: Cloud Run e Cloud Run Functions (in precedenza Cloud Functions). Entrambe ti permettono di eseguire codice senza gestire l’infrastruttura, ma sono leggermente diverse.
Senza stato, ma può mantenere connessioni all’interno di una richiesta
Senza stato, progettato per carichi di lavoro event-driven
Scalabilità
Scala per istanza di container
Scala per invocazione di funzione
Trigger
Richieste HTTP, Pub/Sub, event-driven
Event-driven (Pub/Sub, Cloud Storage, HTTP, ecc.)
Cold start
Minimi con istanze pre-riscaldate
Possono avere ritardi percepibili nello scaling
Ideale per
API, microservizi, servizi backend, carichi AI
Funzioni leggere event-driven, automazioni
Quando usare Cloud Run
✅ Hai bisogno di pieno controllo su runtime e dipendenze.
✅ Stai eseguendo un servizio web, un’API o un microservizio che gestisce richieste persistenti.
✅ Vuoi distribuire un’applicazione containerizzata esistente con modifiche minime.
✅ Ti serve elaborazione in background o task di lunga durata (come inferenza AI, job batch).
Quando usare Cloud Run Functions
✅ Vuoi funzioni semplici e event-driven che si attivano su eventi come messaggi Pub/Sub o upload su Cloud Storage.
✅ Gestisci operazioni di breve durata come inviare notifiche, processare piccoli job o trasformare dati.
✅ Non vuoi gestire container e preferisci runtime preconfigurati per JavaScript, Python, Go, ecc.
Non devi per forza scegliere: puoi usarli entrambi! Ad esempio, il tuo backend su Cloud Run potrebbe attivare Cloud Run Functions per task specifici come inviare email o elaborare immagini in modo asincrono.
Confronti con altri servizi Google Cloud
Abbiamo confrontato approfonditamente Cloud Run e Cloud Run Functions, ma ci sono altri servizi Google Cloud che vale la pena menzionare qui: GKE e App Engine.
Funzionalità
Cloud Run
Google Kubernetes Engine (GKE)
App Engine
Tipo di gestione
Serverless completamente gestito
Cluster Kubernetes autogestiti
Piattaforma-as-a-service completamente gestita
Scalabilità
Scalabilità automatica, fino a zero
Scalabilità manuale o automatica via Kubernetes
Scalabilità automatica (ma non fino a zero)
Deployment
Distribuzione di container (qualsiasi linguaggio)
Distribuzione di container via Kubernetes
Distribuzione di codice (runtime specifici supportati)
Casi d’uso
API, microservizi, web app, job batch, AI
App complesse, microservizi su larga scala, carichi ML
Web app, backend per mobile, API
Linguaggi supportati
Qualsiasi (basato su container)
Qualsiasi (basato su container)
Runtime specifici supportati
Ovviamente c’è più sfumatura di così, ma in breve: se ti serve una soluzione containerizzata completamente gestita, con scalabilità automatica e flessibilità, scegli Cloud Run. Se stai costruendo una web app con configurazione minima, scegli App Engine. E se vuoi il pieno controllo dei cluster Kubernetes per applicazioni complesse su larga scala, scegli GKE.
Conclusione
Ora che sai tutto su Cloud Run, prova ad avviare la tua prima istanza oppure dai un’occhiata agli altri servizi Google Cloud per trovare il livello di controllo e automazione più adatto a te!
FAQ su Cloud Run
Come gestisco le connessioni al database in Cloud Run?⌄
Puoi usare Cloud SQL Auth Proxy, abilitare il connection pooling (ad es. PgBouncer per PostgreSQL) o usare database serverless come Firestore per evitare limiti di connessione.
Posso usare un dominio personalizzato con Cloud Run?⌄
Sì. Configuralo nella console di Cloud Run sotto Gestisci domini personalizzati, verifica la proprietà e aggiorna i record DNS. SSL è fornito automaticamente.
Cloud Run supporta WebSocket e connessioni di lunga durata?⌄
Sì, ma le istanze possono spegnersi se inattive. Per mantenere le connessioni, imposta un numero minimo di istanze o usa Pub/Sub per la comunicazione event-driven.
Cloud Run può gestire job in background?⌄
Non direttamente, poiché è basato sulle richieste. Usa Cloud Tasks, Pub/Sub o Workflows per attivare e gestire l’elaborazione in background.
Posso eseguire applicazioni stateful su Cloud Run?⌄
Non consigliato, poiché le istanze sono stateless. Usa Cloud Storage, Firestore o un database esterno per persistere lo stato.
Autore
Marie Fayard
Sono una tech lead orientata al prodotto, specializzata nel far crescere startup nelle fasi iniziali, dal primo prototipo al product-market fit e oltre. Sono instancabilmente curiosa di come le persone usano la tecnologia e adoro lavorare a stretto contatto con founder e team cross‑funzionali per dare vita a idee ambiziose. Quando non costruisco prodotti, inseguo l’ispirazione in angoli nuovi del mondo o scarico le tensioni in una sala yoga.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Cloud Run è la piattaforma serverless completamente gestita di Google Cloud che ti permette di distribuire applicazioni senza preoccuparti della gestione dell’infrastruttura. È estremamente flessibile ed è un’ottima scelta per un’ampia gamma di progetti, dagli hobby alle enterprise.
In questo articolo ti spiegherò cos’è Cloud Run, come funziona, quali casi d’uso può coprire e come si confronta con altre soluzioni serverless. Ti mostrerò anche passo dopo passo come distribuire la tua prima applicazione su Cloud Run!
E prima di iniziare: se sei completamente nuovo al cloud computing, ti consiglierei di seguire il nostro corso Introduction to Cloud Computing. Questo corso illustra le basi del cloud, spiega termini chiave come scalabilità e latenza e presenta i vantaggi degli strumenti cloud di provider come GCP.
Che cos’è Cloud Run?
Cloud Run è una piattaforma serverless per l’esecuzione di container che ti consente di distribuire applicazioni senza preoccuparti della gestione dell’infrastruttura.
Con i deployment tradizionali basati su server, di solito devi effettuare il provisioning e mantenere macchine virtuali. Cloud Run funziona in modo leggermente diverso e astrae tutto questo, offrendo un ambiente completamente gestito.
È basato su Knative (una piattaforma open-source basata su Kubernetes che abilita i carichi di lavoro serverless), il che significa che la tua applicazione scala automaticamente in base alla domanda. Quando il traffico aumenta, Cloud Run avvia più istanze per gestirlo. Quando il traffico diminuisce, riduce la scalabilità. Può arrivare persino a zero, così non paghi nulla quando la tua app non è in esecuzione attiva.
Cloud Run è conveniente, ma anche super flessibile. Puoi distribuire applicazioni scritte in qualsiasi linguaggio e usare qualsiasi framework o binario, purché giri in un container. Puoi lavorare con tecnologie comuni come Node.js, Python, Go, Java o con opzioni più di nicchia. In pratica, significa che Cloud Run può alimentare servizi backend, API, carichi di lavoro di AI, web app e persino job batch pianificati.
Questa era un’anteprima. Ora andiamo un po’ più a fondo nelle funzionalità chiave di Cloud Run.
Funzionalità chiave di Cloud Run
Ne abbiamo appena menzionate alcune, ma ecco una panoramica completa delle principali funzionalità di Cloud Run.
Agnostico rispetto a linguaggi e framework
Uno dei maggiori vantaggi di Cloud Run è che non ti vincola a uno specifico linguaggio o framework. Finché la tua applicazione gira in un container, puoi distribuirla. Se sei un team che lavora con uno stack tecnologico eterogeneo, puoi usare Cloud Run per tutti i tuoi servizi. Un unico strumento per governarli tutti!
Scalabilità automatica
Cloud Run scala orizzontalmente e in modo dinamico in base al traffico. Se la tua applicazione riceve più richieste, Cloud Run avvia automaticamente più istanze. Quando la domanda cala, riduce la scalabilità, fino ad arrivare a zero se necessario.
Sicurezza e conformità integrate
Cloud Run offre HTTPS automatico per tutti i servizi distribuiti, identità del servizio gestita da Google per un’autenticazione sicura, connettività VPC per il networking privato e conformità integrata con certificazioni come SOC 2, ISO 27001 e HIPAA (per applicazioni sanitarie). In pratica, sei in buone mani.
Integrazione con i servizi di Google Cloud
Poiché Cloud Run fa parte dell’ecosistema Google Cloud, si integra bene con gli altri servizi GCP. Puoi collegarlo facilmente a Cloud SQL per i database, usare Pub/Sub per lo streaming dei dati, archiviare file in Cloud Storage o usarlo con BigQuery, Firebase e i servizi di AI/ML.
Supporto GPU on-demand
Per i carichi di lavoro di AI, Cloud Run ora offre il supporto GPU on-demand. È un grande miglioramento per l’inferenza di machine learning, l’elaborazione video e il computing scientifico, perché ti consente di eseguire qualsiasi carico accelerato da GPU senza gestire l’hardware sottostante.
Cloud Run Functions: un modello Function-as-a-Service (FaaS)
Se non vuoi gestire container completi, Cloud Run Functions offre un modo semplificato ed event-driven per eseguire piccole funzioni a singolo scopo. È simile ad AWS Lambda o Google Cloud Functions, ma gira sull’infrastruttura di Cloud Run.
Come funziona Cloud Run: passo dopo passo
In questa sezione ti guiderò nel deployment di una semplice applicazione su Cloud Run. Ti accompagnerò nel processo di containerizzazione dell’app, distribuzione su Cloud Run e scalabilità automatica in base alla domanda.
Useremo Docker per containerizzare la nostra applicazione, ma non è strettamente necessario. Ne parliamo alla fine.
Passaggio 1: prepara il tuo ambiente
Prima di distribuire qualsiasi cosa, devi avere installati i seguenti strumenti:
Passaggio 2: scrivi il codice della tua applicazione
Ora, scriviamo una semplice applicazione Node.js “Hello World”.
Crea una directory per la tua app:
Crea un file index.js nella directory con il seguente contenuto:
Crea un package.json per definire le dipendenze della tua app:
Ora che l’applicazione è pronta, passiamo alla containerizzazione.
Passaggio 3: containerizza l’applicazione
Crea un Dockerfile per definire l’immagine del container
Nella directory del progetto, crea un file chiamato “Dockerfile” con il seguente contenuto:
Compila l’immagine Docker
Esegui il seguente comando per creare la tua immagine Docker:
Nota: sostituisci your-project-id con il tuo ID progetto di Google Cloud.
Testa l’immagine in locale
Puoi testare il tuo container Docker in locale eseguendo:
Visita http://localhost:8080 nel browser per verificare che l’app sia in esecuzione.
Passaggio 4: invia l’immagine a Google Artifact Registry
Abilita Artifact Registry per il tuo progetto
Se non hai ancora abilitato Artifact Registry, esegui il seguente comando
Nota: dovrai abilitare la fatturazione per completare questo passaggio!
Crea un repository in Artifact Registry
Crea un nuovo repository Docker in Artifact Registry:
Autentica Docker con Artifact Registry
Configura Docker per autenticarsi con Artifact Registry:
Tagga l’immagine Docker per Artifact Registry
Applica un tag alla tua immagine Docker con l’URL del repository Artifact Registry:
Esegui il push dell’immagine su Artifact Registry
Invia l’immagine Docker taggata al tuo repository Artifact Registry:
Passaggio 5: distribuisci su Cloud Run
Una volta che la tua immagine è stata inviata a Artifact Registry, puoi distribuirla su Cloud Run direttamente da Artifact Registry.
Distribuisci la tua immagine su Cloud Run con il seguente comando:
Dopo aver eseguito questo comando, Cloud Run distribuirà la tua applicazione containerizzata e ti fornirà un URL per accedervi.
E abbiamo finito! Dai un’occhiata alla console GCP: dovresti vedere la tua nuova istanza.
Passaggio 6: pulizia
Per evitare costi ricorrenti, assicurati di eliminare il servizio quando hai concluso i test.
1. Elimina il servizio Cloud Run
Esegui il seguente comando per eliminare il servizio Cloud Run distribuito:
Questo rimuove l’istanza Cloud Run ma non elimina l’immagine del container.
2. Elimina l’immagine in Artifact Registry
Per rimuovere l’immagine da Artifact Registry, prima elenca le immagini:
Quindi elimina l’immagine con:
Ora anche il tuo Artifact Registry è stato ripulito.
3. Elimina il repository di Artifact Registry (se non più necessario)
Se vuoi rimuovere completamente il repository di Artifact Registry, esegui:
Questo passaggio è necessario solo se hai concluso con il repository; in caso contrario, puoi riutilizzarlo per i deployment futuri.
4. (Opzionale) Elimina il progetto Google Cloud
Se si trattava di un progetto di test e non ti serve più, puoi eliminare l’intero progetto per rimuovere tutte le risorse associate:
Deployment da sorgente
Ricordi quando ho detto che non sempre devi containerizzare manualmente la tua app?
Cloud Run ora supporta i deployment da sorgente, il che significa che può creare il container a partire dal tuo codice sorgente usando Cloud Build.
Puoi usare il comando:
Cloud Build rileva automaticamente il linguaggio della tua applicazione (Node.js, Python, Go, Java, ecc.), crea per te un’immagine container e la archivia in Artifact Registry. Cloud Run quindi distribuisce l’immagine compilata come se avessi creato manualmente un container. Lo consiglierei sicuramente per applicazioni semplici con linguaggi supportati (Node.js, Python, Go, Java, ecc.), ma non se ti serve il pieno controllo del container (ad esempio dipendenze personalizzate, modifiche a livello di OS, build multistep).
Consigli per usare Cloud Run in modo efficiente
Ok, distribuire un’app su Cloud Run è piuttosto semplice, ma farla girare in modo efficiente richiede un po’ di messa a punto. Ho passato una fase di tentativi ed errori quando ho iniziato a usarlo, e questo è ciò che ho imparato:
1. I cold start esistono davvero
Soprattutto se lavori con un’immagine del container grande. Più piccola è l’immagine, più velocemente il servizio si avvia. Usare un’immagine base minimale come distroless può fare una grande differenza. Se stai costruendo app Python, prova a usare le versioni slim delle immagini ufficiali. Oppure, se i costi non sono una grande preoccupazione, imposta il numero minimo di istanze a 1.
2. La variabile migliore con cui sperimentare è la concorrenza delle richieste
Cloud Run consente a ogni istanza di gestire più richieste contemporaneamente, ma il valore predefinito (80 richieste per container) spesso non è ottimale. Per attività CPU-intensive, ho scoperto che abbassare la concorrenza a 1 o 2 rende tutto molto più fluido. Al contrario, le API di solito possono gestire numeri più alti. Più alto è il numero, più puoi ridurre il numero di istanze necessarie e quindi spendere meno: vale sicuramente la pena sperimentare valori diversi per trovare il punto di equilibrio per la tua app.
3. Imposta i limiti delle istanze!
È utilissimo quando qualcuno (io) decide di fare del load testing e avvia un numero assurdo di richieste. Ho imparato la lezione così tu non debba farlo. Imposta per favore il conteggio massimo di istanze.
4. Assicurati che le persone giuste possano accedere alla tua istanza
Per impostazione predefinita, i servizi Cloud Run possono essere accessibili da chiunque abbia l’URL, ottimo per demo veloci ma non ideale in produzione. Se la tua app non è pensata per essere pubblica, limita l’accesso con le autorizzazioni IAM.
5. Cloud Logging e Cloud Trace diventeranno i tuoi migliori amici
Se, come me, tendi a fare debug accedendo via SSH alle macchine virtuali, rimarrai deluso. I log di Cloud Run sono trasmessi direttamente alla dashboard di Google Cloud, quindi puoi vedere tutto lì. Assicurati di aggiungere logging strutturato alla tua applicazione: renderà la risoluzione dei problemi molto più semplice.
Casi d’uso di Cloud Run
Abbiamo parlato di alcuni casi d’uso di Cloud Run, come eseguire web app, API o job schedulati, ma ce ne sono ovviamente molti altri.
Analisi di video e immagini
Puoi distribuire un modello di riconoscimento delle immagini per elaborare in tempo reale le immagini caricate su una piattaforma social, oppure eseguire task di transcodifica video quando un video viene caricato. Cloud Run può gestire i picchi di domanda (come contenuti virali) con la sua scalabilità automatica, garantendo al contempo l’efficienza dei costi quando la domanda è bassa.
Fonte: Google Cloud
Elaborazione di stream in tempo reale
Immagina di costruire un sistema che monitori il comportamento degli utenti su un marketplace online. Elaborando flussi di eventi da Pub/Sub o BigQuery, puoi attivare azioni istantanee in base all’attività degli utenti, come inviare notifiche push o analizzare le tendenze in tempo reale. Cloud Run scala automaticamente per gestire gli eventi in ingresso durante i picchi e riduce la scalabilità quando il volume dei flussi diminuisce.
Fonte: Google Cloud
Elaborazione file in tempo reale
Un caso d’uso potrebbe essere l’analisi dei file di log in tempo reale per una grande azienda. Ogni volta che un file di log viene caricato su Cloud Storage, Cloud Run può attivare un container per analizzare il file, eseguire l’analisi e conservare i risultati, il tutto scalando dinamicamente in base alla dimensione del file e alla complessità dell’elaborazione.
Fonte: Google Cloud
Backend IoT serverless
Cloud Run è ideale per gestire servizi backend per applicazioni IoT. Ad esempio, in una soluzione IoT che traccia dati ambientali da migliaia di sensori, Cloud Run può elaborare in tempo reale i dati in arrivo da ogni dispositivo.
Fonte: Google Cloud
Prezzi di Google Cloud Run
Cloud Run segue un modello pay-as-you-go, cioè paghi solo per le risorse di calcolo utilizzate mentre la tua applicazione è in esecuzione attiva. Quando la tua app non gestisce richieste, può scalare fino a zero, quindi non sostieni costi inutili.
Ripartizione dei costi
A marzo 2025, Cloud Run addebita i costi in base a due fattori principali:
Questi prezzi si riferiscono alla fatturazione basata sulle istanze, ma funzionano diversamente per la fatturazione basata sulle richieste. Il prezzo sopra e il free tier variano leggermente anche a seconda della regione in cui ti trovi, quindi controlla la pagina ufficiale di Google Cloud per i numeri esatti. C’è un calcolatore dei prezzi per aiutarti a stimare i costi e sono disponibili sconti per uso con impegno.
Piccolo suggerimento: il traffico con altri servizi Google Cloud nella stessa regione è gratuito, quindi prova a usare Cloud Storage, Cloud SQL o Pub/Sub invece di servizi esterni per lo scambio di dati.
Cloud Run vs. Cloud Run Functions
Google offre due opzioni di compute serverless: Cloud Run e Cloud Run Functions (in precedenza Cloud Functions). Entrambe ti permettono di eseguire codice senza gestire l’infrastruttura, ma sono leggermente diverse.
Quando usare Cloud Run
Quando usare Cloud Run Functions
Non devi per forza scegliere: puoi usarli entrambi! Ad esempio, il tuo backend su Cloud Run potrebbe attivare Cloud Run Functions per task specifici come inviare email o elaborare immagini in modo asincrono.
Confronti con altri servizi Google Cloud
Abbiamo confrontato approfonditamente Cloud Run e Cloud Run Functions, ma ci sono altri servizi Google Cloud che vale la pena menzionare qui: GKE e App Engine.
Ovviamente c’è più sfumatura di così, ma in breve: se ti serve una soluzione containerizzata completamente gestita, con scalabilità automatica e flessibilità, scegli Cloud Run. Se stai costruendo una web app con configurazione minima, scegli App Engine. E se vuoi il pieno controllo dei cluster Kubernetes per applicazioni complesse su larga scala, scegli GKE.
Conclusione
Ora che sai tutto su Cloud Run, prova ad avviare la tua prima istanza oppure dai un’occhiata agli altri servizi Google Cloud per trovare il livello di controllo e automazione più adatto a te!