11 points par xguru 2024-12-07 | 2 commentaires | Partager sur WhatsApp
  • Plateforme open source d’engagement client basée sur l’IA, qui permet de concevoir des parcours utilisateurs personnalisés à grande échelle en exploitant les données
    • Alternative open source à Customer.io
  • Problèmes des outils existants : coût élevé, difficulté à devoir remplacer toute la stack de communication existante
  • LimeJourney a été conçu autour de deux principes :
    • Accessibilité open source : les développeurs et les petites équipes peuvent l’utiliser gratuitement. Une version cloud est également proposée pour ceux qui préfèrent une solution managée
    • Prise en charge des intégrations existantes (BYOI) : intégration avec les outils existants, sans nécessité de remplacer toute la stack

Fonctionnalités principales

  • Insights alimentés par l’IA : aide à mieux comprendre les clients à l’aide de modèles d’IA
  • Visual journey builder : création de parcours utilisateurs complexes via une interface intuitive en glisser-déposer
  • Segmentation dynamique : création de segments à partir des événements ou des propriétés des utilisateurs
    • Exemple : "utilisateurs n’ayant effectué aucun achat au cours des 30 derniers jours"
  • Intégrations : connexion possible avec les outils et services existants, avec ajout continu d’intégrations liées à la collecte de données

Stack technique de LimeJourney

  • Application full-stack monorepo (écrite en TypeScript)
  • Principales technologies :
    • Turbo : gestion du monorepo
    • Next.js : développement de l’application web
    • TailwindCSS : styling
    • Express : développement d’API
    • TSOA : génération des routes d’API et de la documentation OpenAPI
    • PostgreSQL : principal stockage de données
    • Redis : stockage KV pour gérer le mapping Journey-Trigger
    • ClickHouse : gestion de données d’événements/entités à grande échelle et segmentation en temps réel
    • Temporal : exécution des parcours créés dans le visual journey builder
    • Kafka : bus d’événements central (hébergé chez Upstash)

Architecture backend

Composants clés

  • Backbone de streaming d’événements (basé sur Kafka)
    • Traitement rapide des événements utilisateur et système
    • Prise en charge de la communication asynchrone entre les modules du système
    • Cohérence des données et possibilité de relecture grâce à l’event sourcing
  • Moteur de segmentation en temps réel
    • Exploite les capacités de requête haute performance de ClickHouse
    • Création dynamique de segments basée sur les propriétés et comportements utilisateurs
    • Calcul rapide des segments, même à grande échelle
  • Orchestration des parcours
    • Gestion de parcours utilisateurs complexes basée sur Temporal
    • Fiabilité des workflows garantie, avec reprise possible en cas d’échec
    • Prise en charge de la pause, de la reprise et de la modification des parcours
  • Gestion des entités
    • Gestion des profils utilisateurs et de leurs propriétés
    • Publication d’événements lors des changements d’entité
    • Fournit des données utilisateur unifiées à l’échelle de la plateforme

Flux de données et interactions

  1. Les actions des utilisateurs (par ex. consultation de page, achat) génèrent des événements envoyés à Kafka
  2. Les événements sont stockés dans ClickHouse pour permettre l’analyse de données à grande échelle
  3. Le moteur de segmentation met à jour en temps réel les segments utilisateurs à partir des derniers événements et données
  4. Les changements de segmentation ou certains événements déclenchent l’orchestration des parcours
  5. Temporal gère les parcours et exécute des tâches telles que :
  • consultation des données utilisateur et de l’historique des événements
  • vérification de l’état de segmentation actuel
  • déclenchement d’actions externes (par ex. envoi d’e-mails, de notifications push)
  1. Lors d’actions importantes ou de changements d’état, de nouveaux événements sont générés puis renvoyés dans le système

2 commentaires

 
kandk 2024-12-09

Kafka est-il adapté à ce type d’événements à très grand volume ?

 
yangeok 2024-12-16

Comme on l’utilise parce qu’un traitement asynchrone est nécessaire, n’est-ce pas approprié ?