Application e-commerce conteneurisée
Plateforme e-commerce en microservices pour une société cliente fictive : j'ai développé en Python les services de clients, de catalogue, de panier, de commande et d'expédition, puis connecté l'ensemble avec Docker.
- Année
- 2024
- Cadre
- Projet de groupe, fin de BUT R&T
- Mon rôle
- Développement des services Python, tests unitaires et Docker
- Technologies
- Python
- Flask
- Kubernetes
- Docker
- OpenStack
- NATS
01 · Contexte
Le défi
SAÉ de troisième année de BUT Réseaux et Télécommunications, parcours Développement Système et Cloud : bâtir une plateforme e-commerce pour une société cliente fictive, RapidTrade Co., capable de grandir et d'absorber les pics d'activité de Noël ou du Black Friday. L'application compte onze microservices, qui communiquent en REST ou par messages NATS (partie d'une image Docker officielle de NATS, que l'équipe a configurée sans la redévelopper). Le portail Web, l'authentification, le paiement et l'envoi des courriels étaient fournis sous forme de conteneurs. Le reste était à développer : j'ai conçu en Python tous les services demandés, c'est-à-dire les clients, le catalogue de produits, le panier, la commande et l'expédition, je les ai connectés entre eux en local avec Docker, et j'ai écrit leurs tests unitaires. Le service de commande orchestre l'ensemble : il récupère le panier et le client, interroge le catalogue pour calculer le total, demande le paiement, puis publie la commande sur NATS pour que les courriels et l'expédition suivent, et vide le panier. Le déploiement sur un cluster Kubernetes de trois nœuds, installé sur des instances OpenStack derrière un pare-feu OPNsense, a été pris en charge par d'autres membres de l'équipe, qui travaillait en méthode agile, par sprints, avec un tableau de tâches GitLab.
02 · Architecture
Comment c'est construit
Les points clés
- Cinq microservices Python développés par mes soins : clients, catalogue, panier, commande, expédition
- Services conformes à une spécification précise : API REST sécurisées par clé, métriques, variables d'environnement
- Communication asynchrone par NATS (image officielle configurée) entre la commande, les courriels et l'expédition
- Tests unitaires de chaque service, conteneurisation et assemblage local avec Docker
- Déploiement par l'équipe sur Kubernetes, avec des instances OpenStack et un pare-feu OPNsense
- Travail en équipe, en méthode agile
03 · En images
Galerie

Le portail Web de la boutique, fourni avec le sujet 
Les services de l'application : en vert, ceux qui étaient fournis 
Les ressources Kubernetes de chaque service, du Service aux pods 
Les pods de l'application, répartis sur les nœuds du cluster 
Les cinq instances OpenStack de l'infrastructure 
Le déroulé du service de commande, du panier au traitement du paiement 
Les redirections de ports du pare-feu OPNsense vers l'application 
Le suivi des tâches de l'équipe, par état d'avancement
Cliquer sur une image l'ouvre en plein écran, avec navigation entre les captures.
04 · Bilan
Ce que j'en retire
Le projet le plus complet de mon BUT : il a mis en pratique tout ce que j'avais appris en trois ans.