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_idE2E 전파와 구조화 로그, 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...