|
| 1 | +# 60. Production de données à mettre à disposition |
| 2 | + |
| 3 | +Date : 2025-02-18 |
| 4 | + |
| 5 | +## État |
| 6 | + |
| 7 | +Validée |
| 8 | + |
| 9 | +## Contexte |
| 10 | + |
| 11 | +Le stockage de données à mettre à disposition est fragmenté dans deux bases de données, la base de données "live" de |
| 12 | +`pix-api` et la base de données de `pix-dwh-api-data` (aussi appelée "datamart"). |
| 13 | +La production de ces données est réalisée par divers mécanismes comme le montre le schéma suivant (flèches en bleu). |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +On peut constater que : |
| 18 | + |
| 19 | +- les données `pole-emploi-sendings` sont produites par `pix-api` et stockées dans la base de données "live" |
| 20 | +- les données `parcoursup` sont produites par l'équipe Data et stockées dans le datawarehouse |
| 21 | +- le datawarehouse est répliqué via dump/restore par Airflow, notre orchestrateur, dans la base de |
| 22 | + données `pix-dwh-api-data`. |
| 23 | + |
| 24 | +Le schéma du datamart n'est pas maitrisé par`pix-api` et peut être changé sans possibilité de rétro-compatibilité. |
| 25 | +Il est alors complexe de maintenir des tests de non-régression sur ces données. |
| 26 | + |
| 27 | +La réplication via un process de dump/restore présente plusieurs inconvénients tels que: |
| 28 | + |
| 29 | +- absence de données en cas de dysfonctionnement du restore |
| 30 | +- copies volumineuses (car complètes) coûteuses en temps et en ressources |
| 31 | +- pas de garantie de l'intégrité du schéma car le restore recrée une table de zéro. |
| 32 | + |
| 33 | +Les données, qui ont pour unique vocation la mise à disposition, sont stockées dans la base de données "live" et |
| 34 | +augmentent inutilement la pression sur celle-ci (en termes de volume et de trafic). |
| 35 | + |
| 36 | +## Solution |
| 37 | + |
| 38 | +L'introduction de la nouvelle brique d'API de "Mise A Disposition de Données" implique d'avoir la maitrise du schéma du |
| 39 | +datamart pour assurer la continuité de service. |
| 40 | +Ainsi, le schéma est préservé et les modifications de celui-ci sont entièrement à la main de l'API MADDO. |
| 41 | +Des tests de non-régression seront donc plus faciles à maintenir. |
| 42 | +Il sera également possible d'assurer une rétro-compatibilité en cas de changement du schéma. |
| 43 | + |
| 44 | +D'autre part, on propose de déplacer le stockage de toutes les données à mettre à disposition vers la base de données |
| 45 | +adhoc (ie. le datamart). |
| 46 | + |
| 47 | +Le schéma qui suit montre l'architecture cible. |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | +Remarque : Metabase n'est plus utilisé dans le cadre de la mise à disposition de données dans l'architecture cible. |
| 52 | + |
| 53 | +## Conséquences |
| 54 | + |
| 55 | +- Airflow n'est plus responsable de dump/restore les données vers le datamart, mais déclenche seulement l'appel à l'API |
| 56 | + MADDO pour lancer les jobs réplications. |
| 57 | +- Des workers spécifiques à Maddo sont mis en place et auront la charge de créer et répliquer les données destinées à la |
| 58 | + mise à disposition. |
0 commit comments