Orchestrer des traitements IA nocturnes : Cloud Workflows, Cloud Scheduler, Cloud Run jobs
Chaque nuit, un workflow planifié classe les avis clients de la veille avec Gemini sur Vertex AI : un Cloud Run job par fichier en tâches parallèles, une synthèse rédigée dans le workflow, un rapport, une notification de fin, et une relance possible à tout moment sans rien refaire ni refacturer.

Voyages Astrolabe, agence de voyages en ligne de 250 personnes (fictive), reçoit chaque jour quelques dizaines à quelques centaines d'avis clients par e-mail, par le formulaire du site et par les transcriptions d'appels. Le service qualité veut, à 8 h, la liste des cas graves avec l'action à mener, et un état des volumes par thème. Depuis deux ans, un script cron sur une VM s'en charge. Il a échoué quatre fois cette année sans prévenir personne ; une relance manuelle a facturé deux fois la moitié des appels Gemini et produit un rapport faux.
Ce projet remplace ce script par trois services managés, sans serveur à maintenir : Cloud Scheduler déclenche, Cloud Workflows enchaîne et gère les erreurs, des Cloud Run jobs calculent en parallèle. Il est déployé sur Google Cloud, exécuté par la vraie planification, relancé, interrompu volontairement puis repris, et supprimé en vérifiant qu'il ne reste rien.
Ce que vous livrez
- Un Cloud Run job Python qui classe une tranche d'avis par tâche, par lots de 5 envoyés à Gemini 2.5 Flash en sortie structurée, et marque chaque tranche terminée.
- Un workflow YAML : idempotence par date, un job par fichier (2 à la fois), réessais avec prédicat, synthèse Gemini appelée directement par connecteur, rapport, notification de succès ou d'échec.
- Une planification Cloud Scheduler à 03:30 heure de Paris, avec réessais de déclenchement.
- Trois comptes de service aux droits limités, justifiés ligne par ligne.
make cloud-up,make e2e,make cloud-down: création, scénario réel en 8 vérifications, suppression vérifiée.
Architecture
flowchart LR
SCH["Cloud Scheduler<br/>03:30 Europe/Paris"] -- "OAuth" --> WF["Cloud Workflows"]
WF -- "termine.json ?" --> GCS[("Cloud Storage")]
WF -- "jobs.run x fichiers<br/>2 à la fois" --> JOB["Cloud Run job<br/>N tâches"]
JOB -- "lots de 5" --> G["Vertex AI<br/>gemini-2.5-flash"]
JOB -- "tranches + stats" --> GCS
WF -- "synthèse" --> G
WF -- "rapport, marqueur" --> GCS
WF -- "statut ok / echec" --> PS["Pub/Sub"]
Stack, coût, durée
| Élément | Choix | Pourquoi |
|---|---|---|
| Planification | Cloud Scheduler, cible HTTP Workflow Executions | réessais de déclenchement, fuseau horaire |
| Orchestration | Cloud Workflows | exécution durable, facturée au pas, connecteurs Google |
| Calcul | Cloud Run job, 2 tâches par fichier, 2 réessais par tâche | rien ne tourne entre deux nuits |
| Modèle | gemini-2.5-flash, Vertex AI europe-west1, sans raisonnement | classement et synthèse ; données dans l'UE |
| État | Cloud Storage : entrées, tranches, marqueurs, rapports | la reprise lit l'état, pas une base |
Coût mesuré d'une nuit de 29 avis : 6 364 tokens Gemini (4 826 pour le classement, 1 538 pour la synthèse), soit entre 0,2 et 1,6 centime au tarif public selon la part de sortie, plus quelques dizaines de secondes de tâches Cloud Run et une centaine de pas Workflows, couverts par l'offre gratuite mensuelle. Le détail, et l'extrapolation à 30 000 avis, sont en leçon 6. Durée : 5 h ; make cloud-up prend environ 1 min 30, make e2e environ 3 min.
Prérequis
- Avoir déployé un service ou un job Cloud Run ; YAML et Python courants.
- Un projet Google Cloud où vous êtes propriétaire,
gcloudinstallé,gcloud auth application-default loginfait. - Le projet précédent, Pipeline IA événementiel, traite les documents un par un à leur arrivée ; celui-ci traite un lot à heure fixe. Les deux se lisent indépendamment.
- Sans projet Google Cloud :
make test(14 tests, sans réseau) et la lecture des leçons restent possibles.
Programme
| # | Leçon | Vous finissez avec |
|---|---|---|
| 1 | Architecture d'un traitement nocturne | un découpage des responsabilités et make test vert |
| 2 | Le job Cloud Run de traitement en lot | une tâche idempotente, testée sans réseau |
| 3 | Le workflow : étapes, parallélisme, réessais, erreurs | un workflow déployé |
| 4 | Planification, notification et droits | un déclenchement planifié qui réussit |
| 5 | Exécuter, relancer, reprendre | make e2e vert : 8 vérifications |
| 6 | Coûts et nettoyage | un coût par avis calculé, make cloud-down vérifié |
Le dépôt complet est dans files/ ; commencez par son README.
Recursos
Descargar todo (.zip)Referencias
- Workflows : étapes parallèlescloud.google.com
- Workflows : réessais (retry) et prédicatscloud.google.com
- Connecteur Workflows : Cloud Run v2 jobs.runcloud.google.com
- Connecteur Workflows : Vertex AI generateContentcloud.google.com
- Cloud Run : créer des jobscloud.google.com
- Workflows : planifier une exécution avec Cloud Schedulercloud.google.com
- Cloud Scheduler : planifications cron et fuseaux horairescloud.google.com
- Workflows : tarifscloud.google.com