• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 03/12/2024

Comprenez l’architecture et le déploiement de Kestra

L’architecture de Kestra a été conçue pour passer à l’échelle, être flexible et tolérante aux erreurs. Kestra peut être déployé sur de nombreux systèmes. Regardons cela plus en détail !

Découvrez l’architecture de Kestra

L’architecture principale de Kestra repose sur plusieurs services et un back-end de base donnée de type JDBC :

L'architecture de Kestra avec un backend JDBC connecté à un serveur composé de : Webserver, Scheduler, Executor et Worker. Le serveur est également lié à un utilisateur et à une infrastructure utilisateur contenant un service de stockage interne.
Architecture principale de Kestra et ses services associés.

Découvrez les différents services Kestra

Les composants

Kestra est composé de trois composants principaux : les services de compute, la base de données et le stockage interne. Regardons d’abord les services :

  • Worker : Exécute les tâches et interagit avec l'infrastructure de l'utilisateur.

  • Executor : Gère la logique d'orchestration, y compris les déclencheurs de flux.

  • Scheduler : Planifie les workflows et traite tous les déclencheurs.

  • Web Server : Sert l'API et l'interface utilisateur pour l'interaction avec le système.

Ces services sont indépendants, mais tous indispensables pour faire fonctionner Kestra.

La base de données

La base de données stocke les métadonnées d'orchestration. Tous les flux, exécutions, journaux, etc. sont stockés dans cette base. Chaque composant est découplé les uns des autres et communique via  la base de données. Ce découplage du calcul, du stockage et des métadonnées permet une meilleure résilience de l'instance.

Le stockage interne

Le stockage interne est l'endroit où tous les fichiers de données sont stockés. Par exemple, les sorties d'un flux stockées dans la base de données ne sont que des métadonnées contenant le chemin réel des données dans le stockage interne. Les composants du service Kestra ne lisent les données qu'à partir de ce service.

Découvrez les différentes façons de déployer Kestra

ll existe différentes manières de déployer les composants Kestra, chacune avec ses avantages et ses limitations.

Compute

Les composants de compute de Kestra (worker, executor, scheduler et webserver) peuvent être déployés de deux manières différentes : en standalone ou de façon distribuée.

Standalone

Le déploiement standalone (généralement avec docker-compose) est très pratique pour démarrer avec Kestra. C'est simple et ne nécessite aucun réglage particulier. Cependant, il expose un “single point of failure” et ne peut être mis à l’échelle que verticalement, car tout est sur le même serveur.

Distribué

Les composants de compute de Kestra peuvent être distribués sur différents serveurs. Par exemple, il est intéressant de déployer plusieurs workers ou executors sur différents serveurs pour passer à l’échelle horizontalement votre instance Kestra. Cela présente l'avantage d'améliorer la résilience en cas de défaillance d'un seul composant. Les ingénieurs Kestra peuvent déployer leur instance de manière distribuée soit "manuellement", soit via un système de gestion de containers comme Kubernetes.

Selon l'approche choisie, vous pourriez avoir besoin de compétences avancées dans ces technologies pour déployer correctement Kestra de manière distribuée.

Méthode de déploiement

Avantages ✅

Désavantages ❌

Standalone

Petite production, non critique

“Single Point of Failure”

Mise à l’échelle seulement verticale

Distribué

Mise à l’échelle horizontale et verticale

Résilient

Demande une attention particulière au déploiement (manuel)

Distribué (avec Kubernetes)

Facile à déployer avec Helm

Nécessite connaissances en Kubernetes et Helm

Base de données

La base de données de Kestra est assez simple à déployer : il vous suffit d'avoir une instance (Postgres par exemple) en fonctionnement. Pour simplifier la maintenance de cette base de données, de nombreux ingénieurs préfèrent utiliser des services gérés via des services cloud (tels qu'AWS RDS, GCP CloudSQL, etc.). Cela réduit les charges liées aux sauvegardes, aux redémarrages en cas de panne et à la maintenance générale du système. Il est recommandé de déployer les composants Kestra séparément de la base de données, afin que tout soit découplé en cas de panne.

Stockage interne

Il existe plusieurs configurations possibles pour le stockage interne. Il est vivement encouragé de déployer le stockage interne de Kestra sur des services de stockage objet fournis par les fournisseurs de cloud (AWS S3, Azure BlobStorage, GCP GCS, etc.) ou toute autre possibilité que vous pourriez avoir sur site (comme MinIO). Comme pour la base de données, cela découple les rôles de chaque partie et permet de sauvegarder les données importantes.

En résumé

  • Kestra est flexible, robuste et peut passer à l’échelle facilement.

  • Kestra possèdent deux types d’architecture: JDBC ou Kafka.

  • Kestra repose sur un ensemble de service (worker, executor, scheduler, web-server).

  • Kestra utilise un metastore (par exemple Postgres) et un stockage interne (système de fichier).  

  • Il est possible de déployer ces éléments de différentes façons: cela dépend de vos besoins et de votre infrastructure.

Nous venons de voir comment déployer les services Kestra, explorons maintenant comment déployer vos flux de façon robuste et automatique.

Exemple de certificat de réussite
Exemple de certificat de réussite