ADR 0004Chấp nhận
ADR 0004: Tách control plane (Access Hub) và data plane (Collector)
Trạng thái: Chấp nhận. Ngày: 2026-09-30.
Bối cảnh
Access Hub (Laravel, PHP-FPM, MySQL) là nơi quản lý danh tính, kiểm kê, phân quyền, thông báo. Giám sát tạo luồng dữ liệu rất lớn (hàng trăm request/giây, hàng chục nghìn mẫu/giây) và có đặc tính khác hẳn (ghi liên tục, nhạy độ trễ, không quan hệ).
Lựa chọn
- Agent gửi thẳng vào Access Hub.
- Một hub trung gian (collector) đứng giữa, tách hai mặt phẳng.
Quyết định
Xây collector riêng bằng Go. Access Hub chỉ giữ dữ liệu nghiệp vụ nhỏ (agent, luật, alert), không nhận mẫu số liệu.
Lý do
- PHP-FPM và MySQL không phù hợp làm đường ingest tần suất cao. Tải giám sát không được kéo sập ứng dụng nghiệp vụ.
- Hai phía scale độc lập (thêm ingest mà không đụng Access Hub).
- MySQL Read/Write của Access Hub được bảo vệ khỏi khối lượng ghi số liệu.
- Ranh giới bảo mật rõ: agent không bao giờ nói chuyện trực tiếp với Access Hub.
Hệ quả
- Thêm một dịch vụ để vận hành (đổi lại là cô lập tải).
- Cần đồng bộ hai chiều được thiết kế cẩn thận: registry đẩy xuống, sự kiện đẩy lên, idempotent, chịu lỗi (xem 06).
- Cần kiểm thử hợp đồng giữa hai hệ thống.
- Access Hub vẫn là nguồn sự thật cho danh tính và luật, collector là bản sao đọc và người đánh giá.