This commit is contained in:
Mael G. 2024-03-27 17:39:55 +01:00
parent 51c79733f5
commit 6c55bd0a77
2 changed files with 38 additions and 0 deletions

36
CONCEPTION.md Normal file
View file

@ -0,0 +1,36 @@
# Conception
Ce projet microservices est composé de 3 microservices.
Chaque microservice part de la même base, mais traite des ressources différentes (athlètes, médailles, disciplines).
## Modèle de base
Le fichier ``app.py`` contient la base Python, une simple application Flask. Dans le Dockerfile, on lance l'application avec ``gunicorn`` pour plus de performance.
Chaque microservice dispose aussi d'un fichier ``models.py`` qui contient les classes de données, elles même héritant de la classe ``BaseModel`` de Pydantic afin de faire de la validation de données.
Cela permet aussi de sérialiser les données en JSON facilement.
Un dossier ``tests/`` est aussi présent pour les tests unitaires. Les tests sont lancés avec ``pytest``.
Cela permet de tester les routes, les modèles et les fonctions de validation si il y'en a.
Pour les tests, des fichiers d'example (Dossier ``./sample``) sont automatiquement copiées dans le dossier test pour avoir des données stables.
Ce dossier ``sample`` sert aussi aux données de base de l'API copiées lors du Dockerbuild dans un dossier ``./data``.
## Service "home"
A l'aide du design system de l'état français : [https://www.systeme-de-design.gouv.fr/](https://www.systeme-de-design.gouv.fr/), une page d'accueil est affichée à la racine du site.
Celle-ci correspond à la page d'accueil du projet, et redirige vers les différentes sous API, à savoir ``/athletes``, ``/medailles`` et ``/disciplines`` mais aussi aux documentations respectives du projet.
## Docker
Un unique fichier ``docker-compose.yml`` est utilisé pour lancer les 3 microservices ainsi que traefik pour le reverse proxy et le service ``home``.
A l'aide de l'argument ``build`` et ``context``, les microservices sont construits à partir de leur Dockerfile respectif directement lors du ``compose``.
Traefik est configuré pour rediriger les requêtes vers les microservices en fonction du sous dossier demandé à l'aide du label ``traefik.http.routers.<service>.rule``, argument ``PrefixPath``.
En effet, traefik ne nécessite pas de fichier de configuration: il lit les labels des conteneurs Docker pour savoir comment rediriger les requêtes.
Le fichier ``docker-compose.yml`` est configuré pour que traefik utilise le port ``8082``.
## Swagger
Chaque microservice expose une GUI Swagger à l'adresse ``/<service>/swagger/``.
Celle-ci est servie de façon statique à l'aide du fichier ``static/swagger.json``.

View file

@ -7,6 +7,8 @@
- [Tests unitaires](#tests-unitaires)
- [Déploiement](#déploiement)
Merci de lire le fichier [CONCEPTION.md](CONCEPTION.md) pour plus d'informations sur la conception du projet.
## Architecture
3 microServices sont disponibles pour le projet JO 2024:
- ``/`` : Page de présentation