Nricher, plateforme SaaS de pricing intelligence e-commerce
Founding Engineer : data engineering vers Elasticsearch, conception des index et des agrégations, API NestJS et front Next.js.
Voir le site du projetnricher.ioChez Nricher, j'ai conçu et développé de bout en bout la plateforme SaaS de veille concurrentielle. À partir d'analyses existantes dans Power BI, j'ai créé le produit permettant aux e-commerçants de comparer leurs références avec celles de leurs concurrents, d'analyser les écarts de prix et d'évaluer la compétitivité de leurs fiches produits.
Au départ, les données étaient déjà produites par l'équipe Data, mais uniquement accessibles via Power BI. J'ai développé l'ensemble du SaaS : frontend, backend, API, infrastructure cloud et data engineering.
J'ai également conçu le pipeline entre Snowflake et Elasticsearch et développé le moteur d'analyse et de recherche sur lequel repose l'application.
- 11
- domaines ingérésSnowflake vers Elasticsearch
- 330
- endpoints APINestJS, 245 services
- 177
- colonnes filtrablesmoteur de filtres typé
- 24
- index Elasticsearchmulti-tenants
Rôle et périmètre
Développement du produit de bout en bout, du moteur d’indexation jusqu’aux écrans utilisés par les clients. En amont, le data warehouse restait géré par l’équipe data.
| Périmètre | Réalisations |
|---|---|
| Data engineering | Du data warehouse à Elasticsearch : moteur Java 21 / Spring Boot, calcul et indexation de 11 domaines |
| Search & analytics | Conception des index, agrégations, moteur de filtres, recherche produit |
| Backend | API NestJS, modélisation PostgreSQL, exports asynchrones |
| Frontend | Vues analytiques Next.js, migration MUI vers shadcn/ui |
| Infrastructure | Migration Heroku vers Scaleway, CI/CD, déploiement sans coupure |
Architecture
Architecture et développement de la plateforme SaaS : pipeline de données, moteur Elasticsearch, API, frontend et infrastructure cloud.
| Brique | Rôle |
|---|---|
| Snowflake | Data warehouse source des données de marché, tenu par l’équipe data |
| Moteur d’indexation (Java) | Calcule, streame et indexe vers Elasticsearch |
| Elasticsearch | Couche de service : tout le read analytique |
| API NestJS + front Next.js | Produit SaaS : vues analytiques, filtres, exports |
Moteur d’indexation
Data engineering, du data warehouse à Elasticsearch
Premier chantier : remplacer les tableaux de bord Power BI par un moteur d'analyse temps réel. Développement du pipeline qui extrait les données du data warehouse, les transforme, les streame et les indexe dans Elasticsearch pour alimenter 11 domaines métier. Toutes les analyses du SaaS reposent sur cette couche.
11
domaines
un pipeline par domaine
100 k
lignes par fetch
streaming colonne
2 000
docs par bulk
indexation par lots
- Pipeline producteur / consommateur développé sur mesure : file bornée pour gérer la back-pressure, pool de consommateurs et arrêt propre des traitements. La consommation mémoire reste bornée, indépendamment du volume des données traitées.
- Réindexation sans interruption de service : création d'un index horodaté, puis bascule atomique de l'alias. Une protection empêche toute perte de données lorsqu'une réindexation ne produit aucun document.
- Exécution des traitements dans des conteneurs éphémères, avec limite mémoire, suivi d'état persistant et notification automatique à la fin des traitements.
Elasticsearch
Le cœur analytique du produit
- Architecture multi-tenant : migration d'un index par client vers des index globaux, avec une isolation des données centralisée en un point unique du code.
- Calculs exécutés dans Elasticsearch : classement des écarts de prix via agrégations et scripts Painless, en une seule requête, sans post-traitement applicatif.
- Gestion de la volumétrie :
search_afteret agrégationscompositepour les exports massifs,updateByQueryasynchrone avec suivi de progression. - Moteur de filtres : DSL typé partagé entre le frontend et le backend, compilé en Query DSL Elasticsearch, avec facettes cohérentes sur 177 colonnes.
- Recherche produit tolérante aux fautes : recherche par titre, EAN, SKU, URL ou listes collées depuis Excel grâce à
search_as_you_type. Le composant le plus testé du projet.
Observabilité
Chaque requête Elasticsearch passait par un wrapper APM distinguant le temps passé dans le cluster du temps applicatif. Cette instrumentation a permis d'identifier précisément les goulots d'étranglement et de guider les optimisations.
Backend et frontend
API NestJS, Next.js 16, React 19
- API NestJS : plus de 330 endpoints, modélisation PostgreSQL et gestion des exports massifs via des jobs asynchrones annulables.
- Sécurité : conception de l'authentification par jetons avec rotation, authentification à deux facteurs, contrôle d'accès par rôles et isolation multi-tenant à plusieurs niveaux.
- Migration du frontend : plus de 1 200 fichiers migrés de MUI vers shadcn/ui et Tailwind, progressivement et sans interruption des livraisons.
- Interface analytique : développement des vues Next.js 16 / React 19 avec tables configurables, rendu à la demande, virtualisation et composant de graphiques SVG développé sur mesure.
DevOps
Migration Heroku vers Scaleway, menée en autonomie
Migration complète de l'infrastructure hors d'Heroku, sans interruption de service pour les clients.
| Brique | Choix |
|---|---|
| Compute | VPS Scaleway avec environnement de préproduction identique à la production |
| Base de données | PostgreSQL 17 managé en haute disponibilité |
| CI/CD | GitHub Actions avec pipelines de test, build et déploiement |
| Observabilité | Sentry, Elastic APM, Grafana |
Déploiement blue/green développé sur mesure : la nouvelle version est déployée en parallèle de l'ancienne, ne reçoit le trafic qu'après validation de son état de santé, avec rollback automatique en cas d'échec.
« Pourquoi pas Kubernetes ? »
J'ai choisi une solution proportionnée à la taille du système plutôt que d'introduire une complexité opérationnelle inutile.
Réalisations clés
Transformation d'un service de reporting Power BI en une plateforme SaaS commercialisée auprès de retailers, en m'appuyant sur un data warehouse existant.
| Compétence | Preuve |
|---|---|
| Data engineering | Conception du pipeline Java entre Snowflake et Elasticsearch : traitements, back-pressure, indexation par lots et réindexation sans interruption. |
| Elasticsearch | Architecture multi-tenant, modélisation des index, agrégations, scripts Painless, pagination profonde et moteur d'analyse. |
| Backend | API NestJS de plus de 330 endpoints, jobs asynchrones et sécurité multi-tenant. |
| Frontend | Application Next.js 16 / React 19 et migration progressive de plus de 1 200 fichiers vers shadcn/ui et Tailwind. |
| DevOps | Migration d'Heroku vers Scaleway, CI/CD, déploiements blue/green et rollback automatique. |
| Industrialisation | Standardisation des procédures de développement et d'exploitation pour maintenir l'ensemble du produit par une seule personne. |