Enjeu et solution :
Avec l’adoption d’un nouveau framework frontend, il était nécessaire de repenser entièrement la communication avec la base de données. Nous avons donc conçu une API REST permettant de structurer et d’optimiser l’échange de données entre le backend et le site e-commerce, garantissant ainsi une meilleure fiabilité et une maintenance simplifiée.
Fonctionnalités principales :
- Produits : Liste des produits, détails d’un produit
- Frais de port : Calcul dynamique en fonction des paramètres de commande
- Clients et commandes :
- Création et gestion des clients
- Enregistrement des commandes
- Récupération des informations clients
- Envoi d'emails :
- Confirmation de commandes pour les clients
- Alertes internes pour l'entreprise
Sécurisation de l'API :
Plusieurs mesures de sécurité ont été mises en place afin de réduire les risques d'attaques:
- Authentification via OAuth2 : Protection des endpoints avec des tokens sécurisés.
- Restriction d'accès par permission et rôles : Limitation des actions en fonction des autorisations des utilisateurs.
- Rate limiting pour éviter les abus : Prévention des abus et des attaques en limitant le nombre de requêtes par utilisateur.
Défi technique:
L’API devait gérer un volume important de requêtes lors de la récupération des produits (plusieurs milliers). Pour améliorer les performances, nous avons mis en place plusieurs optimisations :
- Mise en cache Redis : Réduction de la charge sur la base de données en stockant temporairement les résultats fréquemment demandés.
- Multiprocessing : Exécution de l’API sur plusieurs cœurs pour mieux gérer la montée en charge.
- Pagination : Limitation du nombre de produits renvoyés par requête pour réduire le temps de réponse.
- Optimisation des requêtes sql : récupération uniquement des données nécessaires pour éviter les surcharges inutiles
Résultat : Grâce à ces améliorations, le temps d'affichage d'une page produit est passé de 2.3s à 150ms, offrant une expérience utilisateur nettement plus fluide.