본문 바로가기
Projects (개인)

Book Search Labs

Links

Tech Stack

  • Java 17
  • Spring Boot 3.5.9
  • Spring JDBC
  • Spring Kafka
  • Spring Data Redis
  • Actuator
  • Micrometer (OTel bridge)
  • Lombok
  • Gradle
  • Python 3.11
  • FastAPI
  • Uvicorn
  • httpx
  • PyMySQL
  • redis-py
  • pytest
  • ONNX Runtime
  • tokenizers
  • NumPy
  • Ollama (로컬 LLM)
  • OpenAI-compatible API
  • React 19
  • TypeScript 5
  • Vite 7
  • React Router 7
  • Bootstrap 5
  • React-Bootstrap
  • ESLint
  • MySQL 8.0.36
  • OpenSearch 2.11.1 (analysis-nori, analysis-icu)
  • OpenSearch Dashboards
  • Redis 7.2
  • ClickHouse 24.8
  • Kafka (로컬 Redpanda)
  • Outbox Pattern
  • OpenTelemetry
  • OTel Collector
  • Prometheus
  • Grafana
  • Tempo
  • Loki
  • Promtail
  • Metabase
  • JSON Schema
  • Protocol Buffers (.proto)
  • Flyway
  • Docker Compose
  • GitHub Actions

Overview

  • 대용량 도서 메타데이터를 Canonical DB(MySQL)로 정규화하고, OpenSearch 기반 Hybrid Search(BM25 + Vector)와 모델 재랭킹을 제공하는 통합 검색 플랫폼입니다.
  • BFF/QS/SR/RS/MIS/Commerce를 계약(JSON Schema/OpenAPI) 중심으로 분리해, 기능 확장 시에도 서비스 간 결합도와 장애 전파를 낮췄습니다.
  • 통합검색, 주문/결제/환불, RAG 챗봇을 하나의 운영 경로로 연결하고, degrade-safe 설계로 부분 장애 시에도 응답을 보장합니다.
  • 자동완성/추천/리랭킹은 이벤트 기반 오프라인 학습 루프(Outbox→Kafka→ClickHouse/Feature Store)로 지속 개선합니다.

Architecture

  • BFF → QS(prepare/enhance) → SR(retrieve/fusion) → RS(feature assembly) → MIS(model inference) 흐름으로 온라인 서빙을 오케스트레이션합니다.
  • MIS는 Embed/Spell/Rerank 실모델 서빙과 Active/Canary 라우팅을 담당하고, SR/RS는 guardrail(topN/topR/timeout/cost)로 지연·비용 상한을 제어합니다.
  • Commerce는 Order 상태머신 + Inventory Ledger + Payment Webhook + Refund 파이프라인으로 정합성과 멱등성을 보장합니다.
  • 챗봇은 Rewrite→Retrieve(Hybrid)→(선택)Rerank→Generate 파이프라인과 tool orchestration(주문/배송/환불 조회, 문의/민감 액션)을 지원합니다.

Data Flow

  • Ingest: Raw(JSON-LD) → 정규화/검증 → MySQL canonical upsert(payload_hash) → OpenSearch version index 생성 → alias swap
  • Search: query normalize/detect → BM25+Vector 후보 생성 → fusion(RRF/weighted) → rerank(MIS) → degrade-safe 응답 조립
  • Commerce: Cart(가격 스냅샷) → Order 생성(idempotency) → Payment 생성 → Webhook CAPTURED 확정 → Shipment/Refund 상태 전이
  • Chat: SSE(meta/delta/done) 스트리밍 → citation 강제/검증 → reason_code·next_action 기반 복구 힌트 제공
  • Signals/Learning: search/click/dwell/ac_select/order/payment/refund/chat_feedback → Outbox → Kafka → ClickHouse/Feature Store → Offline Eval/LTR 학습

Ops

  • request_id/trace_id E2E 전파와 구조화 로그, RED + 품질 지표(0-result, fallback, citation coverage)로 이슈를 단계별 분해 관측합니다.
  • 계약/모델/피처 버저닝 + CI compatibility gate + offline eval 회귀 게이트로 drift와 품질 하락 배포를 차단합니다.
  • Blue/Green 재색인(pause/resume/checkpoint)과 alias rollback으로 인덱스 운영 리스크를 낮춥니다.
  • timeout budget, circuit breaker, provider failover, fallback escalation으로 p95/p99와 운영 복구성을 함께 관리합니다.

Architecture Diagram

Book Search Labs: Canonical Pipeline + Hybrid Retrieval/Reranking + Degrade-safe Serving

diagram rendering...