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 ou Sequelize (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