Choix technologiques - SaigoNoo/GetTheBeer GitHub Wiki
Résumé coaching 2c
+ Le langage ou le framework choisi pour le backend, puis pour le frontend est décrit. Il s'agit de technologies "intéressantes" dans le cadre du projet.
+ Les spécificités de la technologie choisie sont mises en avant : avantages / inconvénients et comparaison avec minimum deux technologies concurrentes.
1. Backend
FastAPI
1.1 Justification du choix
Nous avons choisi FastAPI pour gérer la couche backend de notre application, notamment l’interface avec la base de données. Ce choix n’est pas dû uniquement à une familiarité préalable, mais repose sur plusieurs avantages techniques comparatifs.
FastAPI se démarque par :
Sa rapidité d’exécution, comparable à Node.js ou Go, grâce à son utilisation d’ASGI et de la bibliothèque Starlette (Ressource #3).
Sa déclaration explicite des schémas de données via Pydantic, ce qui permet une validation automatique des entrées/sorties et réduit les erreurs lors des échanges avec la base.
Une documentation automatique intégrée via Swagger/OpenAPI, ce qui facilite énormément les tests et le travail collaboratif.
Une prise en charge native des opérations asynchrones, très utile pour optimiser les performances lors des appels à la base de données.
Comparaison avec d'autres frameworks
Django REST Framework : très complet et robuste, mais plus lourd à configurer pour des projets légers. Il impose aussi une structure plus rigide, ce qui limite la flexibilité rapide dans les phases de prototypage.
Flask : plus simple mais moins structuré. Il nécessite de nombreuses extensions pour égaler les fonctionnalités que FastAPI propose nativement (authentification, documentation, validation, etc.).
Express.js (Node.js) : très populaire et performant, mais implique un changement de langage (JavaScript côté serveur), ce qui aurait compliqué l’uniformité du code base.
Références
FastAPI Benchmarks – Documentation officielle
RealPython: "Why FastAPI is the fastest growing Python web framework"
2. Backend : base de données
MariaDB
2.1 Justification du choix
Pour le backend de notre application, nous avons opté pour MariaDB, un SGBD relationnel open source issu d’un fork de MySQL. Ce choix repose sur plusieurs critères techniques et stratégiques :
Compatibilité avec MySQL, tout en offrant des améliorations de performance sur certaines requêtes complexes et une meilleure gestion de la réplication (Ressource #4).
Licence open source plus permissive (GPLv2) que celle de MySQL, désormais détenue par Oracle — un point important pour les projets éducatifs ou open source.
Support natif de nombreux moteurs de stockage, dont Aria, XtraDB ou MyRocks, qui offrent plus de flexibilité selon les besoins de performance ou de robustesse.
Outils de monitoring et de diagnostic avancés, comme MariaDB Monitor, permettant une meilleure visualisation des performances en production.
Comparaisons
Technologie | Avantages | Inconvénients par rapport à MariaDB |
---|---|---|
MySQL | Historique, large écosystème | Moins transparent (Oracle), moins de moteurs de stockage |
PostgreSQL | Très puissant, excellent support SQL | Plus complexe à administrer pour des projets de taille moyenne |
SQLite | Léger, sans serveur | Pas adapté à un usage multi-utilisateur ou en production web |
MongoDB | Flexible, orienté documents | Moins adapté à des données relationnelles strictes comme les nôtres |
Références
MariaDB Foundation – About & Differences from MySQL
DB-Engines Ranking – Popularity trends
3. Frontend
ReactJS
3.1 Justification du choix
Nous avons opté pour ReactJS comme bibliothèque principale pour le développement du frontend de notre application. Ce choix s’appuie sur plusieurs points techniques et pratiques :
Modularité et réactivité : React permet de construire une interface utilisateur dynamique et réactive grâce à son système de composants réutilisables, facilitant la maintenance et l’évolution du code.
Large communauté et écosystème riche : Avec un large soutien de la communauté, React bénéficie de nombreuses bibliothèques et outils compatibles, ce qui accélère le développement.
Performance : Le Virtual DOM optimise les mises à jour du rendu, offrant une expérience utilisateur fluide.
Interopérabilité : React peut facilement s’intégrer avec d’autres frameworks ou bibliothèques si besoin.
Comparaisons
Technologie | Avantages | Inconvénients par rapport à ReactJS |
---|---|---|
Vue.js | Plus simple à prendre en main, bonne documentation | Moins utilisé en entreprise, écosystème plus restreint |
Angular | Framework complet avec beaucoup de fonctionnalités intégrées | Plus complexe, courbe d’apprentissage plus raide |
Svelte | Code plus léger, compilation en build | Moins mature, communauté plus petite |
jQuery | Facile à utiliser pour manipuler le DOM | Obsolète pour les applications SPA modernes |
##References
Site officiel React Vues Google Trends des recherches pour React Medium : React vs. Angular