← Vue d’ensemble

Orchestration et calcul

Des jobs et des workflows qui tournent seuls

Un job se déclare en quelques champs, un workflow s’assemble en graphe de dépendances, et la planification se règle sans une ligne de YAML. Chaque run s’exécute dans votre Kubernetes, à la taille que vous avez choisie, et se suit en direct.

Le détail d’un run Spark dans la console graal : statut « En cours », badge « Agent », job conso-regionale-daily déclenché par Claude Code, ressources 4 vCPU et 8 Gio, tentative 1 sur 3, et le journal qui défile ligne à ligne avec l’écriture d’un fichier Parquet sur S3.Le détail d’un run Spark dans la console graal : statut « En cours », badge « Agent », job conso-regionale-daily déclenché par Claude Code, ressources 4 vCPU et 8 Gio, tentative 1 sur 3, et le journal qui défile ligne à ligne avec l’écriture d’un fichier Parquet sur S3.

Un run suivi en direct : qui l’a déclenché, sur quelles ressources, à quelle tentative, et ses logs ligne à ligne.

Interface réelle de la console graal, non retouchée ; données de démonstration fictives (locataire energie-demo — personnes, projets et jetons inventés).

Capacités clés

Tout ce qui tourne, au même endroit

Tous vos types de job

Python, Spark, SQL, bash, notebooks, SAS et dbt, chacun dans son image d’exécution, avec ses bibliothèques et ses secrets.

Des workflows en graphe

Vous enchaînez des jobs de types différents, vous posez les dépendances, et chaque étape se relance seule en cas d’échec.

Cron, événements et backfills

Une expression cron, l’arrivée d’un fichier dans un bucket, ou un rattrapage sur une plage de dates : chaque run connaît sa date logique.

Reprises et alertes

Nombre de tentatives et durée maximale par job ; une alerte part à l’échec ou au succès, vers les destinataires que vous choisissez.

Spark distribué

Un driver et ses workers, créés pour le run et détruits après lui, sur votre Kubernetes. Aucun cluster Spark permanent à entretenir.

GPU et types d’instance

Vous choisissez un type d’instance par job, GPU compris. Les quotas du projet bornent ce qu’un run peut demander.

Comment ça marche

Du code au run planifié

  1. Étape 01

    Déclarer le job

    Un type, un fichier de code, une image, un type d’instance. Les paramètres et les secrets sont injectés par référence.

  2. Étape 02

    Assembler et planifier

    Vous reliez les jobs en workflow et choisissez le déclencheur : cron, événement, ou lancement à la demande.

  3. Étape 03

    Suivre chaque run

    Logs en direct, événements étape par étape, fichiers produits et métriques : chaque run garde sa trace.

Chaque run est isolé

Un run naît avec ses propres conteneurs, son identité et ses règles réseau, et disparaît avec eux. Il ne voit que les secrets de son projet et ne joint que les destinations autorisées. Les conteneurs tournent sans privilèges, sous le profil de sécurité restreint de Kubernetes.

La planification vit dans graal

Les cron, les déclencheurs et les workflows sont tenus par graal lui-même, pas par un ordonnanceur de plus à installer. Une planification se modifie dans la console, par l’API ou par un agent, et prend effet au prochain déclenchement.

Standards et intégrations

Des moteurs ouverts

  • Kubernetes
  • Apache Spark
  • Python
  • bash
  • SQL
  • Trino
  • dbt
  • Jupyter
  • SAS
  • cron
  • GPU

Gouvernance

Qui lance quoi, et à quel coût

  • Droits de création, de lancement et de planification distincts, par projet
  • Quotas de vCPU, de mémoire et de GPU vérifiés avant chaque run
  • Chaque run est attribué à une personne ou à un agent, et son coût au projet

Questions fréquentes

Pouvons-nous reprendre nos jobs existants ?

Oui. Un script Python, un job Spark ou un projet dbt se dépose tel quel ; vos enchaînements se recréent en workflow.

Faut-il un cluster Spark à part ?

Non. Spark s’exécute sur votre Kubernetes, dimensionné run par run : un driver et ses workers, puis plus rien.

Que se passe-t-il si un run échoue la nuit ?

Il est relancé selon le nombre de tentatives prévu. S’il échoue encore, l’alerte part, et ses logs vous attendent dans la console.

Comment recalculer un historique ?

Par un backfill : vous choisissez une plage de dates, graal crée un run par date, sans doublon, sous les quotas du projet.

Planifiez votre premier workflow

Un job, un workflow à deux étapes, une planification : en démonstration, de bout en bout.