Aller au contenu principal
AIVO Logo
Architecture & Scale SaaS Multi-Tenant & GitOps 2021 - 2025

IDPosition — Plateforme SaaS Enterprise Multi-Tenant & Infrastructure Scaleway Dédiée

Transformation d'un POC technique en une plateforme SaaS entreprise multi-tenant opérée sous Kubernetes (Scaleway) pour Orange, Dior, FDJ, Vinci et HEC. Sous-domaines dédiés par client, API Scaleway, Cloudflare, BDD et S3 dédiés, chiffrement de bout en bout et apps mobiles/tablettes.

100% Isolé
BDD & Buckets S3 Dédiés
3M+ Lignes
Volume de Données
99.9%
Disponibilité SLA
Stack : Symfony 6 (PHP 8.2) Vue.js 3 Kubernetes (Scaleway) PostgreSQL (1 BDD / Client) Object Storage (1 Bucket S3 / Client) Cloudflare DNS & WAF API Keycloak (SAML v2 / OIDC) RabbitMQ ArgoCD & GitOps Capacitor Mobile App
Impact & Performance

50+ Sous-domaines, BDD & Buckets S3 entreprise dédiés avec chiffrement de bout en bout et 3M+ de lignes


1. Genèse & Défi : Du POC Technique à la Plateforme SaaS CAC 40

Le projet IDPosition est né d’un défi d’ingénierie ambitieux : transformer une preuve de concept (POC) initiale en PHP procédural en une plateforme SaaS entreprise multi-tenant, hautement disponible, ultra-sécurisée et capable de satisfaire les exigences contractuelles et réglementaires les plus drastiques de grands comptes du CAC 40 tels que Orange, Dior, FDJ, Vinci, BNP Paribas, HEC ou l’Université de Lorraine.

En tant que CTO et architecte de la solution, Nicolas BAUD a conduit la refonte intégrale du système d’information pour permettre la gestion, la réservation, le suivi de cycle de vie et la traçabilité d’équipements grace à des étiquettes RFID/QR sur des millions d’actifs.

+-------------------------------------------------------------------------------------+
|                        ÉCOSYSTÈME MULTI-PLATEFORME IDPOSITION                       |
+-------------------------------------------------------------------------------------+
| [ Web Console Vue.js 3 ]  [ Tablette Inventaire (Java) ] [ App Mobile (Capacitor) ] |
+-------------------------------------------------------------------------------------+
                                          |
                                          v (Sous-Domaine Dédié)
+-------------------------------------------------------------------------------------+
|               CLOUDFLARE WAF & DNS API (Chiffrement Bout en Bout TLS 1.3)           |
+-------------------------------------------------------------------------------------+
                                          |
                                          v (SSO Keycloak / OIDC & SAML v2)
+-------------------------------------------------------------------------------------+
|                       API SAAS CENTRALE (Symfony 6 / PHP 8.2)                       |
|                  < ARCHITECTURE HEXAGONALE / PORTS & ADAPTERS >                     |
+-------------------------------------------------------------------------------------+
      |                                  |                                  |
      v                                  v                                  v
+---------------------+        +--------------------+            +--------------------+
|    SCALEWAY API     |        | RABBITMQ (WORKERS) |            | KEYCLOAK REALMS    |
| (1 BDD + S3/Client) |        | (Exports/Imports)  |            | (OIDC / SAML v2)   |
+---------------------+        +--------------------+            +--------------------+

2. Sous-Domaines Dédiés & Automatisation DNS Cloudflare (Chiffrement Bout-en-Bout)

Pour répondre aux contraintes d’étanchéité et d’image de marque des grands comptes, chaque entreprise cliente bénéficiait de son propre sous-domaine entièrement personnalisé.

Automatisation Cloudflare & Sécurité E2EE :

  • Provisionnement Automatique de Sous-Domaines : Lors de la création d’un nouveau tenant entreprise par l’API SaaS, un script d’automatisation crée instantanément l’enregistrement DNS dédié dans la zone Cloudflare via l’API Cloudflare.
  • Connexion Unifiée Web, Tablette & Mobile : La console Web Vue.js 3, l’application Tablette d’inventaire (Java) et l’application mobile (Capacitor) se connectent directement et exclusivement sur le sous-domaine propre de l’entreprise cliente.
  • Chiffrement de Bout en Bout (End-to-End Encryption) : TLS 1.3 strict, règles WAF anti-DDoS, en-têtes de sécurité renforcés et certificats chiffrés de bout en bout garantissant l’inviolabilité des échanges entre les terminaux terrain et l’API centrale.

3. Isolation Totale Multi-Tenant : 1 BDD & 1 Bucket S3 Dédiés par Client (API Scaleway)

Pour respecter les exigences de sécurité strictes et les engagements contractuels pris auprès des clients CAC 40, l’isolation logique par simple table ou schéma n’était pas suffisante.

Provisionnement Automatisé par API Scaleway :

  • Une Base de Données PostgreSQL Dédiée par Client : Chaque nouveau tenant entreprise déclenchait automatiquement via l’API Scaleway le provisionnement d’une instance de base de données PostgreSQL physiquement séparée et isolée.
  • Un Bucket Object Storage S3 Dédié par Client : Les médias, photos d’équipements et documents associés étaient conservés dans un bucket S3 dédié par client avec des clés d’accès chiffrées uniques.
  • Isolation Contractuelle et Sécurité Maximale : Aucune donnée d’un client ne résidait sur la même base d’un autre. La suppression d’un compte entreprise ou un audit de conformité RGPD s’effectuait en toute étanchéité.

4. Architecture Hexagonale (Ports & Adapters)

Pour garantir la pérennité du système, faciliter l’évolutivité et prévenir tout risque de couplage fort avec le framework, Nicolas BAUD a conçu l’API sous Symfony 6 / PHP 8.2 en suivant les principes de l’Architecture Hexagonale.

Découplage strict du Domaine Métier :

  • Cœur Métier (Domain Layer) : Logique pure d’inventaire, d’étiquetage, de règles de transfert de biens, de calcul d’amortissement et de créneaux de réservation.
  • Ports Entrants (Primary/Driving Ports) : Interfaces d’entrées consommées par la Console Web, les Tablettes d’inventaire et l’App Mobile sur leurs sous-domaines respectifs.
  • Ports Sortants (Secondary/Driven Ports) : Adaptateurs de persistance (PostgreSQL / Scaleway API), de messagerie (RabbitMQ), d’identité (Keycloak) et de stockage S3.
+------------------------------------------------------------------------------------+
|                ARCHITECTURE HEXAGONALE IDPOSITION (SYMFONY 6 / PHP 8.2)            |
+------------------------------------------------------------------------------------+
|  ADAPTATEURS ENTRANTS : Web Console Vue.js | Tablette Java | App Mobile Capacitor  |
|                                         |                                          |
|                                         v                                          |
|  DOMAINE MÉTIER PURE  : Gestion Biens, Mouvements, Espaces & Réservations          |
|                                         |                                          |
|                                         v                                          |
|  ADAPTATEURS SORTANTS : Scaleway API (1 BDD+S3/Client) | RabbitMQ | Keycloak Realm|
+------------------------------------------------------------------------------------+

Figure 1 : Diagramme d’Architecture Hexagonale avec routage par sous-domaine client et chiffrement de bout en bout.


5. Workflows Métiers & State Machines (Symfony Workflows)

Le cœur applicatif d’IDPosition s’appuie sur le composant Symfony Workflow / State Machine pour piloter l’état des biens, la préparation des livraisons, les réceptions et les arbitrages de mouvement.

+------------------------------------------------------------------------------------+
|               WORKFLOWS D'ÉTAT & CYCLE DE VIE D'UN BIEN (STATE MACHINE)            |
+------------------------------------------------------------------------------------+
|  [ En attente ] ---> [ En service ] ---> [ Transfert / Restitution / Don / Rebut ] |
|  MOUVEMENTS     ---> [ Réception ] ---> [ Préparation ] ---> [ Livraison Validée ] |
+------------------------------------------------------------------------------------+

Figure 2 : Workflow d’état et de cycle de vie d’un bien au sein d’IDPosition.


6. Interface Web Fluide

L’interface utilisateur développée sous Vue.js 3 offre un confort de navigation avec gestion dynamique des vues de données, filtres multicritères instantanés et réactivité maximale.

Démonstration 1 : Navigation fluide et filtrage des éléments.

Démonstration 2 : Gestion des vues personnalisées.


7. Habilitations, Champs Personnalisés & Moteur de Validation (Workflows & Approbations)

La gestion fine des autorisations, de la flexibilité des données et du paramétrage métier a été conçue sur-mesure au sein d’IDPosition via un moteur puissant articulé en 3 piliers :

+------------------------------------------------------------------------------------+
|        HABILITATION DOUBLE COUCHE & WORKFLOWS D'APPROBATION MULTI-VALIDATEURS      |
+------------------------------------------------------------------------------------+
|  COUCHE 1 : Droits Fonctionnels (Permet : Édition Champs Comptables, Exporter...)  |
|  COUCHE 2 : Périmètre d'Accès (Périmètre : Site Paris, Bâtiments A & B)            |
|  VALIDEUR  : Soumission à la validation du Manager avant enregistrement définitif |
+------------------------------------------------------------------------------------+

Figure 3 : Moteur d’Habilitations Double Couche, Champs Personnalisés & Workflows d’Approbation.

1. Habilitation Double Couche (Droits x Périmètre)

  • Profils de Droits (Permissions Fonctionnelles) : Définit ce que l’utilisateur a le droit de faire (ex: créer un bien, valider un mouvement, exporter un rapport, modifier une fiche).
  • Profils d’Accès (Périmètre de Visibilité) : Définit ce que l’utilisateur a le droit de voir (ex: uniquement les équipements du bâtiment A, ou l’intégralité du parc national).

2. Champs Personnalisés, Familles & Groupements Hiérarchiques

  • Champs Personnalisés & Validation Paramétrable : Création dynamique de champs métiers avec règles de validation personnalisables, appliqués par famille de champs (typologie d’objet, lieu ou groupement).
  • Visibilité Configurable par Profil : Contrôle fin de la visibilité des champs selon les profils (ex: l’utilisateur A accède aux champs comptables/financiers, l’équipe terrain aux seuls champs opérationnels).
  • Groupements Hiérarchiques Sur-Mesure : Arbres hiérarchiques de regroupement d’actifs adaptables aux besoins de chaque client (ex: regroupement par service RH, ou pour un garde-meuble, groupement par client avec sous-groupements par typologie de bien).

3. Moteur de Validation des Modifications (Workflow Manager)

  • Soumission & Approbation des Modifications : Les opérateurs terrain saisissent des modifications qui sont notifiées à leur manager pour validation avant inscription définitive.
  • Workflows à Multi-Validateurs : Un profil attribué à une équipe (ex: 10 techniciens terrain) peut exiger l’approbation d’un ou plusieurs validateurs désignés. Exemple : L’utilisateur A modifie les données comptables d’un bien ; l’action est automatiquement soumise à l’approbation des utilisateurs B, C ou D.

8. Écosystème Mobilité & Inventaire Hors-Ligne (Offline-First)

Pour répondre aux contraintes du terrain (inventaires réalisés dans des sous-sols, locaux techniques enterrés ou zones industrielles sans couverture réseau), l’écosystème IDPosition intègre deux applications mobiles dédiées se connectant directement sur le sous-domaine client.

1. Application Tablette d’Inventaire (Java) & Queue de Dédoublonnement

  • Matériel de comptage dédié : Les clients disposent de tablettes renforcées exécutant une application native Java développée pour la numérisation rapide (lecteurs optiques / RFID).
  • Mode Offline-First & Ingestion Anti-Doublons : Les données d’inventaire saisies en zone blanche sont conservées localement. Lors de la reconnexion à l’API du sous-domaine client, un moteur de dédoublonnement asynchrone analyse les empreintes temporelles et numéros de série pour ingérer les lots sans générer de doublons ni d’incohérences de stock.

2. Application Mobile Cross-Platform (Capacitor) & Google Play Store

  • Développement sous Capacitor : Application mobile réactive développée pour les interventions rapides des agents de maintenance et gestionnaires de parc.
  • Publication & Validation Google Play Store : Prise en charge intégrale par Nicolas du processus de certification et de déploiement sur le Google Play Store.
  • Fonctionnalités terrain : Scan d’étiquettes, renommage immédiat, réaffectation à un nouvel emplacement ou changement de statut en un clic.
  • Authentification SSO Unifiée : Connexion transparente par SSO d’entreprise ou compte Keycloak IDPosition identique sur Web, Tablette et Mobile.

9. Moteur Asynchrone RabbitMQ & Traitement par Lots

Les tâches à forte empreinte CPU ou I/O (génération de rapports PDF complexes, exports Excel de centaines de me milliers de lignes, traitement et redimensionnement d’images) sont déportées hors de la boucle de requête HTTP.

+------------------------------------------------------------------------------------+
|                 FLUX DE TRAITEMENT ASYNCHRONE DES TÂCHES LOURDES                   |
+------------------------------------------------------------------------------------+
|  [ Demande Export PDF/Excel 100k ] ---> [ API Symfony ] ---> [ RabbitMQ Broker ]   |
|                                                                     |              |
|                                                                     v              |
|  [ Notification Téléchargement ] <--- [ Bucket S3 Client ] <--- [ Worker Async ]    |
+------------------------------------------------------------------------------------+

Figure 5 : Flux de traitement asynchrone des tâches lourdes via RabbitMQ.


10. Bilan & Résultats Métiers

Grâce à cette refonte architecturale conçue et pilotée par Nicolas BAUD, la solution IDPosition s’est imposée comme une référence de fiabilité et de performance sur le marché du SaaS d’entreprise.

Chiffres clés & Bénéfices :

  • 50+ Sous-domaines, BDD & Buckets S3 dédiés provisionnés par API Scaleway & Cloudflare avec chiffrement de bout en bout.
  • 3.000.000+ de lignes de données traitées avec des temps de réponse sous les 100ms.
  • 100% de conformité aux audits de sécurité des groupes du CAC 40 et institutions bancaires (BNP Paribas, HEC, FDJ, Vinci, BPCE …).
  • Zéro interruption de service lors des mises à jour applicatives grâce à ArgoCD et aux déploiements Kubernetes progressifs.

Un projet similaire en tête ?

Discutons de vos enjeux pour concevoir une architecture sur-mesure.

Discuter de Votre Projet

Sommaire du Projet