etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
190 stars 29 forks source link

Mettre en place un système d'audit de "ce qui aurait du être traité" (aka "data screens") #2099

Closed thbar closed 2 years ago

thbar commented 2 years ago

Pas mal de jobs tournent actuellement, et dans certains cas, on sait qu'on va très probablement épuiser les "retries" (on voit cela apparaître dans le dashboard, et on voit aussi des redémarrages intempestifs #2087).

Une astuce qui va servir c'est de considérer que les jobs sont un "détail d'implémentation", et d'aller écrire des contre-vérifications, qui vérifient non pas comment le travail a été fait, mais que l'outcome est bien là.

Ralph Kimball (auteur classique en ETL, datawarehouse et modélisation dimensionnelle) appelle cela (voir The Data Warehouse ETL Toolkit: Practical Techniques for Extracting, Cleaning, Conforming, and Delivering Data) des "data screens".

On peut commencer assez simple, et écrire sous forme de tests ExUnit des assertions un peu globales pour vérifier l'état de ce qui est attendu et la réalité constatée.

Utiliser un framework déjà existant permet de faciliter la création de nouveaux tests dans le futur.

Il faut faire attention à ne pas perturber la production avec ces screens, et ça passe généralement par un peu de prudence et l'écriture de tests performants, et dans un second temps ça peut passer par l'utilisation de systèmes secondaires (replicas), ou du "throttling".

On pourra mettre ça en place sous forme d'un module simple, qui pourra être déclenché depuis Oban de façon régulière, et nous permettra de faire un reporting dessus dans le temps.

AntoineAugusti commented 2 years ago

Une idée potentielle de vérification / checker, vérifier que le bucket Cellar transport-data-gouv-fr-on-demand-validation-prod contient bien 0 objets, ou pas d'objets anciens.

thbar commented 2 years ago

@AntoineAugusti merci, ça fait partie des bons premiers candidats, je vais commencer ça en fin de semaine, top !

AntoineAugusti commented 2 years ago

Regarder les flux GBFS où la validation n'a pas été effectuée, actuellement à null. Ou envoyer une erreur dans Sentry.

select id, metadata->'validation'
from resource r
where format = 'gbfs' and r.metadata ? 'validation'

Voir Mattermost

thbar commented 2 years ago

Pour l'instant j'ai l'impression qu'on arrive à s'en passer, on pourrait fermer et revisiter quand notre chariotte sera moins chargée, qu'en penses-tu @AntoineAugusti ?

AntoineAugusti commented 2 years ago

@thbar Yep

thbar commented 2 years ago

Allez on ferme alors