11P by xguru 21일전 | favorite | 댓글 2개
  • AI 기반의 오픈소스 고객 참여 플랫폼으로, 데이터를 활용해 대규모로 개인화된 사용자 여정을 설계할 수 있도록 지원
    • Customer.io 의 오픈소스 대체제
  • 기존 도구의 문제점: 높은 비용, 기존 커뮤니케이션 스택 전체를 변경해야 하는 어려움
  • LimeJourney는 다음 두 가지 원칙을 중심으로 설계됨:
    • 오픈소스 접근성: 개발자와 소규모 팀이 무료로 사용 가능. 관리형 솔루션을 선호하는 경우 클라우드 버전도 제공
    • 기존 통합 지원 (BYOI): 기존 도구와의 통합 지원, 전체 스택 교체 불필요

주요 기능

  • AI 기반 통찰: AI 모델을 사용해 고객 이해를 지원
  • 비주얼 여정 빌더: 직관적인 드래그 앤 드롭 인터페이스로 복잡한 사용자 여정 생성 가능
  • 동적 세분화: 사용자 이벤트나 속성을 기준으로 세그먼트 생성 가능
    • 예: "최근 30일간 구매하지 않은 사용자"
  • 통합 기능: 기존 도구 및 서비스와 연결 가능, 데이터 수집 관련 통합 기능 지속 추가 중

LimeJourney의 기술 스택

  • 풀스택 모노레포 애플리케이션 (TypeScript로 작성)
  • 주요 기술:
    • Turbo: 모노레포 관리
    • Next.js: 웹 앱 개발
    • TailwindCSS: 스타일링
    • Express: API 개발
    • TSOA: API 경로 및 OpenAPI 문서 생성
    • PostgreSQL: 주요 데이터 저장소
    • Redis: Journey-Trigger 매핑 관리용 KV 저장소
    • ClickHouse: 대규모 이벤트/엔터티 데이터 관리 및 실시간 세분화
    • Temporal: 비주얼 여정 빌더에서 생성된 여정을 실행
    • Kafka: 중앙 이벤트 버스 (Upstash에서 호스팅)

백엔드 아키텍처

핵심 구성 요소

  • 이벤트 스트리밍 백본 (Kafka 기반)
    • 사용자 및 시스템 이벤트 고속 처리
    • 시스템 내 모듈 간 비동기 통신 지원
    • 이벤트 소싱을 통한 데이터 일관성과 재생 가능성 제공
  • 실시간 세분화 엔진
    • ClickHouse의 고성능 쿼리 기능 활용
    • 사용자 속성 및 행동에 기반한 동적 세그먼트 생성
    • 대규모에서도 빠른 세그먼트 계산 가능
  • 여정 오케스트레이션
    • Temporal 기반으로 복잡한 사용자 여정 관리
    • 워크플로 신뢰성 보장, 실패 시 복구 가능
    • 여정 일시 중지, 재개 및 수정 지원
  • 엔터티 관리
    • 사용자 프로필 및 속성 관리
    • 엔터티 변경 이벤트 발행
    • 플랫폼 전반에서 통합된 사용자 데이터 제공

데이터 흐름 및 상호작용

  1. 사용자 행동(예: 페이지 조회, 구매)이 이벤트를 생성해 Kafka로 전달
  2. 이벤트는 ClickHouse에 저장되어 대규모 데이터 분석 지원
  3. 세분화 엔진이 최신 이벤트와 데이터를 기반으로 실시간 사용자 세그먼트를 업데이트
  4. 세분화 변경 또는 특정 이벤트가 여정 오케스트레이션을 트리거
  5. Temporal이 여정을 관리하며 다음과 같은 작업 수행:
  • 사용자 데이터 및 이벤트 기록 조회
  • 현재 세분화 상태 확인
  • 외부 작업 트리거(예: 이메일, 푸시 알림 발송)
  1. 주요 작업 또는 상태 변경 시 새 이벤트를 생성, 시스템에 다시 전달

kafka가 이런 대용량 이벤트에 적합할까요?

비동기 처리가 필요해서 쓰는거니 적합하지 않을까요?