L’orchestrateur est le service chargé de coordonner automatiquement l’exécution des workflows liés aux sauvegardes dans l’infrastructure Cybee.
Il garantit que les tâches s’exécutent dans le bon ordre, au bon moment, et sans se marcher dessus, même lorsqu’elles manipulent les mêmes ressources (agents, repositories, buckets…).
Il assure ainsi la fiabilité, la priorisation et l’optimisation de toutes les opérations automatisées.
1. Besoins résolus #
L’orchestrateur répond à des besoins concrets rencontrés dans les systèmes distribués :
✔ Éviter les conflits #
Exemple : empêcher la suppression d’un dépot pendant qu’un backup l’utilise.
✔ Gérer la priorité des tâches #
Certaines tâches critiques peuvent passer avant d’autres.
✔ Adapter le lancement des tâches selon la charge générée #
L’orchestrateur peut espacer ou retarder des tâches utilisant les mêmes ressources physiques (CPU, bande passante…).
✔ Gérer le temps et les récurrences #
-
Lancement à heure fixe
-
Règles de calendrier (ex. tous les vendredis)
-
Événements naturels (ex. lever/coucher du soleil)
-
Exécution ponctuelle
-
Deadlines strictes ou souples
-
Durée maximale d’exécution
✔ Annuler ou bloquer automatiquement les tâches non conformes #
Si une tâche dépasse sa fenêtre d’exécution, ou si une contrainte n’est pas respectée, elle est annulée ou mise en attente.
2. Comment l’orchestrateur fonctionne #
L’orchestrateur repose sur quatre concepts fondamentaux :
a. Les tâches #
Ce sont les actions à exécuter (ex : backup, scan, purge…).
Elles incluent :
- une priorité
- des deadlines
- des règles de lancement (cron, calendrier, ponctuel, etc.)
- la liste des ressources nécessaires
b. Les ressources logiques #
Ce sont les objets manipulés par les workflows (agents, repositories, buckets…).
Elles peuvent être utilisées :
- de manière exclusive (une seule tâche à la fois)
- ou partagée
c. Les groupes #
Ils regroupent plusieurs ressources logiques et permettent :
- d’espacer le lancement des tâches dépendant du même type de ressources,
- d’intégrer des contraintes basées sur la charge réelle (V2),
- de gérer simplement l’ordonnancement en V1 (version transitoire).
d. Les ressources physiques #
Elles représentent des limites matérielles :
- bande passante, CPU, RAM disponible…
L’orchestrateur vérifie leur état avant de lancer une tâche (V2).
3. Cycle de vie d’une tâche #
-
Création
Le système ou l’utilisateur envoie une tâche avec toutes ses contraintes. -
Planification
L’orchestrateur calcule les prochaines exécutions possibles. -
Validation des contraintes
-
- exclusivité des ressources logiques
- disponibilité des ressources physiques
- respect des deadlines
-
Lancement
La tâche part dès que toutes les conditions sont réunies. -
Suivi
L’orchestrateur suit l’état de la tâche (planifiée, active, bloquée…). -
Annulation / suppression
Gérée automatiquement selon les règles définies.
Priorité dynamique #
Si une tâche ne peut pas être lancée (exclusivité ou charge), sa priorité augmente automatiquement à mesure qu’elle se rapproche de sa deadline.
Cela garantit qu’elle ne reste jamais bloquée indéfiniment derrière d’autres tâches.
5. Endpoints exposés (vision produit) #
L’orchestrateur fournit plusieurs endpoints utiles pour le front, l’API et les autres services :
📌 Tâches planifiées #
Liste des tâches prêtes à être lancées, avec :
- leur date de lancement prévue
- leur priorité dynamique
- l’état de blocage éventuel (ex. attente d’un agent)
📌 Tâches actives #
Liste des tâches actuellement en cours, avec l’heure de démarrage.
📌 Ressources logiques utilisées #
Permet de savoir quelles ressources sont occupées en temps réel.
📌 Groupes utilisés #
Indique la charge actuelle par groupe, utile pour le debug et l’observabilité.
5. Valeur apportée pour les clients #
| Problème | Solution apportée par l’orchestrateur |
|---|---|
| Risque d’exécutions concurrentes dangereuses | Gestion automatique des exclusivités |
| Goulots d’étranglement sur certaines ressources | Espacement et priorisation intelligente |
| Tâches non lancées à temps | Deadlines + reprise automatique |
| Charges imprévisibles sur agents / bande passante | Utilisation des ressources physiques (V2) |
| Besoin de flexibilité dans les plannings | Scheduling avancé (cron, calendrier, événement, ponctuel) |
En résumé : plus de fiabilité, moins d’erreurs, plus d’automatisation et de transparence.
6. Pour qui est l’orchestrateur ? #
| Profil | Bénéfices |
|---|---|
| Ops / SRE | Vision claire de la charge, gestion automatique des conflits |
| Produit | Assurance que les workflows critiques s’exécutent toujours dans les temps |
| Front-end | Accès simplifié à l’état en temps réel des tâches et ressources |