
Introduction
Le partner‑commerce self‑hosted exige des opérations fiables : un suivi sûr, une conservation sécurisée des données et des mises à jour planifiables sans interruption. Affilentra fournit la base logicielle en tant qu'application PHP/MySQL. Ce guide montre de façon pragmatique comment exploiter Affilentra en tant qu'application containerisée — avec Docker‑Compose pour des configurations simples et Kubernetes pour des environnements de production évolutifs et tolérants aux pannes. Point d'attention : la persistance pour MySQL, les sauvegardes, la gestion des secrets et les mises à jour sans interruption pour les éditions PRO & NETWORK.
Vue d'ensemble de l'architecture
Composants typiques d'une installation Affilentra :
- Application PHP (Affilentra) : interface web, API, scheduler/tâches
- Serveur web (Nginx/Apache) ou reverse‑proxy (Traefik/Ingress)
- Base de données MySQL (stockage persistant)
- Optionnel : Redis pour sessions/cache, SMTP pour l'envoi d'e‑mails, stockage d'objets pour les assets
- Supervision, journalisation, tâches de sauvegarde
Les rôles (opérateur, marchand et partenaire) restent séparés logiquement ; la plateforme fournit le cadre technique.
Docker‑Compose : configuration pragmatique pour la production
Pour des installations petites à moyennes, Docker‑Compose est souvent suffisant. Éléments importants :
- Service « app » : PHP‑FPM ou PHP avec serveur web intégré. Montez le code de l'application en lecture seule et configurez un dossier d'uploads persistant.
- Service « db » : MySQL 8, avec un volume persistant pour /var/lib/mysql.
- Reverse‑proxy : Traefik ou un conteneur Nginx, certificats TLS externes.
- Optionnel : redis, mailer, conteneur de sauvegarde.
Les variables d'environnement (DB_HOST, DB_NAME, DB_USER, DB_PASSWORD) ne doivent pas être exposées dans le fichier Compose. Utilisez un fichier .env avec des permissions restreintes ou les Docker Secrets dans des déploiements Swarm. Persistance : utilisez des volumes nommés ou des montages host sur des disques dédiés.
Sauvegarde et restauration : prévoyez un conteneur de sauvegarde séparé ou un job Cron qui crée régulièrement un mysqldump cohérent et chiffre les dumps vers une destination externe (compatible S3). Testez régulièrement les processus de restauration.
Kubernetes : manifests prêts pour la production
Kubernetes offre une meilleure montée en charge, tolérance aux pannes et intégrations. Ressources recommandées :
- Deployment pour l'application Affilentra avec Readiness/Liveness‑Probes (par ex. endpoint de santé de l'application).
- StatefulSet pour MySQL avec PersistentVolumeClaims (PV/PVC) et une StorageClass appropriée (CSI‑plugin pour cloud ou on‑premise).
- Service (ClusterIP) pour la communication interne ; Ingress (ou contrôleur Ingress) pour l'accès externe avec TLS.
- ConfigMap pour la configuration non sensible ; Secrets pour les identifiants de base de données, clés API, mots de passe SMTP.
- Job/CronJob pour les migrations de base de données, les sauvegardes et les tâches de maintenance régulières.
StatefulSet garantit que les MySQL‑Pods restent solidement liés à des volumes persistants. Utilisez VolumeSnapshots (si votre fournisseur de stockage le prend en charge) en complément de mysqldump pour des restaurations plus rapides.
Persistance pour MySQL & stratégies de sauvegarde
Règles de base pour l'intégrité des données :
- Utilisez des PersistentVolumes dédiés avec une StorageClass fiable. Évitez le stockage éphémère pour les bases de données.
- Effectuez des sauvegardes logiques régulières (mysqldump ou mydumper) pour répondre aux exigences d'audit et de migration.
- Complétez si nécessaire par des sauvegardes physiques (p. ex. Percona XtraBackup) ou des snapshots de stockage pour de gros volumes de données.
- Chiffrez et répliquez les sauvegardes de manière redondante (au minimum hors site). Testez les restaurations dans un environnement isolé.
- Planifiez la rétention des sauvegardes et les politiques de conservation en fonction des exigences de conformité.
Pratique : un CronJob crée des dumps quotidiens, un snapshot hebdomadaire fournit des points de restauration rapides ; des jobs de vérification automatisés garantissent que les dumps sont lisibles.
Gestion des secrets
Les secrets sont critiques pour la sécurité et la fiabilité opérationnelle :
- Docker‑Compose : utilisez Docker Secrets ou un .env chiffré ; restreignez les permissions des fichiers.
- Kubernetes : stockez les valeurs sensibles dans des Secrets et employez des outils comme Sealed‑Secrets ou External‑Secrets pour permettre des workflows GitOps sécurisés.
- Pour une gestion centralisée dans des environnements plus larges, un magasin de secrets comme HashiCorp Vault ou un Cloud‑KMS est recommandé.
Renouvelez les secrets de manière cyclique et documentez les contrôles d'accès par rôle (opérateur vs. commerçant vs. partenaire).
Mises à jour sans interruption
Des mises à jour sans interruption sont essentielles dans les réseaux de partenaires. Procédure :
- Configurez des Rolling‑Updates pour les déploiements d'applications et utilisez des Readiness‑Probes afin que seuls les pods sains reçoivent du trafic.
- Pour les schémas de base de données : optez pour des étapes de migration rétrocompatible. Effectuez les migrations en deux phases (Write‑compatible, Read‑compatible) ou utilisez des feature‑flags.
- Exécutez les étapes critiques de migration en tant que Kubernetes Jobs, hors des chemins de production, ou utilisez les patterns Blue‑Green/Canary au niveau de l'Ingress pour basculer le trafic progressivement.
- Sessions et caches : externalisez l'état des sessions (p. ex. Redis) afin que les pods puissent être remplacés à volonté.
- Préparez un court scénario de repli (Rollback‑Image, snapshot de base de données) plutôt que de longs créneaux de maintenance.
Vous réduirez ainsi les risques d'indisponibilité lors des mises à jour pour les éditions PRO & NETWORK, même en cas d'un grand nombre d'utilisateurs.
Monitoring, journalisation, exploitation
Un déploiement stable repose sur la surveillance et des métriques visibles :
- Collectez les logs de manière centralisée (ELK/EFK, Loki) et instrumentez les métriques de l'application (Prometheus, Grafana).
- Configurez des alertes pour les taux d'erreur, les latences, l'utilisation des disques et les échecs de sauvegarde.
- Documentez des runbooks pour les incidents courants : restauration de la base de données, panne réseau, renouvellement TLS.
Checklist pratique pour la mise en production
Étapes courtes et maniables :
- 1) Préparer l'environnement : hôte, cluster Kubernetes ou hôte Docker avec un stockage suffisant.
- 2) Créer le stockage et les secrets : provisionner PV/PVC, StorageClass, configurer le Secret‑Store.
- 3) Déploiement de base : démarrer l'app + MySQL, exécuter le job de migrations, réaliser des tests smoke.
- 4) Activer les sauvegardes et la supervision et tester la restauration.
- 5) Définir la stratégie de mise à jour : Rolling/Blue‑Green, planifier les jobs de migrations et les feature‑flags.
- 6) Publier le manuel d'exploitation avec les rôles et responsabilités.
Conclusion et prochaine étape
Affilentra peut être containerisé de manière flexible — depuis des setups Docker‑Compose simples jusqu'à des déploiements Kubernetes scalables. Les éléments cruciaux sont une persistance durable pour MySQL, des processus de sauvegarde et de restauration testés, une gestion sécurisée des secrets et une stratégie de mise à jour minimisant les interruptions. Misez sur des probes de readiness, des stores de session externes et des modifications sûres pour les migrations afin d'exploiter de manière stable les PRO & NETWORK Editionen.
Prochaine étape
Essayer Affilentra soi‑même
Plateforme unifiée qui rassemble de manière transparente la mise en production des produits, le tracking, la validation des conversions, le calcul des commissions et les paiements selon des rôles clairement séparés ; option d'installation self-hosted avec licence perpétuelle sans participation au chiffre d'affaires ; les marchands conservent le contrôle sur les produits, les conditions et les supports publicitaires ; les partenaires reçoivent des liens de tracking personnels et un historique de paiements traçable.
