Cloud Run est une plate-forme d'application entièrement gérée qui vous permet d'exécuter votre code, fonction ou conteneur sur l'infrastructure hautement évolutive de Google.
En résumé, Cloud Run permet aux développeurs de passer leur temps à écrire leur code, et très peu de temps à utiliser, configurer et faire évoluer leur service Cloud Run. Vous n'avez pas besoin de créer de cluster ni de gérer une infrastructure pour être productif avec Cloud Run.
Services et jobs
Sur Cloud Run, votre code peut être exécuté en tant queservice ou job.
Le tableau suivant présente un aperçu des options fournies par chaque type de ressource Cloud Run.
| Ressource | Description |
|---|---|
| Service | Répond aux requêtes HTTP envoyées à un point de terminaison unique et stable, à l'aide d'instances sans état qui évoluent automatiquement en fonction de diverses métriques clés. Répond également aux événements et aux fonctions. |
| Job | Exécute les tâches parallélisables qui sont exécutées manuellement ou selon un calendrier, et qui s'exécutent jusqu'à la fin. |
Services Cloud Run
Un service Cloud Run vous fournit l'infrastructure requise pour exécuter un point de terminaison HTTPS fiable. Vous devez vous assurer que votre code écoute sur un port TCP et gère les requêtes HTTP.
Le schéma suivant montre un service Cloud Run exécutant plusieurs instances de conteneur pour gérer les requêtes Web et les événements du client à l'aide d'un point de terminaison HTTPS.
Un service standard comprend les fonctionnalités suivantes :
- Point de terminaison HTTPS unique pour chaque service
- Chaque service Cloud Run dispose d'un point de terminaison HTTPS sur un sous-domaine unique du domaine
*.s3nsrun.fr. Vous pouvez également configurer des domaines personnalisés. Cloud Run gère automatiquement le protocole TLS et est compatible avec WebSockets, HTTP/2 (de bout en bout) et gRPC (de bout en bout). - Autoscaling rapide basé sur les requêtes
- Cloud Run effectue rapidement un scaling horizontal pour gérer toutes les requêtes entrantes ou pour gérer une augmentation de l'utilisation du processeur sans lien avec les requêtes si le paramètre de facturation est défini sur facturation basée sur les instances. Un service peut évoluer rapidement jusqu'à un millier d'instances, voire plus si vous demandez une augmentation de quota. Si la demande diminue, Cloud Run supprime les conteneurs inactifs. Si vous avez des préoccupations concernant les coûts ou la surcharge des systèmes en aval, vous pouvez limiter le nombre maximal d'instances.
- Scaling manuel facultatif
- Par défaut, Cloud Run effectue automatiquement un scaling à la hausse pour gérer un trafic plus important, mais vous pouvez remplacer ce comportement en utilisant le scaling manuel pour contrôler le comportement de scaling.
- Gestion du trafic intégrée
Pour réduire le risque de déploiement d'une nouvelle révision, Cloud Run permet d'effectuer un déploiement progressif, y compris en acheminant le trafic entrant vers la dernière révision, en effectuant un rollback vers une révision précédente et en répartissant le trafic vers plusieurs révisions en même temps.
Par exemple, vous pouvez commencer par envoyer 1 % des requêtes à une nouvelle révision, puis augmenter ce pourcentage tout en surveillant la télémétrie.
- Services publics et privés
Un service Cloud Run peut être accessible depuis Internet. Vous pouvez restreindre l'accès de différentes façons :
- Spécifiez une stratégie d'accès à l'aide de Cloud IAM.
- Utilisez des paramètres d'entrée pour restreindre l'accès au réseau. Cette fonctionnalité est utile si vous souhaitez n'autoriser que le trafic interne provenant du VPC et des services internes.
- Autorisez uniquement les utilisateurs authentifiés avec Identity-Aware Proxy (IAP).
Vous pouvez diffuser des éléments pouvant être mis en cache à partir d'un emplacement périphérique plus proche des clients en mettant en place un service Cloud Run avec un réseau de diffusion de contenu (CDN), tel que Firebase Hosting et Cloud CDN.
Scaling à zéro et nombre minimal d'instances
Par défaut, si la facturation est définie sur la facturation basée sur les instances, Cloud Run ajoute et supprime automatiquement des instances pour gérer toutes les requêtes entrantes ou pour gérer une augmentation de l'utilisation de processeur sans lien avec les requêtes.
S'il n'y a aucune requête entrante à votre service, la dernière instance restante sera supprimée. Ce comportement est communément appelé "scaling à zéro instance". Ensuite, si aucune instance n'est active lorsqu'une requête est envoyée, Cloud Run en crée une. Cela augmente le temps de réponse pour ces premières requêtes, en fonction de la vitesse à laquelle votre conteneur est prêt à gérer les requêtes.
Pour modifier ce comportement, utilisez l'une des méthodes suivantes :
- Configurez Cloud Run pour qu'une quantité minimale d'instances reste active afin que votre service ne procède pas à un scaling à zéro instance.
- Utilisez le scaling manuel pour mieux contrôler le scaling.
Tarification à l'utilisation pour les services
Le scaling à zéro instance est intéressant pour des raisons économiques, car vous payez le processeur et la mémoire alloués à une instance avec une précision de 100 ms. Si vous ne configurez pas un nombre minimal d'instances, votre service n'est pas facturé. Il existe une version sans frais avantageuse. Consultez la page Tarifs pour en savoir plus.
Vous pouvez activer deux paramètres de facturation :
- Basée sur les requêtes
- Si une instance ne traite pas les requêtes, aucuns frais ne vous sont facturés. Vous payez des frais par requête.
- Basée sur les instances
- La durée de vie d'une instance vous est facturée. Aucuns frais par requête ne sont appliqués.
Il existe une version sans frais avantageuse. Pour plus d'informations, consultez la page Tarifs, et reportez-vous à la section Paramètres de facturation pour découvrir comment activer la facturation basée sur les requêtes ou sur les instances pour votre service.
Système de fichiers de conteneur temporaire
Les instances sur Cloud Run sont suppressibles. Chaque conteneur possède une superposition de système de fichiers en mémoire, accessible en écriture, qui n'est pas conservée si le conteneur s'arrête. Cloud Run détermine quand arrêter d'envoyer des requêtes à une instance et l'arrêter, par exemple lors du scaling vertical.
Pour recevoir un avertissement lorsque Cloud Run est sur le point d'arrêter une instance, votre application peut intercepter le signal SIGTERM. Cela permet à votre code de vider les tampons locaux et de conserver les données locales dans un datastore externe.
Pour conserver les fichiers de manière permanente, intégrez Cloud Storage ou installez un système de fichiers réseau (NFS).
Quand utiliser les services Cloud Run ?
Les services Cloud Run sont parfaitement adaptés au code qui gère les requêtes, les événements ou les fonctions. Voici quelques exemples de cas d'utilisation :
- Sites et applications Web
- Créez votre application Web à l'aide de votre pile préférée, accédez à votre base de données SQL et affichez des pages HTML dynamiques.
- API et microservices
- Vous pouvez créer une API REST, une API GraphQL ou des microservices privés communiquant via HTTP ou gRPC.
Jobs Cloud Run
Si votre code fonctionne, puis s'arrête, par exemple en utilisant un script, vous pouvez utiliser un job Cloud Run pour exécuter votre code. Vous pouvez exécuter un job depuis la ligne de commande à l'aide de Google Cloud CLI, en programmant un job récurrent.
Les tâches de tableau sont un moyen plus rapide d'exécuter des tâches
Un job peut démarrer une seule instance pour exécuter votre code. C'est un moyen courant d'exécuter un script ou un outil.
Cependant, vous pouvez également utiliser une tâche de tableau, en démarrant de nombreuses instances indépendantes et identiques en parallèle. Les tâches de tableau sont un moyen plus rapide de traiter des tâches pouvant être divisées en plusieurs tâches indépendantes.
Le schéma suivant montre qu'un job comportant sept tâches prend plus de temps à s'exécuter de manière séquentielle que le même job lorsque quatre instances peuvent traiter des tâches indépendantes en parallèle :
Par exemple, si vous redimensionnez et recadrez 1 000 images à partir de Cloud Storage, il est plus lent de les traiter l'une après l'autre que de les traiter en parallèle avec de nombreuses instances, que Cloud Run gère avec l'autoscaling.
Quand utiliser les tâches Cloud Run ?
Les tâches Cloud Run conviennent parfaitement à l'exécution de code qui effectue une tâche (qui est terminée) et se ferme une fois la tâche terminée. Voici quelques exemples :
- Script ou outil
- Exécutez un script pour effectuer des migrations de bases de données ou d'autres tâches opérationnelles.
- Tâche de tableau
- Effectuez un traitement hautement parallèle de tous les fichiers d'un bucket Cloud Storage.
- Job planifié
- Créez et envoyez des factures à intervalles réguliers, ou enregistrez les résultats d'une requête de base de données au format XML et importez le fichier toutes les deux ou trois heures.