Aller au contenu
Produit SaaS d'Entreprise

Plateforme ERP Multi-Tenant

Un ERP microservices conçu dès le premier jour pour l'isolation des locataires, le déploiement indépendant et une mise à l'échelle honnête.

Année 2025
Durée 14 mois
Équipe 4 ingénieurs
Statut En prod · premiers clients

Un aperçu du produit.

Nous voulions construire un ERP moderne qui n'enferme pas les petites et moyennes entreprises dans le piège classique « monolithe ou rien ». Les systèmes prêts à l'emploi comme SAP ou Odoo imposaient soit des coûts de licence entreprise, soit des mois de personnalisation pour s'adapter aux flux de travail réels.

Notre thèse était simple : découper le problème en petits services déployables indépendamment dès le premier jour — même lorsque tous les instincts d'une petite équipe disent de livrer un monolithe modulaire et d'extraire plus tard. Quatorze mois plus tard, cet engagement a façonné chaque décision technique et opérationnelle depuis.

Defi

Les entreprises de vente au détail, de services et de distribution ont toutes besoin d'un CRM, d'un module comptable et d'un système d'inventaire — mais les règles, les champs et les flux divergent fortement. Un monolithe traditionnel gère cette divergence en empilant des indicateurs de configuration jusqu'à ce que le code devienne un musée de cas particuliers.

Nos contraintes étaient plus strictes : isolation complète des données par locataire (aucun schéma partagé), cadence de déploiement indépendante par module (le CRM livre sans bloquer l'Inventaire), cohérence inter-services sous la seconde et une interface unique et cohérente malgré un backend fragmenté — le tout sur une infrastructure abordable pour une PME.

Approche

Nous avons choisi le polyrepo plutôt que le monorepo pour l'indépendance de déploiement. 41 dépôts au total : 16 services backend, 10 microfrontends Vue 3, une bibliothèque UI partagée, un SDK d'authentification JWT et des modules d'infrastructure. Chaque service backend est une application Laravel ciblée avec son propre schéma PostgreSQL.

Les services communiquent exclusivement via NATS JetStream — aucun appel HTTP direct entre services. Les requêtes synchrones du navigateur passent par une passerelle API Kong qui route vers le bon service et gère la validation JWT. L'interface est assemblée au runtime avec Rsbuild Module Federation, donc CRM et Inventaire peuvent livrer de nouvelles fonctionnalités indépendamment sans reconstruire le shell.

L'isolation des locataires est appliquée au niveau base de données via la Row-Level Security PostgreSQL, provisionnée par locataire par CloudNativePG. Un identifiant de locataire voyage dans l'en-tête de chaque message NATS. Si un service oublie de filtrer une requête, la RLS l'attrape — pas la vigilance humaine.

Nous avons choisi les microservices dès le premier jour — même si tous les instincts d'une petite équipe disent de livrer un monolithe et d'extraire plus tard.

Principales fonctionnalités livrées.

  • 16 services Laravel ciblés couvrant CRM, comptabilité, inventaire, RH, workflow, ticketing, reporting et plus
  • Schémas PostgreSQL isolés par locataire, row-level security appliqué
  • Bus d'événements NATS JetStream avec livraison garantie entre services
  • 10 microfrontends Vue 3 fédérés au runtime — livrés indépendamment
  • Déploiements Kubernetes basés sur Helm, sur des clusters RKE2
  • SDK JWT partagé, consommé par chaque service et microfrontend
  • Stack d'observabilité complet : métriques Prometheus, logs Loki, traces Tempo
  • Provisionnement automatique des locataires, base dédiée par client

Des résultats concrets, mesurés en production.

Deploy Time
2–3 min
Git push à la production, par service
p95 Latency
< 180ms
Sous tests de charge réalistes
Tenant Leaks
Zéro
6 mois de pen-testing, aucun accès inter-locataire
Scale
41 dépôts
Frontières claires, responsabilité claire par service

La plateforme prend en charge un nombre illimité de locataires sans contamination croisée. Chaque service est déployé indépendamment via des charts Helm sur Kubernetes RKE2, avec observabilité complète par Prometheus, Grafana, Loki et Tempo. Temps de déploiement moyen : moins de 3 minutes par service.

Technologies utilisées, regroupées par rôle.

Backend
Laravel 12 PostgreSQL NATS JetStream Valkey CloudNativePG
Frontend
Vue 3 TypeScript Rsbuild Module Federation
Infrastructure & observabilité
Kubernetes (RKE2) Helm Prometheus Grafana Loki Tempo