Le catalogue, le panier et le paiement que vous utilisez ici tournent sur la pile décrite ci-dessous, sans rien cacher. PrestaShop, PrettyBlocks et les modules sont épinglés dans le dépôt, PHP et nginx suivent leur version mineure, et tout est reconstruit à chaque déploiement.

9.2.1 PrestaShop Édition communautaire, cœur non modifié
8.5 PHP PHP-FPM sur Alpine, OPcache
0 secret dans le dépôt Tout passe par SOPS et FluxCD
Sous le capot

Cinq couches, une boutique.

Faites défiler : la boutique se démonte couche par couche, de l’infrastructure jusqu’à la page que vous lisez.

Cinq dalles de verre superposées et écartées, une par couche de la boutique.
  1. Infrastructure

    OVHcloud Public Cloud, région 3-AZ de Paris : un cluster Kubernetes réparti sur trois zones de disponibilité.

  2. Déploiement

    Deux images, php et nginx, construites avec Kaniko. FluxCD met le cluster à jour dès qu’un nouveau tag paraît.

  3. Données

    MariaDB, pilotée par un opérateur Kubernetes, et des volumes persistants pour les images et les fichiers clients.

  4. Application

    PrestaShop 9.2.1, édition communautaire au cœur non modifié, sur PHP 8.5 en FPM avec OPcache.

  5. Front

    Hummingbird et son thème enfant, des pages composées en blocs PrettyBlocks, des web components sans framework.

Couche par couche

La pile complète.

Chaque ligne correspond à un composant réellement utilisé.

Application
  • PrestaShop 9.2.1, édition communautaire
  • PHP 8.5 en FPM, image Alpine
  • OPcache, 192 Mo, sans revalidation des fichiers
  • Symfony, socle du back-office et du cœur
Données
  • MariaDB, pilotée par un opérateur Kubernetes
  • Volumes persistants pour les images et les fichiers clients
Front
  • Hummingbird en thème parent
  • Un thème enfant écrit pour la boutique
  • PrettyBlocks 3.2.1 pour les pages
  • Web components, sans framework JS
  • Vite pour le build
  • Polices Phudu et Geist auto-hébergées
  • Umami pour la mesure d’audience, sans cookie
Vente
  • Tunnel de commande sur une page, celui de PrestaShop 9.2
  • PayPlug pour la carte
  • Virement bancaire
  • Colissimo pour les expéditions
Infrastructure
  • OVHcloud Public Cloud, région 3-AZ de Paris
  • Cluster Kubernetes réparti sur trois zones de disponibilité
  • nginx 1.29 en image non privilégiée
  • Deux images, php et nginx, construites avec Kaniko
  • FluxCD pour le déploiement GitOps
Qualité
  • GitLab CI à chaque fusion
  • PHP CS Fixer, règles PSR-12
  • PHPStan niveau 3
  • Playwright pour les parcours de bout en bout, lancés en local
Déploiement

Du commit à la boutique.

Personne ne se connecte au serveur pour modifier un fichier : tout passe par le dépôt.

  1. 1 GitLab Merge request

    Ouverte en brouillon, relue et fusionnée par un humain.

  2. 2 CI Lint

    PHP CS Fixer, PHPStan et build du thème.

  3. 3 Kaniko Images

    Une image php, une image nginx, taguées d’un horodatage.

  4. 4 FluxCD Déploiement

    Le cluster repère le nouveau tag et se met à jour.

  5. 5 Kubernetes Installation

    Un Job rejoue les seeds et les mises à jour de modules.

Les choix

Quatre décisions qui structurent le projet.

01 Un overlay, pas une copie

Le dépôt ne contient que le thème, les modules et l’outillage. Le cœur est épinglé dans le Dockerfile et n’est jamais modifié.

02 Des pages en blocs

Accueil, fiches produit et cette page sont des blocs PrettyBlocks, modifiables dans le back-office sans développeur.

03 Des seeds idempotents

Catalogue, pages et réglages sont du code rejoué à chaque déploiement, sans écraser ce qui a été édité à la main.

04 Aucun secret en clair

Les clés de paiement, de base et d’envoi d’e-mails sont chiffrées avec SOPS et ne sont lues que par le cluster.

Questions

Ce qu’on nous demande sur la stack.

Où sont hébergées les données ?

En France, chez OVHcloud, sur la région 3-AZ de Paris : le cluster Kubernetes est réparti sur trois zones de disponibilité, distantes d’environ 30 km. L’application et la base de données y tournent chacune en une seule réplique.

Le thème de cette boutique est-il à vendre ?

Non : c’est un thème enfant de Hummingbird écrit pour cette boutique. Ses pages sont composées de blocs PrettyBlocks, modifiables dans le back-office.

Puis-je avoir la même chose sur ma boutique ?

Les modules et l’hébergement sont dans la boutique. Pour le reste, l’agence vous dit ce qui a du sens sur votre projet.

Chargement...
Retour en haut