Débogage de l'API à distance avec VS Code

  • Chaque environnement Zato est livré avec une configuration par défaut qui permet de démarrer ses serveurs à partir du débogueur de Visual Studio Code.

  • Les serveurs démarrés de cette manière peuvent fonctionner à distance. Par exemple, votre IDE local peut être sur Mac ou Windows, tandis que vos serveurs Zato seront dans une instance Linux distante. Cela vous permettra toujours de déboguer vos services déployés à distance.

  • Il importe peu que le serveur soit sous Docker ou qu'il fonctionne directement dans une VM Linux.

  • Ce chapitre contient des instructions étape par étape sur la façon de démarrer un serveur Zato de cette manière et de déboguer votre code à distance à partir de VS Code.

Conditions préalables

  • Assurez-vous que votre serveur Zato distant fonctionne sur un système Linux disposant d'au moins 2 CPU et 2 Go de RAM. Si vous utilisez AWS, une instance moyenne sera la bonne à choisir.

  • Assurez-vous qu'il existe une connectivité SSH entre votre hôte local et le serveur Linux distant, c'est-à-dire que vous pouvez accéder par ssh au système où se trouve le serveur Zato. Pour rappel, si vous utilisez Docker Quickstart, le port par défaut est 22022.

  • Si le serveur fonctionne dans une instance de Docker Quickstart, il n'y a pas d'autres conditions préalables et vous pouvez passer à la section suivante.

  • Si vous avez créé vous-même un cluster Zato, vérifiez si ces deux fichiers existent:

    /path/to/your/environment/.vscode/launch.json
    /path/to/your/environment/.vscode/settings.json
    

  • Si les fichiers n'existent pas, téléchargez-les ici : launch.json et settings.json

  • Une fois téléchargés, sauvegardez-les aux emplacements ci-dessus ; si le répertoire .vscode n'existe pas, créez-le. Le résultat final devrait être que si, par exemple, votre environnement est dans /opt/zato/env/dev, les fichiers iront dans /opt/zato/env/dev/.vscode.

Connexions SSH dans VS Code

  • Dans VS Code, installez une extension appelée Remote - SSH.

  • Après l'avoir installée, un nouveau bouton sera disponible dans le coin inférieur gauche de votre IDE. Ce bouton vous permettra d'ouvrir des connexions SSH. Cliquez sur ce bouton, puis sur "Connect to Host".

  • Choisissez l'hôte où se trouve votre serveur Zato et l'IDE ouvrira une nouvelle fenêtre pour se connecter à cet hôte en utilisant SSH. Entrez les informations d'identification SSH si nécessaire. Notez que vous serez maintenant dans une nouvelle fenêtre de l'IDE.

Ouverture d'un environnement distant

  • Une fois que vous êtes connecté dans une nouvelle fenêtre, choisissez "Open Folder", sélectionnez le répertoire où se trouve votre environnement et cliquez sur OK

  • Sous Docker Quickstart, le chemin sera /opt/zato/env/qs-1/. Dans d'autres environnements, naviguez vers le chemin de votre environnement en conséquence.

  • Après avoir ouvert le répertoire distant avec un environnement Zato, la fenêtre de votre IDE ressemblera à ce qui suit :

Démarrage du serveur

  • Cliquez sur l'icône Run and Debug :

  • Cliquez sur l'icône de lecture à côté de l'option Remote Zato Main :

  • L'IDE va maintenant installer tous ses propres composants sur le serveur Linux distant, ce qui peut prendre quelques minutes la première fois. Le processus est gourmand en CPU, c'est pourquoi 2 CPU sont nécessaires.

  • Si VS Code vous dit que son extension Python IDE n'est pas installée dans le système SSH distant, choisissez de l'installer par SSH. Cela peut également prendre quelques minutes.

  • Laissez un peu de temps jusqu'à ce que l'EDI termine l'installation de ses composants distants - il y aura un feedback dans le pied de page de la fenêtre de l'EDI. Une fois qu'ils sont installés, passez à la section suivante.

Déploiement d'un service de test

  • Enregistrez le code ci-dessous sous le nom de demo.py et déployez-le à chaud sur le serveur distant déjà démarré. Notez la ligne surlignée, nous allons bientôt y ajouter un point d'arrêt.
# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):
    def handle(self):
        msg = 'Hello, I am a demo service'
        self.logger.info(msg)

Débogage d'un service

  • Dans l'IDE, trouvez le service déployé sur un serveur distant sous le chemin de /path/to/server/work/hot-deploy/current/demo.py et ouvrez-le :

  • Ajoutez un point d'arrêt à la ligne 9, comme indiqué ci-dessous :

  • Appelez le service de la manière que vous préférez, par exemple via REST, Dashboard ou en ligne de commande.

  • Le débogueur s'arrêtera à la ligne 9, montrant les variables locales, la pile d'appels et d'autres détails, exactement comme s'il s'agissait d'un serveur local

  • Ceci conclut le processus, vous pouvez maintenant déboguer vos services API à distance.

Sujets connexes