team-proposal-jp.html
Tiếp nối báo cáo phân tích nguyên nhân chậm (LRCC-2386), đây là đề xuất giải pháp dài hạn để CMS xử lý được khối lượng dữ liệu đã tăng lên đáng kể, mà vẫn đáp ứng yêu cầu thực tế của quý khách về độ tươi dữ liệu.
Hiểu đúng bối cảnh trước khi đề xuất thay đổi.
Lúc khởi tạo CMS, quý khách yêu cầu dashboard phải hiển thị dữ liệu mới nhất theo thời gian thực. Để đáp ứng yêu cầu này một cách trung thực nhất, team chọn query trực tiếp từ database mỗi khi admin mở trang.
Quyết định này là chuẩn xác: dataset lúc đó còn nhỏ, query nặng vẫn chạy trong 1–2 giây, và việc đảm bảo độ chính xác tuyệt đối là ưu tiên hàng đầu.
Sau 1–2 năm vận hành, các bảng giao dịch đã tăng quy mô:
video_view ~5M dòng,
transaction ~3M dòng.
Cùng câu query đó hiện cần quét ~150 triệu dòng mỗi lần admin mở trang → 60 giây+ tải (chi tiết trong báo cáo LRCC-2386).
Xem chi tiết: customer-report.html
Thay vì query trực tiếp mỗi request, chia làm 2 lớp đệm — đây là pattern mặc định của mọi dashboard analytics lớn.
Lưu tạm kết quả query trong bộ nhớ tốc độ cao. Mỗi request kiểm tra cache trước, chỉ chạm database nếu cache miss hoặc hết hạn (TTL 5–10 phút).
Tạo bảng tổng hợp theo ngày (vd: partnership_revenue_daily),
cron job nền refresh mỗi 15–30 phút. Query phức tạp được rút gọn thành SUM trên bảng nhỏ.
Mọi dashboard analytics quy mô lớn đều dùng kiến trúc này. Không phải workaround — đây là pattern được tài liệu hoá trong sách giáo khoa kiến trúc hệ thống.
Hiểu rằng yêu cầu ban đầu của quý khách về dữ liệu real-time là chính đáng. Đề xuất này có sẵn cơ chế đảm bảo độ tươi vẫn ở mức gần như real-time.
Có thể chia thành 2 release, mỗi phase đều cho thấy hiệu quả rõ rệt.
Thêm cache layer cho 5 endpoint nặng nhất trong CMS (revenue, statistics, member list). Lần đầu admin mở vẫn 60 giây (cache miss); từ lần thứ 2 trong 10 phút → <100ms.
Tạo các bảng *_daily,
cron job refresh mỗi 15 phút (sử dụng cron-job-service đã có sẵn).
Query nặng → <1 giây ngay cả lần đầu.
Thêm nút "Refresh now" + nhãn "Updated X minutes ago" trên các trang aggregate. Cho admin quyền chủ động lấy bản mới nhất khi cần. Đáp ứng nốt yêu cầu real-time cho 1% case đặc biệt.
Trước khi gửi bản này cho quý khách, mong BA + PM team duyệt:
customer-report.htmlperf-root-cause.mdteam-proposal-jp.html