Skip to content

ADR-0001. Ship search dưới dạng thư viện IGNIS component, không phải service độc lập

FieldValue
StatusAccepted
Date2026-02-15
Deciders@search-team
Supersedes

Bối cảnh

  • Search cần cùng dữ liệu nguồn đã nằm trong commerce (products, merchants, categories, devices, sale-channels) cộng pricing và inventory.
  • Một service riêng sẽ cần kết nối DB riêng, deploy, port, Snowflake worker id riêng, và một bản sao trùng của CDC consumer + wiring auth.
  • Query path nhạy cảm latency và được gọi từ chính các entity controller của commerce.
  • Typesense + Debezium connector là các phần biến động bên ngoài thực sự duy nhất; phần còn lại là logic in-process.

Quyết định

Chúng tôi sẽ ship @nx/search dưới dạng package thư viện export bốn lớp con BaseComponent (ApplicationSearchComponent, ApplicationEmbeddingConfigurationComponent, TypesenseSearchEngineComponent, ApplicationCdcComponent) cộng một SearchableControllerMixin. Host service (commerce) đăng ký chúng theo thứ tự dependency; search không có application.ts, port, hay DB schema riêng.

Hệ quả

ƯuNhược
Zero deploy/port/Snowflake thừa; tái dùng auth + DB của hostVòng đời search ghép với host
Lời gọi SearchService in-process — không network hop trên query pathKhông thể scale CDC consumer độc lập với commerce
Một CDC consumer trong host, không phải bản trùngBootstrap host phải đăng ký component đúng thứ tự
Mixin để mỗi controller consumer thêm /search với tenant scope riêngMột consumer thứ hai sẽ re-run cùng pipeline CDC trừ khi phối hợp

Các phương án đã cân nhắc

Phương ánƯuNhượcLý do loại bỏ
Microservice search độc lậpScale độc lập, ownership rõCDC consumer trùng, deploy/port/DB riêng, auth cross-serviceChi phí ops không tương xứng cho quy mô POS
Inline code search trực tiếp trong commerceWiring đơn giản nhấtKhông tái dùng, không test cô lập được, phình commerceMất tái dùng + ranh giới sạch

Tham chiếu

  • packages/search/AGENTS.md — thứ tự đăng ký component
  • Architecture

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.