Politique d’expédition
En supposant que vous faites référence à **Shopify** (la plateforme e-commerce populaire), voici la description de son modèle d'exécution (*execution flow*), découpée selon les trois perspectives clés : l'architecture technique, le parcours utilisateur et le traitement des commandes.
## 1. Architecture et exécution technique
Shopify fonctionne sur un modèle SaaS (Software as a Service) multi-locataire (*multi-tenant*), conçu pour gérer de très forts volumes de trafic (notamment lors d'événements comme le Black Friday).
* **Hébergement et Infrastructure :** Hébergé principalement sur Google Cloud Platform (GCP). Le système utilise des conteneurs isolés et des mécanismes de mise à l'échelle automatique (*autoscaling*) pour ajuster les ressources serveur selon la charge.
* **Core Application (Ruby on Rails) :** Le cœur du système est une grande application monolithique écrite en Ruby on Rails, optimisée au fil des ans avec des modules en Rust et C pour la vitesse.
* **Gestion des données :**
* **Base de données principale :** MySQL (sharded, c'est-à-dire découpée pour répartir les boutiques sur plusieurs bases).
* **Mise en cache :** Redis et Memcached pour charger instantanément les pages produits et les sessions.
* **Réseau de distribution de contenu (CDN) :** Fastly et Cloudflare distribuent les images, le CSS et le JavaScript au plus près de l'utilisateur final pour des temps de chargement ultra-rapides.
## 2. Flux d'exécution d'une requête (Parcours Acheteur)
Lorsqu'un client visite et achète sur une boutique Shopify, le flux d'exécution suit les étapes suivantes :
```
[Client / Navigateur]
│
▼
[CDN (Cloudflare / Fastly)] ──(Ressources statiques en cache)
│
▼ (Requête dynamique)
[Load Balancer & Edge Servers]
│
▼
[Application Core (Rails / Engine)]
│
├─► Check Stock & Sessions (Redis)
└─► Requête Base de Données (MySQL Shard)
│
▼
[Checkout Engine (GraphQL)] ──► [Passerelle de Paiement (ex: Shopify Payments / Stripe)]
│
▼
[Webhook / Event Bus] ──► (Applications tierces, EMAILING, ERP)
```
1. **Requête HTTP/HTTPS :** Le client clique sur un produit. La requête passe par le CDN. Si l'élément est statique, il est servi immédiatement.
2. **Rendu dynamique :** Si la page demande des données fraîches (ex: stock), la requête atteint le serveur Shopify. Le moteur de rendu Liquid assemble le code HTML avec les données de la boutique.
3. **Passage en caisse (Checkout) :** Traité par un sous-système ultra-sécurisé et optimisé (Checkout API via GraphQL). Il bloque temporairement l'inventaire pour éviter le surstockage (*overselling*).
4. **Paiement :** Shopify interroge la passerelle de paiement (Shopify Payments, Stripe, PayPal) via des API sécurisées (conformes PCI-DSS Level 1).
5. **Confirmation :** Le paiement est validé, la transaction est inscrite en base de données et une réponse 200 OK est renvoyée avec la page de confirmation.
## 3. Flux d'exécution de la commande (*Order Fulfillment*)
Une fois l'achat effectué, le système déclenche le flux opérationnel :
| Étape | Action système | Résultat |
| :--- | :--- | :--- |
| **1. Notification** | Déclenchement d'événements (Webhooks) | E-mail de confirmation envoyé au client ; notification dans l'app vendeur. |
| **2. Mise à jour des stocks** | Décrémentation automatique en base de données | Le stock disponible est ajusté sur tous les canaux (site web, POS, marketplaces). |
| **3. Traitement (Fulfillment)** | Transmission aux services de livraison | Envoi des détails de la commande à Shopify Fulfillment Network (SFN) ou à un outil tiers (ShipStation, ERP). |
| **4. Expédition** | Génération de l'étiquette d'expédition et du numéro de suivi | Le client reçoit un e-mail/SMS de suivi du colis. |
## 4. Écosystème d'extensions et API
Shopify exécute les personnalisations via deux leviers principaux :
* **Storefront API & Admin API (GraphQL & REST) :** Permettent aux développeurs de créer des boutiques headless ou de connecter des logiciels externes (CRM, comptabilité).
* **Shopify Functions & Apps :** Les applications s'exécutent de manière externe et interagissent via des Webhooks, ou directement dans le flux d'exécution de Shopify via WebAssembly (Wasm) pour des calculs ultra-rapides de remises ou de frais de port.
*(Note : Si vous cherchiez plutôt la description de **Shopify Fulfillment Network (SFN)** ou d'un composant spécifique comme **Storefront API**, précisez-le et je détaillerai ce point précis !)*