Le 31/07/2021
Au commencement…
Quatre semaines ont passé depuis depuis le dernier devlog. La première semaine, j’ai travaillé sur d’autres projets. J’ai par exemple fignolé un peu le thème du site Webmill. Puis je me suis mis sérieusement à coder mon appli Webmill SEO.
J’ai commencé par créer un système d’export automatique pour WordPress, capable de fonctionner sur n’importe quel hébergement. Mon système génère des données au format json avec 25 articles à la fois. En faisant une requête toutes les 10 secondes, l’appli ne risquera pas de saturer l’hébergement et permettra de récupérer le contenu de la plupart des sites assez rapidement.
Je commence également à développer le site qui permettra d’administrer l’appli. Je code un webhook pour que les personnes qui s’inscrivent reçoivent automatiquement leur accès. Je mets en place un système de connexion et une page pour ajouter des sites dans l’appli.
Le scheduler
Je n’ai pas la moindre idée du succès que cette appli va rencontrer. Mais dans le doute, je souhaite qu’elle soit capable de monter en charge facilement. J’imagine une architecture avec plusieurs daemons, chacun spécialisé dans une tache, pouvant tourner sur des machines différentes.
Je conçois donc un système de scheduler basé sur une base de données pour synchroniser les différents daemons. Ainsi les différentes briques de l’appli resteront simples. Elles pourront créer, réserver et exécuter des taches et participer à un système beaucoup plus complexe. Et l’appli pourra tourner sur autant de machines que nécessaire.
Il ne faut pas croire les gens sur internet
Pour accéder à la base de données de manière sécurisée, je mets en place un tunnel ssh entre mes deux machines de développement. Lorsque je fais un test de charge, je trouve que ce n’est pas super performant. Mais ça me permet de faire mes premiers tests.
Je cherche un peu sur le net. Tout le monde dit qu’il ne faut pas utiliser de tunnel ssh car cela encapsule du tcp dans du tcp et ça ruine les performances. Comme un idiot je les crois. Je décide de suivre leurs conseils et j’installe openvpn qui fonctionne en udp. Je choisis les meilleurs paramètres pour les performances. Et c’est deux fois moins rapide qu’avec ssh.
Alors, je fais un test non sécurisé, avec une connexion directe à la base de données. Je me rends compte que les performances sont sensiblement identiques à l’option tunnel ssh. Donc la perte de performance que j’observe en me connectant à distance à la base de données est parfaitement normale. Ce n’est pas de la faute de ssh. J’aurais dû faire ce test en premier.
Après réflexion, lorsqu’on utilise un tunnel ssh, on accède à la machine distance en se connectant au client ssh local qui entretient une connexion avec le serveur ssh distant. Pourquoi encapsulerait-on du tcp dans du tcp ? Le client ssh fonctionne en reverse proxy et il n’a aucune raison d’encapsuler du tcp.
Le tunnel ssh est donc la bonne solution. J’installe autossh qui permet de maintenir un tunnel ssh permanent, malgré les plantages réseaux et les reboots.
Eudaemonia
Maintenant que mon scheduler fonctionne, il est temps de m’occuper des daemons. Je commence par développer un daemon qui s’occupera de l’import en se connectant au système d’export de WordPress que j’ai déjà écrit. Puis je continue avec celui qui s’occupera de l’indexation sémantique et de la création de la matrice de similarité. Et enfin, je termine par celui qui exportera la matrice dans WordPress.
Côté WordPress, je développe la base de l’interface du plugin qui permet de mettre en place la clé de sécurité spécifique au site. Et je développe le module d’import qui récupérera la matrice de similarité. Je mets également en place un widget de base pour afficher les similarités.
Je crée les fichiers de service pour que mes programmes deviennent de vrais daemons. Et même si mon interface d’admin reste primitive et incomplète, j’ai la moitié de la fonctionnalité de mon appli qui fonctionne. L’autre moitié consistera à définir des arbres de liens pour pousser les pages de notre choix.
En commençant début juillet, je pensais pouvoir proposer une première ébauche de mon appli en novembre. Mais je me rends compte que pour l’instant, j’avance deux fois plus vite que prévu.
Pour me changer un peu les idées, j’ai décidé de faire une pause et de passer la semaine prochaine à faire du développement front. J’aimerais refaire le thème WordPress d’un de mes sites. Ensuite je m’occuperai de ces fameux arbres de liens.