Skip to content

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

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

Merged
merged 1 commit into from
Feb 25, 2025

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...

Copy link
Contributor

@Steph0 Steph0 Feb 21, 2025

Choose a reason for hiding this comment

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

De ma comprehension dans cette solution 1

  • on a plusieurs types de tenants (grand public, parcoursup)
  • sur une meme application (pix-api) partageant un meme code metier
  • mais faisant appel a des base de donnees separees par usager (bdd pix pour un utilisateur grand public, datamarts pour parcoursup par exemple)
  • et on personnalise l'experience de l'usager en fonction de la configuration faite pour l'usager (API consommables)
  • et la solution 1 se distingue de la solution 4 sur la base suivante
    • Multitenancy contrasts with multi-instance architectures, where separate software instances operate on behalf of different tenants.

Peux-tu m'aider a comprendre la difference entre multitenancy et la description ci-dessus afin de m'ameliorer sur la comprehension du terme multitenancy ?

Copy link
Contributor

Choose a reason for hiding this comment

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

je viens d'avoir une epiphanie, il faut qu'on partage la meme notion de "tenant" !

Tu dois voir un tenant a la maille d'un utilisateur (une ecole, une lycee), et moi je vois un tenant en tant que groupe / organisations (pas orga au sens pix). Un tenant peut tres bien avoir X utilisateurs d'ailleurs.

Contrairement a "avant", on voit recemment l'apparition du concept de tenants je trouve chez Pix.
Avant on avait qu'un seul groupe d'usagers, un seul tenant. Maintenant on distingue, et on en a deja 2 avec Parcoursup. Et on voit deja avec parcourup que la complexite n'est pas minimum, et que l'architecture n'est pas inchangee.

Avec un schema, avec par exemple en orange le tenant "grand public" (ecoles, eleves) et bonhomme vert par exemple le tenant "Parcoursup" (qui aussi a comme utilisateurs d'ailleurs des ecoles et des eleves, mais on va pas taper dans les memes BDD).

image

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.

Copy link
Contributor

Choose a reason for hiding this comment

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

pix-api-data est aussi servi avec hapi+joi+swagger, on a donc exactement les memes outils dans le code api-data que la solution 1 ou 4 (avec le meme besoin de dev specifique pour documenter les api).

J'ai tendance a me dire que pour dire que quelque chose est un inconvenient, il faut que cet inconvenient soit propre a la solution.

En quoi api-data a specifiquement sur sa documentation un inconvenient qui n'est pas le meme par exemple que la solution 1 ou 4 ?

Copy link
Member

Choose a reason for hiding this comment

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

Le problème de l’API Data c’est qu’elle utilise un endpoint générique, qui ne décrit pas les données qui peuvent être récupérées.

En version très résumée, ce endpoint reçoit un identifiant correspondant à une requête SQL, il exécute cette requête SQL, puis renvoit le résultat.

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

- 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

* 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.

Copy link
Contributor

@Steph0 Steph0 Feb 21, 2025

Choose a reason for hiding this comment

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

Du coup actuellement dans votre proposition d'ADR, dans la solution 4, la gateway pointerait donc vers le hostname de l'application PaaS au lieu de pix.api.fr c'est bien ca ?

Si oui, je voulais justement proposer a cet ADR de justement supprimer la gateway, et que gateway.xxx.pix.fr devienne le DNS de l'application de la solution 4.

J'y vois un gros avantage en + pour la solution 4 contrairement a la 1 par exemple.

Que pensez-vous de cette proposition cote maddo ? @1024pix/team-captains ca semble faisable / interessant comme proposition ?

@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
* Pour que Maddo puisse démarrer, il lui faut attendre le déploiement de l'API, afin que les migrations sur la base de
données Pix aient été faites.

## Décision
Copy link
Contributor

Choose a reason for hiding this comment

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

👻 Ajouter une note sur la problématique d'anonymisation. Que ce soit pour dire que cette problématique est « naturellement » prise en compte par la solution, ou, pour dire que cette problématique n'est pas à prendre en compte dans cet ADR mais plutôt dans le processus de production des données froides, ou alors pour ajouter des points supplémentaires à cette décision si c'est ici que cette problématique d'anonymisation doit être prise en compte.

Copy link
Contributor

@Steph0 Steph0 left a comment

Choose a reason for hiding this comment

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

A part des histoires de wording, je suis en phase depuis le debut avec l'approche solution 4. Je suis tres interesse par le futur ADR sur la partie data.
Merci pour le point post weekly ce jour !

Co-authored-by: Nicolas Lepage <19571875+nlepage@users.noreply.github.com>
Co-authored-by: Guillaume Lagorce <guillaume.lagorce@pix.fr>
Co-authored-by: Vincent Hardouin <vincent.hardouin@pix.fr>
@pix-service-auto-merge pix-service-auto-merge merged commit 861e2d5 into dev Feb 25, 2025
6 of 7 checks passed
@pix-service-auto-merge pix-service-auto-merge deleted the pix-adr-maddo branch February 25, 2025 08:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.