DISIC / observatoire

🕵️‍♀️ Observatoire de la qualité des démarches en ligne
https://observatoire.numerique.gouv.fr/
GNU Lesser General Public License v3.0
10 stars 4 forks source link

Implémentation des graphiques des démarches à base des données agrégées #1180

Closed lucaa closed 1 year ago

lucaa commented 2 years ago

Les graphiques des démarches sont aujourd'hui calculés à base des données détaillées des avis, sauf pour les périodes qui correspondent aux observatoires pour lesquelles il y a un cache sur disk en fichier json.

Ce calcul est coûteux du point de vue de la performance.

Un cache HTML est mis en place pour rendre l'opération peu visible aux utilisateurs, mais le précalcul de ce cache doit être fait tous les jours et est également coûteux. Il reste aussi des cas pour lesquels ce cache n'est pas calculé.

Suite à l'implémentation de #1129, les graphiques des démarches pourront être produits à base de la donnée agrégée, avec une réduction de coût importante.

Des lenteurs comme celles mentionnées dans le ticket #1098 devront plus être observées après l'implémentation de ce ticket.

lucaa commented 2 years ago

La version expérimentale a été implémenté par @ldubost sur le serveur de développement, il faut faire les nettoyages nécessaires et l'intégrer dans la base de code.

lucaa commented 1 year ago

Le code de b1b971b est produit par @ldubost , uniquement commité par moi.

lucaa commented 1 year ago

La nouvelle méthode de calcul des graphiques, à base de données agrégées a été comparée à l'ancienne sur une copie de la production, avec la même quantité de données, et les résultats sont les mêmes, pour l'affichage des graphiques mais aussi au niveau d'une comparaison simple du résultat en chaîne de caractères.

Ainsi, le calcul a été remplacé avec la nouvelle méthode.

Le cache des données des graphiques de l'observatoire a été gardé tel quel, pour des raisons de performance mais aussi de l'invariabilité des données (les données de l'observatoire doivent être figées lors de la publication de l'observatoire).

Le cache HTML pour l'onglet graphiques de la page de la démarche a été gardé aussi, pour éviter de faire des changements sur les aspects qui fonctionnent correctement. Par contre, le script de précalcul de ces caches HTML a été supprimé complètement (car sinon il aurait du être re-écrit pour utiliser les agrégats). Ce précalcul n'est plus nécessaire aujourd'hui car l'affichage se fait à base des données agrégées et est très rapide. En pratique, sans précalcul, le cache HTML de chaque démarche sera calculé lors du premier accès à la page de la démarche dans la journée, accès qui sera légèrement plus long que les suivants (mais la différence est imperceptible).

lucaa commented 1 year ago

En terme d'amélioration, un test sur la copie de la prod montre les résultats suivants, pour une démarche avec 34355 avis pour la période calculée et 375715 en total et sans cache HTML:

L'amélioration est nette et il n'y a aucune crainte à avoir par rapport au temps d'attente nécessaire pour afficher les graphiques à base de données agrégées sans cache HTML.

lucaa commented 1 year ago

à faire, pour valider la mise en prod:

lucaa commented 1 year ago

Re-ouverture pour implémenter les outils de vérification avant de faire le changement.

lucaa commented 1 year ago

J'ai re-changé la source de données pour les graphes pour rester sur la source d'avis détaillées le temps de vérifier les résultats. J'ai rendu les 2 méthodes de calcul disponibles et ajouté un script pour vérifier la donnée stockée vs. la donnée agrégée pour un observatoire donné.

J'ai ajouté des paramètres pour la page de la démarche pour pouvoir bypasser le cache et afficher les données agrégées stockées. Ainsi, il est possible d'ajouter cache=false&datasource=aggregates à une page de démarche affichant les graphes pour contourner le cache HTML et forcer l'affichage à base des données agrégées.

Ce code n'est pas encore disponible en production.

lucaa commented 1 year ago

La source par défaut des données des graphes a été mise aux données agrégées.

Pour avoir les graphes calculés à partir des données détaillées (attention, opération très couteuse), il est possible d'ajouter cache=false&datasource=live à l'URL de la démarche.

AnthonyBrunelli commented 1 year ago

Vu ensemble avec Anca, c'est ok !