Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DOC] Documenter le choix de l'architecture pour la mise à disposition des données (PIX-16526). #11406

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

VincentHardouin
Copy link
Member

@VincentHardouin VincentHardouin commented Feb 12, 2025

🥞 Problème

Voir ADR

@yannbertrand
Copy link
Member

Possible d'ajouter les acteurs sur les schémas ? De ce que je comprends ce sont des consommateurs des APIs ?

@yannbertrand
Copy link
Member

Est-ce que datawarehouse reste en place dans ces 4 scénarios ?

@VincentHardouin
Copy link
Member Author

Est-ce que datawarehouse reste en place dans ces 4 scénarios ?

Nous avons ajouté une petite phrase, en effet le datawarehouse reste inchangé

@VincentHardouin VincentHardouin added team-maddo Mise à Dispo de Données and removed team-maddo labels Feb 17, 2025
#### Avantages

* Pas d'augmentation de la volumétrie de la BDD de production avec des données froides
* Complexité minimum : l'architecture reste inchangée
Copy link
Contributor

@Steph0 Steph0 Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce point me semble faux : on passe sur une archi multi-tenant et c'est un changement a la fois d'architecture, et une complexite ajoutee : https://en.wikipedia.org/wiki/Multitenancy (notamment paragraphe complexity)

Je propose de remplacer le mot "minimum" qui n'informe pas le lecteur et reste tres subjectif, pour le remplacer par un court TLDR + neutre d'une approche multi-tenant

A noter que la solution 4 devrait avoir le meme texte (quand les gens consulteront l'ADR + tard, ils liront que ls solution choisie)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On n'introduit pas le concept de multitenancy tel que défini dans l'article wikipedia que tu cites. On a déjà une seule instance qui sert toutes les orgas / centres de certif...

Cela implique des audits de sécurité différents, et peut potentiellement provoquer des failles de sécurité.
De plus, nous ne souhaitons pas forcément avoir deux bases d'utilisateurs distinctes.
- Comme les requêtes et le schéma ne sont pas connus, les tests de non-régressions sont compliqués à mettre en place.
- La mise à disposition d'une documentation des requêtes demanderait un développement spécifique à chaque requête.
Copy link
Contributor

@Steph0 Steph0 Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce point existe aussi dans les autres solutions :

C'est facilement automatisable (standardisable), ce n'est pas + un inconvenient que sur la solution 1 ou 4 ou on doit creer sa definition API + son swagger.js associe pour mettre a dispo la doc (ou alors de mettre aussi, comme api data, un effort d'automatisation)

Copy link
Member

@nlepage nlepage Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Un développement spécifique vs. s’appuyer sur du déclaratif qui permet de généré du swagger avec un outils existants est quand même sensiblement différent.
Le dév spécifique, nécessitera forcément un effort plus grand en maintenance et/ou évolution, et aussi certainement un effort de compréhension plus grand pour les personnes ne le connaissant pas.
A contrario générer du swagger à partir de Hapi/Joi est une solution déjà en place et connu dans Pix, et qui ne demande normalement pas ou peu d’effort de maintenance.

docs/adr/0059-mise-a-disposition-de-donnees.md Outdated Show resolved Hide resolved
docs/adr/0059-mise-a-disposition-de-donnees.md Outdated Show resolved Hide resolved
désynchronisations.
* ce qui rend le contract testing obligatoire pour assurer la non-régression.

### Solution 4 : Création d'une API de mise à disposition de données (base de code mutualisée)
Copy link
Contributor

@Steph0 Steph0 Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Solution 4 : Création d'une API de mise à disposition de données (base de code mutualisée)
### Solution 4 : Création d'une infrastructure de mise à disposition de données (base de code mutualisée)

Je trouve le texte de la solution 4 un peu confusant, au final ce n'est pas une nouvelle API, c'est une infrastructure + tooling separee qui deploie le mono repo

La difference avec la mise a dispo actuelle Parcoursup (solution 1) dans cette solution 4 est la partie infra + amelioration du tooling de seeding


Déplacement des données froides dans une base dédiée en utilisant l'API de Pix pour les mettre à disposition.

![Schéma archi en utilisant l'API actuelle](../assets/0059-schema-utilisant-l-api-actuelle.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je trouve que ce schema introduit un biais de representation qui dessert la solution 1, le datawharehouse et les exports (metabase, pole emploi) devraient aussi etre presents sur les autres schemas, ou alors il faut enlever les elements "en plus" de ce schema.

Sans cela on a l'impression que les autres solutions sont plus simples, alors qu'elles possedent la meme complexite mais avec des fleches differentes.

J'aurais aime voir les exports ACSOS et pole-emploi apparaitre dans la solution 4 pour pouvoir vraiment me rendre compte de ce que ca fait.

Copy link
Member Author

@VincentHardouin VincentHardouin Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le schéma auquel tu fais référence ici est bien neutre et n'a pas de datawarehouse. Tu as dû confondre avec le schéma d'au-dessus qui présente les différents moyens de mise à dispo des données actuelles.

- Comme les requêtes et le schéma ne sont pas connus, les tests de non-régressions sont compliqués à mettre en place.
- La mise à disposition d'une documentation des requêtes demanderait un développement spécifique à chaque requête.

### Solution 3 : Création d'une API de mise à disposition de données (base de code indépendante)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avis personnel : je preferais encore mettre un effort d'outillage et de support de code metier sur API Data que cette solution 3

Cette API utilise deux bases de données :

* une base de données froides en base principale
* la base de données de Pix, notamment pour l'authentification et les autorisations
Copy link
Contributor

@Steph0 Steph0 Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Y'a un truc que je comprends pas ici, c'est pourquoi faire appel a la BDD Pix ; si infra separe, alors BDD "pix" separee (pix-maddo) et les users sont dans la BDD "pix-maddo" sans faire appel a celle actuelle (meme schema, mais PG separes donc users separes)

ou alors proposition si le lien ne serait que pour les users : mettreen place un authorization-server (detacher la partie gestion des users/perm pour la rendre mutualisee), ca permettrait que la solution 4 ne depende plus du tout de la BDD live.

@romain-pix-cyber un avis ?

J'ai peut etre mal compris la formulation, j'essaye de bien m'assurer que il y aura, dans la solution 4, aucun appel / lien technique au backend de pix actuel (parce que sinon autant garder la solution 1)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effectivement l’idéal serait d’avoir un serveur d’authentification/autorisations, cependant ce n’est pas envisageable rapidement.

Que l’API MaDDo soit connectée à la BdD Pix ne répond pas que à la problématique d’authentification/autorisations.

En ce qui concerne l’autorisation, on va certainement avoir besoin à moyen terme des infos des orgas.

Ça nous permet également plus de souplesse pour la migration d’endpoints de l’API Pix vers l’API MaDDo.

* sécurité au niveau de celle de l'API Pix
* expérience de développement favorisant l'autonomie des équipes
* séparation des usages qui a pour conséquence la sécurisation des usages à destination des applications (front)
* documentation des endpoints et données mis à disposition
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je suis etonne de ne voir aucun mention de la gateway Pix.

Quel est le role de la gateway dans toutes les solutions 1 a 4 ?

  • facturation de ces interconnexions
  • offre d'un service standardisé (documenté, testable, industrialisé)
  • limitation de l'impact sur la production de Pix (performances)

Car au final pour moi la gateway est presque + une reponse aux nouveaux sujets (rate limiting, mise a dispo des endpoints de maniere separe de Pix pour le client) que les solutions proposes.

Formules autrement j'aurais aime que les differentes solutions reprennent les nouveaux sujets / besoins et decrivent comment elles permettent d'y repondre.

Par exemple un atout a la solution 4 est que elle pourrait "porter les fonctions de la gateway", la ou la solution 1 par exemple oblige le composant supplementaire de la gateway.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Volontairement, et pour simplifier la lecture, la gateway ne fait pas parti du scope de cet ADR.

docs/adr/0059-mise-a-disposition-de-donnees.md Outdated Show resolved Hide resolved
@Gudsfile
Copy link

Merci pour le travail autour de cet ADR 🙇
Je ne suis pas certain de bien comprendre si seule l'API Pix serait à même d'écrire dans cette base ou si les traitements data qui habituellement écrivent sur le datawarehouse pourraient peupler la base de données froides ? La réponse est peut-être dans la phrase "nous ne modifions en aucun cas le fonctionnement de la réplication avec le Datawarehouse" mais je n'en suis pas certain.

@HEYGUL
Copy link
Contributor

HEYGUL commented Feb 18, 2025

Merci pour le travail autour de cet ADR 🙇 Je ne suis pas certain de bien comprendre si seule l'API Pix serait à même d'écrire dans cette base ou si les traitements data qui habituellement écrivent sur le datawarehouse pourraient peupler la base de données froides ? La réponse est peut-être dans la phrase "nous ne modifions en aucun cas le fonctionnement de la réplication avec le Datawarehouse" mais je n'en suis pas certain.

Cette ADR ne couvre que la partie mise à disposition de données, la production de ces données fera l'objet d'une ADR future. Pour le moment nous conservons le fonctionnement actuel.
Pour clarifier cela, nous allons ajouter cette mention au début de l'ADR.

@VincentHardouin VincentHardouin changed the title [DOC] Documenter le choix de l'architecture pour la mise à disposition des données [DOC] Documenter le choix de l'architecture pour la mise à disposition des données (PIX-16526). Feb 18, 2025
Co-authored-by: Nicolas Lepage <[email protected]>
Co-authored-by: Guillaume Lagorce <[email protected]>
Co-authored-by: Vincent Hardouin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-review-app team-maddo Mise à Dispo de Données
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants