doc
This commit is contained in:
parent
51c79733f5
commit
6c55bd0a77
2 changed files with 38 additions and 0 deletions
36
CONCEPTION.md
Normal file
36
CONCEPTION.md
Normal 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``.
|
|
@ -7,6 +7,8 @@
|
||||||
- [Tests unitaires](#tests-unitaires)
|
- [Tests unitaires](#tests-unitaires)
|
||||||
- [Déploiement](#déploiement)
|
- [Déploiement](#déploiement)
|
||||||
|
|
||||||
|
Merci de lire le fichier [CONCEPTION.md](CONCEPTION.md) pour plus d'informations sur la conception du projet.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
3 microServices sont disponibles pour le projet JO 2024:
|
3 microServices sont disponibles pour le projet JO 2024:
|
||||||
- ``/`` : Page de présentation
|
- ``/`` : Page de présentation
|
||||||
|
|
Loading…
Reference in a new issue