From 6c55bd0a77369aa7aa16344af944c2a2d71b3c55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Gramain?= Date: Wed, 27 Mar 2024 17:39:55 +0100 Subject: [PATCH] doc --- CONCEPTION.md | 36 ++++++++++++++++++++++++++++++++++++ README.md | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 CONCEPTION.md diff --git a/CONCEPTION.md b/CONCEPTION.md new file mode 100644 index 0000000..59e11c0 --- /dev/null +++ b/CONCEPTION.md @@ -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..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 ``//swagger/``. + +Celle-ci est servie de façon statique à l'aide du fichier ``static/swagger.json``. diff --git a/README.md b/README.md index 6593221..480567c 100644 --- a/README.md +++ b/README.md @@ -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