gg.dev
2023Founding Engineer · Fullstack, Data & Elasticsearch

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.io
ElasticsearchSnowflakeJava 21Spring BootNestJSNext.js 16React 19PostgreSQLDockerScalewayTypeScript

Chez 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
01

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ètreRéalisations
Data engineeringDu data warehouse à Elasticsearch : moteur Java 21 / Spring Boot, calcul et indexation de 11 domaines
Search & analyticsConception des index, agrégations, moteur de filtres, recherche produit
BackendAPI NestJS, modélisation PostgreSQL, exports asynchrones
FrontendVues analytiques Next.js, migration MUI vers shadcn/ui
InfrastructureMigration Heroku vers Scaleway, CI/CD, déploiement sans coupure
02

Architecture

Architecture et développement de la plateforme SaaS : pipeline de données, moteur Elasticsearch, API, frontend et infrastructure cloud.

BriqueRôle
SnowflakeData warehouse source des données de marché, tenu par l’équipe data
Moteur d’indexation (Java)Calcule, streame et indexe vers Elasticsearch
ElasticsearchCouche de service : tout le read analytique
API NestJS + front Next.jsProduit SaaS : vues analytiques, filtres, exports
03

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.
04

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_after et agrégations composite pour les exports massifs, updateByQuery asynchrone 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.

05

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.
06

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.

BriqueChoix
ComputeVPS Scaleway avec environnement de préproduction identique à la production
Base de donnéesPostgreSQL 17 managé en haute disponibilité
CI/CDGitHub 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.

07

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étencePreuve
Data engineeringConception du pipeline Java entre Snowflake et Elasticsearch : traitements, back-pressure, indexation par lots et réindexation sans interruption.
ElasticsearchArchitecture multi-tenant, modélisation des index, agrégations, scripts Painless, pagination profonde et moteur d'analyse.
BackendAPI NestJS de plus de 330 endpoints, jobs asynchrones et sécurité multi-tenant.
FrontendApplication Next.js 16 / React 19 et migration progressive de plus de 1 200 fichiers vers shadcn/ui et Tailwind.
DevOpsMigration d'Heroku vers Scaleway, CI/CD, déploiements blue/green et rollback automatique.
IndustrialisationStandardisation des procédures de développement et d'exploitation pour maintenir l'ensemble du produit par une seule personne.