Choix technologiques - ZosiscoIV/Dev-Web-2024 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
Technologies choisies : Node.js avec Express.js
1.1 Justification du choix
Pourquoi Node.js et Express.js ?
- Performance : Node.js utilise un modèle d’exécution asynchrone et non bloquant, idéal pour gérer un grand nombre de requêtes simultanées, ce qui est essentiel pour un site e-commerce.
- Écosystème riche : Avec NPM, de nombreuses bibliothèques permettent d’accélérer le développement (
jsonwebtoken
pour l’authentification,multer
pour la gestion des images,express-validator
pour la validation des données). - JSON natif : Node.js gère nativement le JSON, simplifiant la communication avec le frontend React.
- Scalabilité : Adapté aux microservices, utile si Didier veut plus tard ajouter des fonctionnalités comme un système de recommandations de produits ou des notifications en temps réel.
Comparaison avec d'autres technologies
Technologie | Avantages | Inconvénients |
---|---|---|
Django (Python) | Sécurisé, structuré | Plus lent, moins optimisé pour des API JSON-first |
Spring Boot (Java) | Très robuste pour les grandes entreprises | Surdimensionné pour un e-commerce de taille moyenne |
Laravel (PHP) | Bonne intégration avec MySQL | Moins performant que Node.js pour les échanges API rapides |
2. Base de données
Technologie choisie : MySQL
2.1 Justification du choix
- Fiabilité et robustesse : SGBD relationnel éprouvé, parfait pour gérer les relations entre produits, clients et commandes.
- Transactions ACID : Essentiel pour éviter des erreurs de stock ou de paiement lors d’achats simultanés.
- Bonne intégration avec Node.js : Grâce à
mysql2
ouSequelize
(ORM), les interactions avec la base de données sont optimisées. - Scalabilité : MySQL permet une réplication des données et un bon support pour le sharding, utile si le projet s’étend.
Comparaison avec d'autres bases de données
Technologie | Avantages | Inconvénients |
---|---|---|
PostgreSQL | Plus puissant pour les traitements complexes | Moins performant pour des lectures fréquentes |
MongoDB (NoSQL) | Flexible pour les données non structurées | Moins adapté aux relations strictes entre entités e-commerce |
3. Frontend
Technologie choisie : React avec Next.js
3.1 Justification du choix
- SEO amélioré : Grâce au Server-Side Rendering (SSR), Next.js optimise le référencement, crucial pour un site e-commerce.
- Performance : Next.js propose aussi le Static Site Generation (SSG), permettant de pré-générer les pages produits pour un chargement quasi-instantané.
- Facilité d’intégration avec une API REST/GraphQL : Fonctionne parfaitement avec une API Node.js Express.
- Expérience utilisateur fluide : Avec React, la navigation sera dynamique et rapide.
Comparaison avec d'autres technologies
Technologie | Avantages | Inconvénients |
---|---|---|
Vue.js (Nuxt.js) | Similaire à React, avec un bon SSR | Communauté plus petite, moins utilisé en entreprise |
Angular | Très structuré et complet | Complexe et trop lourd pour un projet e-commerce moyen |
4. Autres choix techniques
- Authentification : JWT (
jsonwebtoken
) pour la sécurité des connexions client et administrateur. - Tests : JEST et Cypress pour les tests unitaires, d'intégration et e2e