Show me the REX construit un SaaS complet, près pour la production, avec un agent de code IA
Comment BlackMesa a conçu, sécurisé et déployé une plateforme complète — déploiement sans interruption, paiements réels, authentification sans mot de passe — en binôme avec un agent IA.
BlackMesa
21/09/2026
Eléments clés
- Problématique — livrer, à effectif réduit, un SaaS de niveau entreprise (fiabilité, sécurité, conformité) sans exploser les délais ni le budget.
- Solution — un développement en binôme humain + agent de code IA (Claude), sur une architecture Symfony / Docker pensée pour la production dès le premier jour.
- Résultat — plateforme en ligne : déploiements sans interruption, paiements récurrents réels, connexion par passkeys, stockage objet souverain.
- Prochaines étapes — monitoring & alerting, sauvegardes managées, finalisation du multilingue FR / EN / ES.
Contexte et enjeux
Le contexte
- L'entreprise — BlackMesa, studio d'ingénierie logicielle : petites équipes, projets clients exigeants, culture « production sérieuse ».
- Le projet — Show me the REX, une plateforme de publication de retours d'expérience data / IA : un média communautaire où entreprises et partenaires racontent leurs projets, avec espace client, abonnements et back-office.
- La problématique — atteindre un niveau que la plupart des petites structures n'atteignent jamais (zéro interruption, paiements en production, RGPD, performance) avec un effectif très réduit.
- L'équipe — un fondateur-développeur, épaulé en continu par un agent de code IA qui exécute, propose, teste et documente.
Choix du partenaire et de la solution mise en place
Un binôme, pas un simple prestataire
- Le « partenaire » ici, c'est un duo humain + IA : l'humain arbitre l'architecture et le produit ; l'agent accélère tout le reste — migrations, tests, refactors, documentation.
- La stack : Symfony 7.4 + FrankenPHP, tout conteneurisé avec Docker, PostgreSQL, Redis pour les sessions, Caddy en façade.
- La souveraineté : stockage objet chez OVHcloud (« rester français ») plutôt qu'un hyperscaler américain.
- Le choix structurant : une topologie blue-green dès le départ, pour déployer sans jamais couper le service.
Témoignage
L'usage de l'IA dans la production du code a démultipliée notre capacité de production. Sur la production de features on avance dix fois plus vite.
Déroulement du Projet
Poser des fondations dignes de la production
Tout part de Docker : le même environnement en local et en production, pour supprimer la classe entière des bugs « ça marche chez moi ». FrankenPHP sert l'application, PostgreSQL stocke les données, Redis porte les sessions. Dès les premiers jours, l'infrastructure a été traitée comme un livrable — pas comme une corvée reléguée à la fin.
Une architecture qui vieillit bien
Le cœur métier est isolé du reste : approche DDD (domain-driven design) en hexagonal (ports & adapters), pour que la logique ne dépende ni du framework ni de la base. Les écritures et les lectures passent par un CQRS (bus de commandes / requêtes via Messenger), ce qui rend les traitements lourds asynchrones et le code testable. Concrètement : on ajoute une fonctionnalité sans casser les autres, et on la teste sans démarrer tout le site.
Déployer sans jamais tomber — sans usine à gaz
Le déploiement sans interruption a une réponse « par défaut » dans l'industrie : Kubernetes piloté par ArgoCD (GitOps). C'est puissant — et c'est aussi un cluster à opérer en permanence, des mises à jour, une complexité qui suppose une équipe dédiée. À effectif réduit, on a fait un choix assumé : une approche plus frugale, tout aussi zéro-interruption, le blue-green.
Deux versions de l'application tournent en parallèle (« bleue » et « verte ») ; un proxy Caddy bascule le trafic de l'une à l'autre par un rechargement gracieux, une fois la nouvelle version en bonne santé. Les sessions vivant dans Redis, personne n'est déconnecté pendant une mise à jour. Les migrations de base sont écrites en « expand / contract » pour rester compatibles pendant la bascule. Résultat concret : on déploie en pleine journée, sans coupure ressentie — et sans la charge d'exploitation d'un orchestrateur.
Un pipeline média asynchrone
Quand un auteur publie une vidéo ou une image, le rendu de la page ne doit jamais attendre. Les images sont converties en WebP, les vidéos transcodées en H.264 avec une vignette — le tout en tâche de fond, via une file de messages traitée par un worker dédié. La page, elle, s'affiche immédiatement, et le média « propre » remplace l'original dès qu'il est prêt.
Des pages qui répondent au quart de tour
Le socle est taillé pour la vitesse : un serveur applicatif persistant (FrankenPHP), un cache HTTP en façade qui sert les pages publiques quasi instantanément, des médias déjà optimisés et aucun appel bloquant au stockage au moment du rendu. Le visiteur a un affichage rapide — et, au passage, plus sobre.
Sécurité et vie privée par défaut
Connexion moderne sans mot de passe (passkeys / WebAuthn) et double authentification pour l'administration. Côté audience, l'analytics est respectueux de la vie privée : pas de session imposée aux visiteurs anonymes, une mesure légère par balise, et un cache HTTP en façade pour tenir la charge.
Encaisser pour de vrai
La plateforme gère de vrais abonnements : prélèvement automatique via GoCardless, TVA correctement appliquée, et synchronisation vers l'outil comptable. Passer un paiement en production change tout : il n'y a plus de « bac à sable », chaque détail compte.
Garder l'œil sur la production
Faire tourner un service, c'est aussi savoir ce qu'il fait quand personne ne regarde. L'observabilité et la gestion des logs ont été pensées comme un sujet à part entière dès la conception : tracer les événements, pouvoir reconstituer un incident, être alerté au bon moment. Sur un produit en production, ce qu'on ne mesure pas finit toujours par se payer — c'est un chantier qu'on prend au sérieux et qu'on fait mûrir en continu.
Numérique responsable
La sobriété a été un critère de conception, pas un affichage. Les images sont systématiquement optimisées (converties en WebP, redimensionnées à la taille réellement affichée) : moins de bande passante, moins de stockage, des pages plus légères pour tout le monde. Les environnements de développement sont éteints chaque soir, pour ne rien consommer inutilement la nuit. L'hébergement est souverain (OVHcloud, en France). Et l'infrastructure est volontairement frugale : le blue-green mobilise deux instances le temps d'une bascule, là où un orchestrateur tournerait en permanence. Autant de choix qui réduisent l'empreinte sans rien retirer au service.
Le rôle de l'IA, sans mythe
L'agent de code n'a pas « écrit le site tout seul ». Il a démultiplié un ingénieur : proposer des implémentations, écrire les tests, dérouler les migrations, documenter, repérer les pièges. Les décisions difficiles — architecture, arbitrages produit, ce qu'on met en ligne — sont restées humaines. C'est précisément cet équilibre qui a permis d'aller vite sans sacrifier la solidité.
Résultats et prochaines étapes
- Avant / après — d'un dépôt vide à une plateforme de production complète en quelques mois : site public multilingue, espace client, abonnements, back-office.
- Gains mesurables — déploiements sans interruption ressentie ; pages média affichées sans appel bloquant au stockage ; image serveur allégée et disque assaini ; mises en production quasi quotidiennes.
- Rendu quasi instantané des pages publiques (cache HTTP en façade + serveur applicatif persistant), même en charge.
- Prochaines étapes — monitoring & alerting, sauvegardes managées, supervision des erreurs, et finalisation de la traduction FR / EN / ES.
Bonnes pratiques
- Traiter l'infrastructure comme un livrable dès le jour 1 (dev = prod grâce à Docker).
- Écrire des migrations rétro-compatibles (expand / contract) pour déployer sans couper.
- Sortir les appels lents (stockage objet, services externes) des chemins de rendu.
- Valider chaque changement d'infra avant de l'appliquer — rendre la configuration, ne jamais déployer à l'aveugle.
- Tout versionner et automatiser : commit → intégration continue → déploiement.
- Traiter l'observabilité — journalisation, traçage, alertes — comme un livrable, jamais comme une option.
- Faire de la sobriété numérique un critère de conception (poids des médias, ressources mobilisées), pas un argument marketing.
- Isoler le cœur métier (DDD / hexagonal) et séparer lectures et écritures (CQRS) : des fonctionnalités qui s'ajoutent sans casser l'existant.
Points de vigilance
- Un agent IA peut proposer une action risquée : des garde-fous sont indispensables — revue humaine systématique sur tout ce qui touche la production, sauvegarde avant toute modification.
- Le stockage objet est un point de défaillance : timeouts courts et dégradation gracieuse, jamais d'appel bloquant au moment du rendu.
- La dette d'exploitation se paie : le nettoyage (disque, volumes, images inutilisées) doit être prévu dès le départ, pas découvert un jour de saturation.
- Souveraineté ≠ simplicité gratuite : un stockage souverain a ses spécificités (droits par objet) qu'il faut absorber côté code.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Vous devez être connecté pour ajouter un commentaire.
Daté au niveau du modèle
- Modèle
- Claude Opus · v4.8
- À revoir le
- 22/03/2027
Tags
REX produit par