Accéder au contenu principal

Cloud Run : guide du déploiement d’applications conteneurisées sur GCP

Découvrez Cloud Run et ses cas d’usage, puis suivez notre guide pas à pas pour lancer votre première instance.
· 9 min lire

Explorez l'IA

Cloud Run est la plateforme serverless totalement managée de Google Cloud, qui vous permet de déployer des applications sans vous soucier de la gestion de l’infrastructure. C’est très flexible et idéal pour une grande variété de projets, du side-project à l’entreprise.

Dans cet article, je vous explique ce qu’est Cloud Run, comment il fonctionne, à quels besoins il répond et comment il se compare aux autres solutions serverless. Je vous montre également, étape par étape, comment déployer votre première application Cloud Run !

Avant de commencer : si vous débutez totalement sur le cloud, je vous recommande notre cours Introduction to Cloud Computing. Il décrypte les bases du cloud, explique des notions clés comme la scalabilité et la latence, et présente les avantages des outils cloud proposés par des fournisseurs comme GCP.

Qu’est-ce que Cloud Run ?

Cloud Run est une plateforme d’exécution serverless pour conteneurs qui vous permet de déployer des applications sans gestion d’infrastructure.

Avec des déploiements classiques sur serveur, vous devez généralement provisionner et maintenir des machines virtuelles. Cloud Run fonctionne différemment : il abstrait tout cela et offre un environnement entièrement managé.

Il est bâti sur Knative (une plateforme open source basée sur Kubernetes qui permet les charges serverless), ce qui signifie que votre application s’adapte automatiquement à la demande. Quand le trafic augmente, Cloud Run lance davantage d’instances pour l’absorber. Quand il baisse, il réduit l’échelle, jusqu’à zéro : vous ne payez donc rien lorsque votre application ne tourne pas activement.

Cloud Run est économique, mais aussi très flexible. Vous pouvez déployer des applications dans n’importe quel langage et avec n’importe quel framework ou binaire, tant que cela s’exécute dans un conteneur. Vous pouvez travailler avec des technologies courantes comme Node.js, Python, Go, Java, ou des langages plus confidentiels. Concrètement, Cloud Run peut propulser des services backend, des APIs, des charges IA, des applications web et même des jobs batch planifiés.

C’était l’avant-goût. Allons un peu plus loin dans les fonctionnalités clé de Cloud Run.

Fonctionnalités clé de Cloud Run

Nous en avons déjà mentionné quelques-unes, voici un panorama complet des atouts de Cloud Run.

Agnostique au langage et au framework

L’un des grands avantages de Cloud Run est qu’il ne vous enferme pas dans un langage ou un framework particulier. Tant que votre application tourne dans un conteneur, vous pouvez la déployer. Si votre équipe utilise une stack technologique variée, vous pouvez adopter Cloud Run pour l’ensemble de vos services. Un seul outil pour tout piloter !

Mise à l’échelle automatique

Cloud Run met à l’échelle horizontalement et dynamiquement en fonction du trafic. Si votre application reçoit plus de requêtes, Cloud Run démarre automatiquement d’autres instances. Quand la demande baisse, il réduit l’échelle, jusqu’à zéro si besoin.

Sécurité et conformité intégrées

Cloud Run offre le HTTPS automatique pour tous les services déployés, une identité de service gérée par Google pour une authentification sécurisée, une connectivité VPC pour le réseau privé et des certifications de conformité intégrées telles que SOC 2, ISO 27001 et HIPAA (pour les applications de santé). En bref, vous êtes entre de bonnes mains.

Intégration avec les services Google Cloud

Parce que Cloud Run fait partie de l’écosystème Google Cloud, il s’intègre parfaitement aux autres services GCP. Vous pouvez le connecter simplement à Cloud SQL pour les bases de données, diffuser des données avec Pub/Sub, stocker des fichiers dans Cloud Storage, ou l’utiliser avec BigQuery, Firebase et les services d’IA/ML.

Prise en charge des GPU à la demande

Pour les charges IA, Cloud Run propose désormais des GPU à la demande. C’est une vraie avancée pour l’inférence machine learning, le traitement vidéo et le calcul scientifique, car vous pouvez exécuter des charges accélérées GPU sans gérer le matériel sous-jacent.

Cloud Run Functions : un modèle Function-as-a-Service (FaaS)

Si vous ne souhaitez pas gérer des conteneurs complets, Cloud Run Functions propose un mode événementiel simplifié pour exécuter de petites fonctions à usage unique. C’est comparable à AWS Lambda ou Google Cloud Functions, mais exécuté sur l’infrastructure de Cloud Run.

Comment fonctionne Cloud Run : pas à pas

Dans cette section, je vous explique comment déployer une application simple sur Cloud Run. Nous allons containeriser votre application, la déployer sur Cloud Run et la faire s’adapter automatiquement à la demande.

Nous utiliserons Docker pour containeriser l’application, mais ce n’est pas toujours obligatoire. J’y reviens à la fin.

Étape 1 : préparer votre environnement

Avant tout déploiement, installez les outils suivants :

  1. Google Cloud SDK : l’interface en ligne de commande (CLI) pour interagir avec les services Google Cloud, dont Cloud Run. Installez-la depuis ce lien.
  2. Docker : si votre application n’est pas encore containerisée, vous en aurez besoin pour l’emballer. Installez Docker depuis ce lien.
  3. Projet Google Cloud : assurez-vous d’avoir un projet Google Cloud configuré. Vous pouvez en créer un depuis la console Google Cloud.

Étape 2 : écrire le code de votre application

Nous allons maintenant écrire une application Node.js « Hello World ».

Créez un dossier pour votre application :

mkdir hello-world-app
cd hello-world-app

Créez un fichier index.js dans ce dossier avec le contenu suivant :

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');
});

Créez un fichier package.json pour définir les dépendances de votre application :

{
    "name": "hello-world-app",
    "version": "1.0.0",
    "main": "index.js",
    "dependencies": {}
}

L’application est prête : passons à sa containerisation.

Étape 3 : containeriser l’application

Créer un Dockerfile pour définir l’image du conteneur

Dans le répertoire du projet, créez un fichier « Dockerfile » avec le contenu suivant :

# 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"]

Construire l’image Docker

Exécutez la commande suivante pour construire votre image Docker :

docker build -t gcr.io/your-project-id/hello-world-app .

Remarque : remplacez your-project-id par l’ID de votre projet Google Cloud.

Tester l’image en local

Vous pouvez tester votre conteneur Docker en local avec :

docker run -p 8080:8080 gcr.io/your-project-id/hello-world-app

Ouvrez http://localhost:8080 dans votre navigateur pour vérifier que l’application fonctionne.

Étape 4 : pousser l’image dans Google Artifact Registry

Activer Artifact Registry pour votre projet

Si vous n’avez pas encore activé Artifact Registry, exécutez la commande suivante

gcloud services enable artifactregistry.googleapis.com

Remarque : vous devrez activer la facturation pour effectuer cette étape !

Créer un dépôt dans Artifact Registry

Créez un nouveau dépôt Docker dans Artifact Registry :

gcloud artifacts repositories create hello-world-repo \
--repository-format=docker \
--location=us-central1

Authentifier Docker auprès d’Artifact Registry

Configurez Docker pour s’authentifier avec Artifact Registry :

gcloud auth configure-docker us-central1-docker.pkg.dev

Taguer l’image Docker pour Artifact Registry

Assignez un tag à votre image Docker avec l’URL du dépôt 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-app

Pousser l’image dans Artifact Registry

Poussez l’image taguée dans votre dépôt Artifact Registry :

docker push us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app

Étape 5 : déployer sur Cloud Run

Une fois votre image poussée dans Artifact Registry, vous pouvez la déployer sur Cloud Run directement depuis Artifact Registry.

Déployez votre image sur Cloud Run avec la commande suivante :

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-unauthenticated
  • hello-world-app : nom de votre service Cloud Run.
  • us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app : URL de votre image stockée dans Artifact Registry.
  • --platform managed : garantit l’usage de la plateforme Cloud Run entièrement managée (et non d’un cluster GKE).
  • --region us-central1 : spécifie la région de déploiement du service.
  • --allow-unauthenticated : autorise l’accès public au service. Pour un accès restreint, adaptez ce paramètre.

Après exécution, Cloud Run déploie votre application conteneurisée et vous fournit une URL pour y accéder.

Et voilà ! Jetez un œil dans la console GCP : vous devriez voir votre nouvelle instance.

Étape 6 : nettoyage

Pour éviter toute facturation continue, supprimez votre service une fois vos tests terminés.

1. Supprimer le service Cloud Run

Exécutez la commande suivante pour supprimer le service Cloud Run déployé :

gcloud run services delete hello-world-app --region us-central1

Cette action supprime l’instance Cloud Run mais ne supprime pas l’image du conteneur.

2. Supprimer l’image dans Artifact Registry

Pour retirer l’image d’Artifact Registry, listez d’abord les images :

gcloud artifacts docker images list us-central1-docker.pkg.dev/your-project-id/hello-world-repo

Puis supprimez l’image avec :

gcloud artifacts docker images delete us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app --delete-tags

Votre Artifact Registry est désormais propre.

3. Supprimer le dépôt Artifact Registry (si vous n’en avez plus besoin)

Pour supprimer entièrement le dépôt Artifact Registry, exécutez :

gcloud artifacts repositories delete hello-world-repo --location=us-central1

Cette étape n’est nécessaire que si vous n’utilisez plus du tout le dépôt ; sinon, vous pouvez le réutiliser pour de futurs déploiements.

4. (Optionnel) Supprimer le projet Google Cloud

S’il s’agissait d’un projet de test et que vous n’en avez plus l’utilité, vous pouvez supprimer tout le projet pour retirer toutes les ressources associées :

gcloud projects delete your-project-id

Déploiements depuis le code source

Vous vous souvenez quand je disais que vous n’êtes pas toujours obligé de containeriser votre app manuellement ?

Cloud Run prend maintenant en charge les déploiements à partir du code source : il peut construire l’image à partir de votre référentiel grâce à Cloud Build.

Utilisez la commande :

gcloud run deploy hello-world-app \
--source . \
--region us-central1 \
--allow-unauthenticated

Cloud Build détecte automatiquement le langage de votre application (Node.js, Python, Go, Java, etc.), construit une image pour vous et la stocke dans Artifact Registry. Cloud Run déploie ensuite cette image comme si vous l’aviez créée manuellement. Je recommande vivement cette approche pour des applications simples dans des langages pris en charge (Node.js, Python, Go, Java, etc.), mais pas si vous avez besoin d’un contrôle total du conteneur (dépendances spécifiques, ajustements au niveau de l’OS, builds multi-étapes).

Astuces pour utiliser Cloud Run efficacement

Déployer une application sur Cloud Run est très simple, mais l’optimiser demande quelques réglages. J’ai appris par l’expérience — et parfois à mes dépens — les points suivants :

1. Les cold starts, c’est réel

Surtout avec des images de conteneur volumineuses. Plus votre image est compacte, plus votre service se lance vite. Utiliser une image de base minimale comme distroless peut faire une vraie différence. Pour les applis Python, essayez les versions slim des images officielles. Ou, si le coût n’est pas votre priorité, réglez le nombre minimal d’instances sur 1.

2. La meilleure variable à ajuster : la concurrence des requêtes

Cloud Run permet à chaque instance de gérer plusieurs requêtes en parallèle, mais la valeur par défaut (80 requêtes par conteneur) est rarement optimale. Pour des tâches intensives en CPU, réduire la concurrence à 1 ou 2 rend souvent le tout plus fluide. À l’inverse, des APIs supportent généralement une valeur plus élevée. Plus elle est haute, plus vous pouvez réduire le nombre d’instances nécessaires — et donc vos coûts. Testez plusieurs valeurs pour trouver le bon équilibre.

3. Fixez des limites à vos instances !

Très utile quand quelqu’un (moi) lance un test de charge et déclenche un nombre absurde de requêtes. J’ai appris pour vous : définissez un nombre maximal d’instances.

4. Vérifiez qui peut accéder à votre instance

Par défaut, les services Cloud Run sont accessibles par toute personne disposant de l’URL : parfait pour une démo, moins pour la production. Si votre application n’a pas vocation à être publique, restreignez l’accès avec IAM.

5. Cloud Logging et Cloud Trace deviendront vos alliés

Si, comme moi, vous débuguez d’habitude en vous connectant en SSH aux machines virtuelles, vous serez déconcerté. Les logs Cloud Run sont envoyés directement dans le tableau de bord Google Cloud. Ajoutez de la journalisation structurée dans votre application : le diagnostic s’en trouvera grandement facilité.

Cas d’usage de Cloud Run

Nous avons évoqué certains usages de Cloud Run, comme l’exécution d’applications web, d’APIs ou de tâches planifiées (cron), mais il y en a bien d’autres.

Analyse vidéo et image

Vous pouvez déployer un modèle de reconnaissance d’images pour traiter des uploads en temps réel pour un réseau social, ou lancer des tâches de transcodage vidéo lors d’un téléversement. Cloud Run gère les pics de charge (contenu viral) grâce à sa mise à l’échelle automatique, tout en restant économique quand la demande retombe.

Video and image analysis

Source : Google Cloud

Traitement de flux en temps réel

Imaginez que vous construisiez un système qui suit le comportement des utilisateurs sur une place de marché en ligne. En traitant des flux d’événements en provenance de Pub/Sub ou BigQuery, vous pouvez déclencher instantanément des actions selon l’activité, comme l’envoi de notifications push ou l’analyse des tendances en temps réel. Cloud Run monte en charge automatiquement pour absorber les pics et redescend quand le volume diminue.

Real-time stream processing

Source : Google Cloud

Traitement de fichiers en temps réel

Un cas d’usage typique : l’analyse de logs en temps réel pour une grande entreprise. Dès qu’un fichier journal est téléversé dans Cloud Storage, Cloud Run peut déclencher un conteneur pour le parser, l’analyser et stocker les résultats, tout en s’adaptant dynamiquement à la taille du fichier et à la complexité du traitement.

Real-time file processing

Source : Google Cloud

Backends IoT serverless

Cloud Run est idéal pour gérer les services backend des applications IoT. Par exemple, dans une solution IoT qui suit des données environnementales provenant de milliers de capteurs, Cloud Run peut traiter les données entrantes de chaque dispositif en temps réel.

Serverless IoT backends

Source : Google Cloud

Tarification de Google Cloud Run

Cloud Run suit un modèle à l’usage : vous ne payez que pour les ressources de calcul utilisées lorsque votre application traite des requêtes. Quand elle est inactive, elle peut passer à zéro : pas de coûts superflus.

Détail des tarifs

En mars 2025, Cloud Run facture selon deux facteurs principaux :

RessourceCoûtOffre gratuite
CPU0,000018 $ par seconde vCPU240 000 secondes vCPU/mois
Mémoire0,000002 $ par seconde GiB450 000 secondes GiB/mois

Cette tarification concerne la facturation par instance, mais elle diffère pour la facturation par requête. Les prix et le niveau gratuit varient aussi légèrement selon la région : consultez la page officielle Google Cloud pour les chiffres exacts. Un calculateur de prix vous aide à estimer vos coûts, et des remises pour engagement sont proposées.

Petit conseil : le trafic entre services Google Cloud dans une même région est gratuit. Privilégiez donc Cloud Storage, Cloud SQL ou Pub/Sub plutôt que des services externes pour vos échanges de données.

Cloud Run vs Cloud Run Functions

Google propose deux options de calcul serverless : Cloud Run et Cloud Run Functions (anciennement Cloud Functions). Les deux exécutent du code sans gestion d’infrastructure, mais ils diffèrent sur certains points.

CaractéristiqueCloud RunCloud Functions
Modèle d’exécutionExécute des applications conteneurisées complètesExécute des fonctions individuelles (modèle FaaS)
Contrôle du runtimeN’importe quel langage, framework, binaires personnalisésRuntimes prédéfinis (Node.js, Python, Go, etc.)
ÉtatSans état, mais peut maintenir des connexions pendant une requêteSans état, conçu pour les charges événementielles
Mise à l’échelleMise à l’échelle par instance de conteneurMise à l’échelle par invocation de fonction
DéclencheursRequêtes HTTP, Pub/Sub, événementielÉvénementiel (Pub/Sub, Cloud Storage, HTTP, etc.)
Cold startsMinimisés avec des instances préchaufféesPeuvent entraîner des latences notables au scaling
Idéal pourAPIs, microservices, services backend, charges IAFonctions légères événementielles, automatisation

Quand utiliser Cloud Run

  • ✅ Vous avez besoin d’un contrôle total sur le runtime et les dépendances.
  • ✅ Vous exécutez un service web, une API ou un microservice gérant des requêtes persistantes.
  • ✅ Vous souhaitez déployer une application déjà conteneurisée avec un minimum de modifications.
  • ✅ Vous avez des traitements en arrière-plan ou de longue durée (inférence IA, jobs batch, etc.).

Quand utiliser Cloud Run Functions

  • ✅ Vous voulez des fonctions simples, événementielles, déclenchées par des messages Pub/Sub ou des uploads Cloud Storage.
  • ✅ Vous gérez des opérations de courte durée : notifications, petits traitements, transformations de données.
  • ✅ Vous préférez ne pas gérer de conteneurs et utiliser des runtimes préconstruits pour JavaScript, Python, Go, etc.

Vous n’êtes pas obligé de choisir : vous pouvez combiner les deux ! Par exemple, votre backend Cloud Run peut déclencher des Cloud Run Functions pour des tâches spécifiques comme l’envoi d’e-mails ou le traitement d’images en asynchrone.

Comparaison avec d’autres services Google Cloud

Nous avons déjà bien comparé Cloud Run et Cloud Run Functions, mais deux autres services méritent d’être mentionnés : GKE et App Engine.

CaractéristiqueCloud RunGoogle Kubernetes Engine (GKE)App Engine
Type de gestionServerless entièrement managéClusters Kubernetes auto-gérésPlatform-as-a-service entièrement managé
Mise à l’échelleAutomatique, jusqu’à zéroManuelle ou automatique via KubernetesAutomatique (mais pas jusqu’à zéro)
DéploiementDéploiement de conteneurs (tout langage)Déploiement de conteneurs via KubernetesDéploiement de code (runtimes spécifiques pris en charge)
Cas d’usageAPIs, microservices, apps web, batch, IAApps complexes, microservices à grande échelle, workloads MLApps web, backends mobiles, APIs
Langages pris en chargeTout (basé sur conteneur)Tout (basé sur conteneur)Runtimes spécifiques pris en charge

Il y a évidemment plus de nuances, mais en bref : si vous voulez une solution conteneurisée, entièrement managée, flexible et à mise à l’échelle automatique, optez pour Cloud Run. Si vous construisez une app web avec un minimum de configuration, choisissez App Engine. Et si vous voulez un contrôle total de vos clusters Kubernetes pour des applications complexes à grande échelle, prenez GKE.

Conclusion

Maintenant que vous savez tout sur Cloud Run, lancez votre première instance ou explorez d’autres services Google Cloud pour trouver le juste équilibre entre contrôle et automatisation qui vous convient !

FAQ Cloud Run

Comment gérer les connexions à la base de données dans Cloud Run ?

Utilisez Cloud SQL Auth Proxy, activez un pool de connexions (par ex. PgBouncer pour PostgreSQL) ou optez pour des bases de données serverless comme Firestore pour éviter les limites de connexions.

Puis-je utiliser un domaine personnalisé avec Cloud Run ?

Oui. Configurez-la dans la console Cloud Run sous Gérer les domaines personnalisés, vérifiez la propriété et mettez à jour les enregistrements DNS. Le SSL est fourni automatiquement.

Cloud Run prend-il en charge les WebSockets et les connexions persistantes ?

Oui, mais les instances peuvent s’arrêter si elles sont inactives. Pour maintenir les connexions, définissez un minimum d’instances ou utilisez Pub/Sub pour une communication événementielle.

Cloud Run peut-il gérer des tâches en arrière-plan ?

Pas directement, car il est basé sur les requêtes. Utilisez Cloud Tasks, Pub/Sub ou Workflows pour déclencher et orchestrer les traitements en arrière-plan.

Puis-je exécuter des applications avec état sur Cloud Run ?

Ce n’est pas recommandé, les instances étant sans état. Utilisez Cloud Storage, Firestore ou une base de données externe pour persister l’état.

Marie Fayard

Auteur

Marie Fayard

Je suis un chef d'équipe technique axé sur les produits, spécialisé dans le développement de startups en phase de démarrage, du premier prototype à l'adéquation produit-marché et au-delà. Je suis infiniment curieux de savoir comment les gens utilisent la technologie, et j'aime travailler en étroite collaboration avec les fondateurs et les équipes interfonctionnelles pour donner vie à des idées audacieuses. Lorsque je ne construis pas de produits, je cherche l'inspiration dans de nouveaux coins du monde ou je me défoule au studio de yoga.

Sujets