From c45c54e8d34d17fe76182a0804e8c92c3ac918b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20Gourv=C3=A9nec?= Date: Thu, 30 Jan 2025 16:55:33 +0100 Subject: [PATCH] Update hydra --- Étude_hydra2.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Étude_hydra2.md b/Étude_hydra2.md index ed2bde4..a014fbe 100644 --- a/Étude_hydra2.md +++ b/Étude_hydra2.md @@ -9,15 +9,15 @@ La BDD grossit très vite (~8Go par semaine, très fluctuant d'une semaine à l' - l'espace dique n'est pas infini et un disque plein résultera en un arrêt brutal de la partie authentification de la plate-forme ; - les performances de la base de données sont liées à la quantité de données stockées. -Sur MSE2, à partir d'une certaine taille, les requêtes en BDD devenaient trop lentes et les utilisateurs ne pouvaient plus de logger sur la plate-forme. +Sur MSE2, à partir d'une certaine taille, les requêtes en BDD devenaient trop lentes et les utilisateurs ne pouvaient plus de connecter sur la plate-forme. Pour résoudre le problème, plusieurs actions ont été réalisées lors du passage à MSE3 : - passage de mysql à postgresql ; -- migration vers hydra 2 ; -- séparation de la bdd hydra et de la bdd mse sur 2 clusters BDD différents. +- migration vers Hydra 2 ; +- séparation de la BDD Hydra et de la BDD mse sur 2 clusters BDD différents. -Aujourd'hui, un script de nettoyage fourni avec hydra (hydra janitor) vient nettoyer la BDD toutes les heures, sans interruption de service. Sur MSE2, ce script n'était exécuté qu'une fois par jour, provoquant des ralentissements de la plate-forme la nuit et sans qu'hydra janitor n'ait le temps de supprimer toutes les données souhaitées. Il y a donc déjà de très claires améliorations. +Aujourd'hui, un script de nettoyage fourni avec Hydra (hydra janitor) vient nettoyer la BDD toutes les heures, sans interruption de service. Sur MSE2, ce script n'était exécuté qu'une fois par jour, provoquant des ralentissements de la plate-forme la nuit et sans qu'hydra janitor n'ait le temps de supprimer toutes les données souhaitées. Il y a donc déjà de très claires améliorations. Cependant, ce script de nettoyage ne suffit pas à supprimer les données obsolètes qui encombrent la BDD. ### 2. Rétention d'information @@ -27,7 +27,7 @@ Il y a une obligation légale de tracer avec horodatage sur une plage horaire, v - tente de se connecter, - se déconnecte. -Sur MSE2, ces informations étaient extraites d'hydra tous les jours et envoyées vers le NAS de NUO avant destruction des données dans la BDD pour alléger la BDD. +Sur MSE2, ces informations étaient extraites d'Hydra tous les jours et envoyées vers le NAS de NUO avant destruction des données dans la BDD pour alléger la BDD. Une partie de ces informations peut être retrouvée autrement, en loggant les accès à certains endpoints par exemple. Décaler le logging ailleurs nous permettrait de vider la BDD sans se préoccuper de cette problématique. @@ -37,7 +37,7 @@ Décaler le logging ailleurs nous permettrait de vider la BDD sans se préoccupe ### 1. Ory Enterprise License (OEL) -Après avoir exposé notre problème sur le slack d'hydra, un développeur nous conseille de partir sur Ory Enterprise License. +Après avoir exposé notre problème sur le slack d'Hydra, un développeur nous conseille de partir sur Ory Enterprise License. > we provide the Ory Enterprise License (OEL) for commercial users of Ory Hydra - this would solve your problems with database issues > https://www.ory.sh/docs/self-hosted/oel/quickstart @@ -56,23 +56,23 @@ Mettre en place cette solution a un coût : ### 2. Refresh-token -L'une des plus grosse source de données dans la BDD est la génération de jetons d'authentification (token). L'utilisation de resfresh-token permettrait de réutiliser les jetons d'authentification. +L'une des plus grosses sources de données dans la BDD est la génération de jetons d'authentification (token). L'utilisation de resfresh-token permettrait de réutiliser les jetons d'authentification. En théorie donc, les refresh-token peuvent permettre de diminuer l'utilisation de la BDD. Cependant, il est certain que cela ne suffira pas à cause du nombre d'utilisateur différent. -Cette solution est donc mise de coté pour le moment. +Cette solution est donc mise de côté pour le moment. ### 3. Nettoyage automatisé -Comme sur MSE2, un nettoyage scripté peut être mis en place. Cette solution n'est pas approuvé par Ory (l'éditeur d'hydra) ce qui est logique vu qu'ils on un produit à vendre. -D'autres usagers sur le web l'ont fait : https://github.com/ory/hydra/issues/2514#issuecomment-1050754956 -Sur MSE2, le nettoyage avait lieu la nuit comme l'utilisation d'hydra janitor et les problèmes étaient assez similaire : -- ralentissements de la plate-forme -- incapacité à supprimer toutes les données à temps lors de jours avec une forte affluence +Comme sur MSE2, un nettoyage scripté peut être mis en place. Cette solution n'est pas approuvée par Ory (l'éditeur d'Hydra) ce qui est logique vu qu'ils ont un produit à vendre. +D'autres usagers l'ont fait : https://github.com/ory/hydra/issues/2514#issuecomment-1050754956 +Sur MSE2, le nettoyage avait lieu la nuit comme l'utilisation d'hydra janitor et les problèmes étaient assez similaires : +- ralentissements de la plate-forme ; +- incapacité à supprimer toutes les données à temps lors de jours avec une forte affluence. Comme hydra janitor arrive à être exécuté toutes les heures sans ralentissement, nous avons bon espoir de pouvoir faire de même avec un script de nettoyage toutes les heures. -2 possibilités concernant ce script : -- version douce où on séléctionne les entrées à supprimer selon si elles ne sont plus actives et assez agées -- version brutale où on supprime les données antérieur à une date (comme sur MSE2) +Plusieurs possibilités concernant ce script : +- version douce où on sélectionne les entrées à supprimer selon si elles ne sont plus actives et assez agées +- version brutale où on supprime les données antérieures à une date (comme sur MSE2) Plusieurs test sont en cours de préparation pour valider cette solution : -1. Avec une grosse base hydra (alimentée via un test de charge), faire tourner le script de nettoyage tout en exécutant un test de charge pour vérifier que les utilisateurs peuvent toujours se connecter +1. Avec une grosse base Hydra (alimentée via un test de charge), faire tourner le script de nettoyage tout en exécutant un test de charge pour vérifier que les utilisateurs peuvent toujours se connecter 2. Se connecter sur un autre client, faire tourner le script de nettoyage puis se connecter sur le MSE. Normalement, le MSE ne devrait pas demander de nouveau les identifiants