Open lsagetlethias opened 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
Objectifs
Stack utilisée
Tech
928
929
930
931
932
933
934
935
936
Implémentation
PUT: /declaration/{siren}/{year}
GET: /declarations/{siren}
GET: /declaration/{siren}/{year}
PUT: /representation-equilibree/{siren}/{year}
GET: /representation-equilibree/{siren}
GET: /representation-equilibree/{siren}/{year}
POST: /declaration/{siren}/{year}/receipt
POST: /declaration/{siren}/{year}/objectifs-receipt
GET: /ownership/{siren}
PUT: /ownership/{siren}/{email}
DELETE: /ownership/{siren}/{email}
GET: /me
POST: /simulation
POST: /simulation/{uuid}/send-code
+ mark as deprecatedGET: /simulation/{uuid}
POST+GET: /token
or change securityGET: /search
GET: /stats
GET: /config
GET: /jsonschema.json
GET: /validate-siren
GET: /entreprise/{siren}
GET: /healthz
ehanced for app status + api statusÉtude de faisabilité
Context actuel
roll
etgunicorn
(+hupper
pour le développement local)swagger
, niapi.gouv
)httpx
pour les appels externesJinja2
pour les templates de mailminicli
) pour des commandes relatives au projet (exports, manipulation de base de données, webserver local)sentry
en utilisation standard (pas de setup de contexte ou de breadcrumbs, juste les logs et erreurs http)pgsql
(viaasyncpg
)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é
Migration API - Matrice de Faisabilité