Rủi ro và câu hỏi mở
1. Sổ rủi ro
Xác suất (X) và tác động (T): T = thấp, V = vừa, C = cao.
| # | Rủi ro | X | T | Biện pháp giảm thiểu |
|---|---|---|---|---|
| R1 | Sức chứa thật thấp hơn ước tính, kiểm thử tải muộn | V | C | agentsim từ GĐ 1, kiểm tải ở mỗi giai đoạn, bảng cỡ tải chỉ là ước tính |
| R2 | Bùng nổ cardinality làm sập TSDB | V | C | Danh sách nhãn trắng, max_series mỗi agent, cắt giá trị nhãn, cảnh báo tổng series |
| R3 | Windows: PDH, bản địa hóa bộ đếm, MSI, ký mã, SmartScreen | C | V | Dùng PdhAddEnglishCounter, kiểm thử trên nhiều bản Windows và ngôn ngữ, chứng chỉ ký mã EV, nhóm thử nghiệm sớm ở GĐ 2 |
| R4 | Lộ khóa ký cập nhật, đẩy mã độc lên hàng nghìn máy | Thấp | Rất cao | Khóa trong HSM hoặc kho khóa CI, nhiều khóa công khai, quay lui, đợt triển khai theo tỷ lệ, dừng khẩn cấp, chỉ tăng phiên bản. Trì hoãn cập nhật tự động đến GĐ 3 |
| R5 | Tải lên MySQL của Access Hub khi có sự kiện diện rộng | V | V | Gom nhóm group_down, seen theo lô, xử lý sự kiện theo lô, chỉ số hóa hợp lý, đọc từ replica cho trang tổng quan |
| R6 | Lệch đồng hồ giữa agent, collector, Access Hub làm sai for và cửa sổ thời gian | V | V | server_time trong mọi phản hồi, agent điều chỉnh, cảnh báo lệch, cửa sổ thời gian rộng có kiểm soát |
| R7 | License lộ qua argv, lịch sử shell, log CI | V | V | Cài qua biến môi trường, tệp, stdin, hạn ngắn, dùng một lần, gắn sẵn Server, tài liệu hướng dẫn rõ |
| R8 | Nhân bản máy từ image làm trùng danh tính agent | V | V | machine_id, phát hiện trùng, quy trình "sysprep" trong tài liệu (không ghi thông tin đăng nhập vào image) |
| R9 | Phụ thuộc quá nhiều thành phần (Redis, VM, NATS) làm tăng độ phức tạp vận hành | V | V | Bắt đầu tối giản ở GĐ 1 (1 tiến trình, Redis, VM), thêm thành phần khi số đo cho thấy cần, tài liệu và runbook |
| R10 | Giấy phép Redis thay đổi | V | Thấp | Dùng Valkey hoặc Redis tương thích, chỉ dùng lệnh cơ bản, đóng gói qua interface |
| R11 | Giới hạn VictoriaMetrics OSS (không downsampling, retention toàn cục) | Chắc chắn | V | Kiến trúc hai instance với vmalert (đã thiết kế), kiểm chứng lại khi triển khai, có phương án thay TSDB nhờ remote-write chuẩn |
| R12 | Đội ngũ chưa có kinh nghiệm Go | V | V | Chọn Go có chủ đích (ADR 0003), thời gian làm quen ở GĐ 0, review chặt, dùng thư viện đã kiểm chứng |
| R13 | Mở rộng phạm vi (log, lệnh từ xa) làm chậm MVP | V | V | GĐ 4 tách riêng và cần ADR, giữ MVP nhỏ |
| R14 | Agent gây ảnh hưởng hiệu năng máy chủ sản xuất | Thấp | C | Ngân sách tài nguyên (CPU 1%, RSS 50 MB), giới hạn hệ điều hành (systemd CPUQuota, MemoryMax, Windows job object), kiểm thử tài nguyên trong CI, công tắc tắt khẩn cấp |
| R15 | Access Hub lỗi làm mất cảnh báo | V | V | Outbox bền vững 24 giờ, thử lại, cảnh báo nội bộ trên outbox_oldest_age, kênh độc lập cho sự cố chính hệ thống |
| R16 | Đồng bộ registry sai làm agent hợp lệ bị từ chối hoặc agent thu hồi vẫn được nhận | Thấp | C | Đẩy thay đổi trực tiếp và đối soát định kỳ, cache âm ngắn, kiểm thử thu hồi 60 giây, theo dõi ahc_registry_lookups_total |
| R17 | Kích thước và độ phức tạp của mã dùng chung giữa hai repo (.proto) | Thấp | Thấp | Một chủ sở hữu, CI buf breaking, gói Go dùng chung hoặc sao chép có kiểm tra |
| R18 | Chi phí lưu trữ TSDB vượt dự kiến | V | V | Theo dõi dung lượng thực, điều chỉnh interval và retention, danh sách chỉ số trắng |
2. Câu hỏi mở (cần quyết định)
| # | Câu hỏi | Ảnh hưởng | Đề xuất tạm | Cần chốt trước |
|---|---|---|---|---|
| Q1 | Module path và nơi lưu mã của hai repo (GitHub, GitLab, nội bộ)? Tên tổ chức? | Đường dẫn import Go, CI, kho gói | ĐÃ CHỐT (2026-10-01): dùng hai module path đang lưu trên git, gitlab.com/thienpn2/access-hub-collector và gitlab.com/thienpn2/access-hub-agent, host git là GitLab | Đã đóng |
| Q2 | Ai lưu trữ kho gói (apt, yum) và tải bản cài (Windows MSI)? Tự lưu trữ hay dịch vụ ngoài? | Script cài, khả năng cập nhật, băng thông | HOÃN (2026-10-01): chủ dự án sẽ quyết sau, vì sản phẩm còn đang phát triển. Đến lúc đó dùng phương án tạm: GitHub Releases hoặc S3 tương thích, kho apt/yum ở GĐ 2 | Hoãn, cần chốt trước AGT-11 |
| Q3 | Chứng chỉ ký mã Windows (EV) và khóa GPG do ai giữ, mua ở đâu? | MSI không bị SmartScreen chặn, thời gian mua sắm kéo dài vài tuần | HOÃN (2026-10-01): chủ dự án sẽ mua sau. Lưu ý thời gian mua EV kéo dài vài tuần, cần chốt trước AGT-7 và AGT-11 | Hoãn, cần chốt trước AGT-7, AGT-11 |
| Q4 | Retention mặc định 30 ngày thô, 400 ngày rollup có phù hợp? Có yêu cầu theo công ty? | Dung lượng, kiến trúc TSDB | ĐÃ CHỐT: 30 ngày thô, 400 ngày rollup là trần toàn cụm; retention theo gói áp ở đọc (COL-10) và xóa vật lý theo ngày (Q17, ADR 0016) | GĐ 2 |
| Q5 | Chu kỳ mặc định 30 giây có đủ? Có nhu cầu 10 giây cho máy quan trọng? | Tải, dung lượng | 30 giây mặc định, cho phép 10 đến 300 giây theo cấu hình, tối thiểu 10 | GĐ 1 |
| Q6 | Tự tạo Server khi agent enroll mà không khớp được? | Kiểm kê sạch hay đầy rác | Mặc định tắt, bật theo công ty và tạo bản nháp cần duyệt | GĐ 1 |
| Q7 | Kiểm kê từ agent với IacDrift: xử lý thế nào cho máy có nguồn IaC? | Nguồn sự thật, luồng phê duyệt | Không tự ghi đè, hiển thị chênh lệch, áp dụng thủ công có audit, xem lại khi làm HUB-12 | GĐ 2 |
| Q8 | Windows Server 2012 R2 trở xuống có cần hỗ trợ? | Phải build Go 1.20, thêm chi phí kiểm thử | Không hỗ trợ mặc định, khảo sát số lượng thực tế trong khách hàng | GĐ 1 |
| Q9 | Cần hành động từ xa (khởi động lại dịch vụ) hay chỉ giám sát? | Bề mặt tấn công, mô hình cấp phép | Không có trong GĐ 1 đến 3 (ADR 0010) | GĐ 4 |
| Q10 | Agent có cần hỗ trợ container, Kubernetes? | Thu chỉ số cgroup, cách triển khai DaemonSet | Ngoài phạm vi | Sau GĐ 3 |
| Q11 | Quyền truy cập trang giám sát theo vai trò: ai xem, ai sửa luật? | Bộ quyền monitoring.* | Như 06 mục 3 | GĐ 1 |
| Q12 | Ứng dụng di động: nội bộ hay lên store? Cần đẩy alert? | HUB-18, kênh push (FCM, APNs) | HOÃN (2026-10-01): chủ dự án sẽ quyết sau khi xong phần phát triển các giai đoạn. Không chặn gì | Hoãn, sau các giai đoạn phát triển |
| Q13 | Nhiều vùng: có yêu cầu dữ liệu ở lại vùng địa lý? | Cần nhiều collector và TSDB theo vùng sớm hơn | Thiết kế đã hỗ trợ (đa collector), triển khai ở GĐ 3 | GĐ 2 cuối |
| Q14 | Tên gọi sản phẩm cho agent và collector trên giao diện, gói, dịch vụ | Tên gói, tên dịch vụ, tài liệu | accesshub-agent, accesshub-collector | GĐ 0 |
| Q15 | Có cần tích hợp SSO hoặc IP allowlist cho endpoint collector phía Access Hub? | Cấu hình mạng | IP allowlist tùy chọn | GĐ 1 |
| Q17 | Xóa vật lý theo gói khi retention của công ty giảm | Tuân thủ, cam kết hợp đồng, kiến trúc kho | ĐÃ CHỐT (01/10/2026, chính sách nền tảng): dữ liệu cũ hơn retention mới bị khóa chỉ đọc 30 ngày rồi xóa vật lý; trong 30 ngày đó khách tự export dữ liệu của mình qua Access Hub, không có khôi phục từ nền tảng và không có giai đoạn xóa mềm. Hiện thực bằng nhãn ngày và xóa theo ngày (ADR 0016), hợp đồng 03 mục 5.1, việc phía Access Hub 06 mục 4.6 | Đã đóng |
| Q16 | Vị trí thư mục dự án: hiện nằm trong thư mục người dùng vì /var/www thuộc root | Chuyển sang vị trí khác, đưa lên git | Người dùng chuyển hoặc cấp quyền | Ngay |
3. Giả định cần kiểm chứng sớm (spike)
| Spike | Câu hỏi | Kết quả cần |
|---|---|---|
| S1 | PDH English counters trên Windows 10, 11, Server 2016 đến 2022 với ngôn ngữ hiển thị khác | Danh sách bộ đếm dùng được, thời gian lấy mẫu, mức CPU |
| S2 | Một node all 4 vCPU chịu bao nhiêu agent với agentsim | Số đo cơ sở cho bảng cỡ tải |
| S3 | VictoriaMetrics OSS: xác nhận giới hạn downsampling, retention, hiệu năng vmalert recording rules cho 10 nghìn máy | Xác nhận hai instance là đủ |
| S4 | Binary Go tĩnh chạy trên CentOS 7 (kernel 3.10), Ubuntu 18.04 | Xác nhận chạy được, phiên bản Go tối thiểu |
| S5 | Kích thước và CPU của agent thực tế (gopsutil) so với ngân sách | Đạt NFR-09 hay cần tối ưu, cân nhắc tự đọc /proc |
| S6 | Scramble xuất OpenAPI đủ chất lượng để sinh mock và kiểm thử hợp đồng | Quy trình tạo mock |
| S7 | Đo tải MySQL của Access Hub với seen và events mô phỏng | Xác nhận thiết kế gom lô |
4. Nợ thiết kế đã ghi nhận
- Chưa có thiết kế chi tiết cho giao diện quản trị collector và trang phát hành agent (thuộc HUB-15, HUB-16).
- Chưa quyết định định dạng ghim CA riêng và quy trình xoay chứng chỉ endpoint agent.
- Chưa thiết kế bộ lọc chỉ số theo danh sách trắng do người dùng mở rộng (chỉ số tùy chỉnh). Chỉ số tùy chỉnh được xem xét sau GĐ 2.
- Chưa có mô hình chi phí hạ tầng theo quy mô (nên tạo sau spike S2, S3).