Bonjour, Dans le cadre de mon travail, je suis en charge de moderniser les échanges clients serveurs pour nos applications afin de rendre le tout plus rapide.
Actuellement, nous avons une plateforme permettant d’héberger et créer des sites web sur différents serveurs distantsdans notre parc. La plateforme web doit pouvoir communiquer avec chacun des serveurs pour demander une installation, demander une modification du paramétrage, changer les accès sur le ftp, etc.. Toutes les commandes à exécuter sont des scripts shell, le php se chargeant de générer un fichier XML contenant le script à envoyer ainsi que les différents paramètres. Le serveur envoie ensuite une réponse à la plateforme qui se charge de l’interpréter en php pour avertir le client. Tout ceci fonctionne correctement actuellement mais est horriblement lent. Le système qui avait été choisi était un système de cron se chargeant de transférer les fichiers XML (exécuté toutes les 5 minutes).
Il y a 4 étapes :
1) Création du fichier de requête en XML sur le serveur de la plateforme.
2) Un cron passe, lit les requêtes en attente, se connecte en ftp à chacun des serveurs qui ont une requête à exécuter et transfère le fichier dessus.
3) Un cron passe sur chacun des serveurs, lit les requêtes en attente et demande l’exécution shell.
4) Exécution Shell
5) Génération d’une réponse XML
6) Un cron passe pour vérifier les réponses en attente, se conencte en ftp à la plateforme et transfère les fichiers
7) Un cron passe pour interpréter la réponse et avertir le client final.
Chaque cron passe à un intervalle de 2 minutes et il y a 4 crons. Il peut donc y avoir au maximum un délai de 8 minutes entre l’envoi de la requête et la réponse.
L’idée est d’accélérer le processus en se passant des crons et en ayant un vrai dialogue en direct entre php sur le serveur de la plateforme et chacun des serveurs distants. La plateforme envoie instantanément une requête au serveur distant qui exécute le bon script shell et qui renvoie une réponse dès que fini. Je viens donc à la pêche aux infos sur les différentes technologies permettant de réaliser ceci simplement. J’ai regardé du côté de node.js ou phpMQ pour gérer la communication serveur mais si vous connaissez des bonnes technos à ce sujet je suis preneur.
Merci du coup de main