Nền tảng dùng chung — Tổng quan
Phần này gom các kiến thức xuyên suốt mọi domain: hệ thống gồm những ứng dụng nào, dữ liệu lưu ở đâu, và các quy ước/nguyên tắc mà tất cả domain đều tuân theo.
Các trang trong phần này
| Trang | Trả lời |
|---|---|
| Kiến trúc tổng thể | Topi / Tuke / Tux là gì, ráp với nhau ra sao? |
| Database & lưu trữ | Dữ liệu lưu ở đâu (SQL / Table / Blob), quy ước đặt tên? |
| Domain model — Aggregates & Ownership | Aggregate là gì, ai sở hữu cái gì, ranh giới mutate? |
| Timezone & DateTime | Lưu UTC, hiển thị local, MultiZone — concern xuyên domain. |
| Quy ước & nguyên tắc | Các nguyên tắc xương sống dùng chung mọi nơi. |
Bức tranh một phút
- Topi + Tuke là hai frontend; cả hai gọi Tux (backend).
- Tux chứa nghiệp vụ lõi (API) và Workers (xử lý nền qua queue).
- Dữ liệu chia ba kho: SQL (quan hệ), Table (key-value), Blob (file lớn); Queue vận chuyển event/việc nền.
Vì sao cần phần này?
Mọi domain (Subscription, Staff, Communication, Platform) đều đứng trên cùng nền này. Hiểu nền trước giúp đọc các domain nhẹ hơn nhiều — đặc biệt là các nguyên tắc chống trùng và quy ước khóa lặp lại ở khắp nơi.
Implementation hiện tại
- Unified settings được đọc qua snapshot chung theo hierarchy Enterprise → BusinessUnit → Org → ProgramCategory/OrgProgramCategory; selector ở client chỉ thu hẹp dữ liệu đã được server scope.
- EntityEvent có thể dùng
BlobRefkhi toàn bộ message serialize vượt giới hạn queue; payload event-time bắt buộc phải còn đọc được ở worker. - Notification traceability dùng
SourceKeytheo nguồn nghiệp vụ, cònEventKey/HistoryEventKeytiếp tục giữ vai trò chống duplicate.
Ví dụ thực tế: Đổi context từ một BU sang BU khác không lấy lại từng setting rời rạc; client nhận snapshot mới theo hierarchy và các cache liên quan bị invalidate.