SocialGouv / egapro

Calcul de l'index d'égalité femme‑homme dans les entreprises
https://egapro.travail.gouv.fr
Apache License 2.0
9 stars 11 forks source link

Migration API - Python => TypeScript #926

Open lsagetlethias opened 2 years ago

lsagetlethias commented 2 years ago

Objectifs

Stack utilisée

Tech

Implémentation


Étude de faisabilité

Context actuel

Besoin

Prio 1

Prio 2

Solutions proposées

Technologies (non exhaustif) :

Solution 1 - Base solide + Copycat

Migration “copycat” de l’API vers une architecture techniquement plus solide et plus maintenable pour la team SRE.

Le modèle de données actuellement en place est gardé (et idéalement documenté).

Les routes d’API sont copiées une par une, permettant d’itérer facilement de la version Python (considérée comme legacy) vers la version TypeScript, considérée comme v2 tout en maintenant un service opérationnel en continu.

Les features additionnelles seront ensuite développées suivant la même stratégie produit actuellement en place.

Solution 2 - Base solide + Domaines métiers

Reprise de la base technique de la première solution en tant que base de développement et refonte du modèle de données sur un concept “lean DDD” afin de définir des domaines métiers distincts et compréhensibles ou au moins, des objets un peu plus représentatifs de ce qui est manipulé par l’utilisateur.

Cette solution peut être faites en deux temps (en commençant par la base technique de la solution 1, et en faisant en sorte qu’elle soit prévue pour) afin mieux jalonner les développements.

Solution 3 - Domaines métiers + Hasura

Cette solution suggère de commencer par la refonte du modèle de données évoquée dans la solution 2 afin de brancher un Hasura par dessus par la suite.

La distinction des domaines actuels et futurs permettrait potentiellement de conduire a une architecture microservices.

Matrice de faisabilité

Untitled

Migration API - Matrice de Faisabilité

devthejo commented 2 years ago

si je peux me permettre une suggestion: https://github.com/porsager/postgres à la place de knex see https://gajus.medium.com/stop-using-knex-js-and-earn-30-bf410349856c c'est juste une proposition, ouvert pour en discuter la semaine prochaine si vous voulez