Aller au contenu

Temporal

Dans cet article

Information

Temporal est une plateforme open-source pour la création d'applications distribuées fiables. Elle répond à l'un des défis majeurs du développement moderne : garantir l'exécution de processus critiques dans des environnements instables. Elle permet aux développeurs de se concentrer sur la logique métier plutôt que sur la gestion des défaillances d'infrastructure.

Temporal. Fonctionnalités principales

  • Orchestration de workflow : Assure une exécution robuste des processus métier de longue durée. Gère automatiquement les échecs et les tentatives de réessai (retries), garantissant l'achèvement des tâches.
  • Transactions distribuées : Garantit l'exécution cohérente des opérations entre différents services sans utiliser de verrous distribués.
  • Délais d'attente et planification : Permet de définir des minuteurs et de planifier des tâches avec une grande précision, même pour des processus longs.
  • Scalabilité : Prend en charge la mise à l'échelle horizontale pour gérer des charges élevées. Les composants peuvent être mis à l'échelle indépendamment.
  • Débogage historique : Préserve l'historique de l'exécution des processus, permettant l'analyse et le débogage des workflows.
  • Versioning : Prend en charge les mises à jour sécurisées des workflows sans interrompre les tâches en cours d'exécution.
  • Observabilité : S'intègre aux systèmes de surveillance et de traçage pour le contrôle de l'application.
  • Multi-tenancy : Assure l'isolation et la gestion des ressources pour plusieurs équipes ou applications.

Fonctionnalités de déploiement

ID Nom du logiciel Système d'exploitation compatible VM BM VGPU GPU Min CPU (Cœurs) Min RAM (GB) Min HDD/SSD (GB) Domaine personnalisé Actif
266 Temporal Ubuntu 22.04 + + + + 2 2 30 Non COMMANDER

Prise en main après le déploiement de Temporal

Après le paiement, une notification concernant la disponibilité du serveur sera envoyée à votre adresse e-mail enregistrée. Elle contiendra l'adresse IP du VPS et les identifiants de connexion pour l'accès. Les clients de notre entreprise gèrent le matériel via le server management panel and APIInvapi.

Après avoir cliqué sur le lien via le tag webpanel, une fenêtre d'autorisation s'ouvrira.

Les données d'autorisation se trouvent dans l'onglet Configuration >> Tags du panneau de gestion du serveur ou dans l'e-mail envoyé :

  • Lien pour l'accès au panneau de gestion Temporal via l'interface web : dans le tag webpanel ;
  • Login et Password pour la gestion du serveur : fournis dans un e-mail lors de la remise du serveur.

Composants principaux avec une interface web :

Name Local address and port External address
Temporal UI localhost:8080 https://temporal{server_id_from_invapi}.hostkey.in
Grafana localhost:8085 https://temporal{server_id_from_invapi}.hostkey.in/grafana/
Prometheus localhost:9090 https://temporal{server_id_from_invapi}.hostkey.in/prometheus/
Prometheus Metrics - https://temporal{server_id_from_invapi}.hostkey.in/prometheus/metrics

Écran d'accueil et navigation

Après avoir suivi le lien via le tag webpanel, l'interface web de Temporal s'ouvrira :

Temporal UI

L'écran principal affiche une liste de workflows (Workflows) dans le namespace sélectionné. Le message "No Workflows running in this Namespace" indique l'absence de processus actifs à ce moment précis.

Éléments principaux de l'interface :

  • Sidebar sur la gauche permet d'accéder aux différentes sections du système ;
  • Top bar affiche le namespace actuel (par défaut, "default") ;
  • Le bouton Start Workflow en haut à droite pour démarrer de nouveaux processus ;
  • Process table avec les colonnes Status, Workflow ID, Run ID, Type, Start, End.

Capacités fonctionnelles

  1. Démarrage d'un nouveau processus de workflow :

    • Cliquez sur le bouton Start Workflow en haut à droite ;
    • Remplissez les paramètres nécessaires dans le formulaire qui apparaît ;
    • Confirmez la création du processus.
  2. Visualisation et filtrage des processus :

    • Utilisez le bouton Filter pour sélectionner des processus selon divers critères ;
    • Choisissez n'importe quel processus dans le tableau pour une vue détaillée.
  3. Exemples de code :

    • Accédez aux exemples d'intégration via les liens des dépôts GitHub :
    • samples-go - exemples Go ;
    • samples-java - exemples Java ;
    • samples-typescript - exemples TypeScript ;
    • samples-python - exemples Python ;
    • samples-dotnet - exemples .NET ;
    • samples-php - exemples PHP.
  4. Modification des paramètres :

    • Sélecteur UTC en haut à droite pour le changement de fuseau horaire ;
    • Le bouton (Gear) est destiné à l'accès aux paramètres supplémentaires de l'interface.

Cas d'utilisation typiques :

  • Surveillance des processus : Vérification régulière du statut des tâches en cours ;
  • Débogage : Analyse détaillée des erreurs en cas de défaillance ;
  • Gestion de la charge de travail : Démarrage, pause et annulation de processus ;
  • Développement de nouveaux processus : Utilisation des exemples de code pour créer des workflows personnalisés.

Remarque

Des informations détaillées sur l'utilisation de Temporal sont disponibles dans la documentation officielle pour les développeurs.

Tester Temporal avec Go (Optionnel)

Information

Voici le processus pour installer les composants nécessaires et tester Temporal en utilisant un exemple de pattern Saga en Go. Ce test démontre la capacité clé de la plateforme à exécuter de manière fiable des processus métier de longue durée avec une gestion automatique des échecs. Le pattern Saga résout le problème de l'atomicité des transactions dans les systèmes distribués grâce à un mécanisme d'actions compensatoires.

1. Installer Go

Avant de commencer les tests, installez Go sur le serveur :

Mettre à jour les listes de paquets

apt update
Installer les dépendances

apt install -y wget git curl
Télécharger la dernière version de Go (au moment de la rédaction, il s'agit de la 1.22.1)

wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz
Extraire l'archive dans /usr/local

tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
Définir les variables d'environnement

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
Activer les changements dans la session actuelle

source ~/.bashrc
Vérifier l'installation

go version

2. Cloner le dépôt d'exemples Temporal

Aller dans le répertoire personnel

cd ~
Cloner le dépôt d'exemples Go

git clone https://github.com/temporalio/samples-go.git
Naviguer vers le répertoire des exemples

cd samples-go

3. Tester en utilisant l'exemple Saga

Le pattern Saga est utilisé pour la gestion des transactions distribuées, garantissant la possibilité d'un rollback (compensation) en cas d'erreur.

Structure de l'exemple Saga

saga/
├── worker/main.go     # Processus worker gérant les tâches
├── start/main.go      # Initialise le processus worker
├── activity.go        # Définition des actions (retrait/dépôt de fonds)
├── workflow.go        # Définition de la séquence d'actions
└── shared.go          # Définitions communes

Lancer le test :

  1. Démarrer le worker (exécuter dans le premier terminal) :

    cd ~/samples-go
    go run saga/worker/main.go
    
    Le worker s'enregistrera auprès de Temporal et attendra une tâche. Des messages de log concernant les tentatives de récupération de tâches apparaîtront.

  2. Démarrer le starter (exécuter dans le second terminal) :

    cd ~/samples-go
    go run saga/start/main.go
    
    Le starter initie le processus de transfert d'argent d'un compte à un autre.

Résultat attendu :

Dans les logs du worker, vous verrez :

  1. Le retrait d'argent du compte 001-001 ;
  2. Le dépôt d'argent sur le compte 002-002 ;
  3. Une erreur créée spécifiquement dans l'activité StepWithError ;
  4. Trois tentatives d'exécution de l'activité défectueuse ;
  5. Le lancement des actions compensatoires :
    • Retour des fonds sur le compte d'origine ;
    • Annulation du retrait d'argent.

4. Vérifier les résultats via l'interface web Temporal

  1. Ouvrez l'interface web Temporal dans votre navigateur (via le tag webpanel) ;
  2. Dans l'interface, recherchez le workflow avec l'ID transfer-money-workflow ;
  3. Vous verrez l'historique complet de l'exécution du workflow, incluant toutes les activités et les actions compensatoires :

Information

Dans l'interface web Temporal, vous verrez que le transfer-money-workflow a un statut "Failed." Il ne s'agit pas d'une erreur de configuration ou d'exécution du test, mais d'un comportement attendu pour l'exemple Saga. Cet exemple est spécifiquement conçu pour démontrer le mécanisme de compensation lors de la rencontre d'une erreur. L'activité StepWithError génère intentionnellement une erreur après avoir effectué les opérations de retrait et de dépôt, démontrant comment les actions compensatoires sont initiées. Le statut "Failed" dans cet exemple indique que le mécanisme de compensation a fonctionné correctement et que le système est revenu à un état cohérent après avoir détecté l'erreur.

Commander un serveur Temporal via l'API

Pour installer ce logiciel en utilisant l'API, suivez cette instruction.