Vận hành tin cậy ở quy mô 500.000 người dùng
Đang thực hiệnHệ thống chịu được tải mục tiêu, tự báo khi hỏng trước lúc người dùng than, và khi có sự cố thì chặn thiệt hại trong vòng một giờ.
Kết quả cần đạt
- Đạt 99,9% thời gian hoạt động cho Chat và Task, 99,95% cho Bán hàng
- Phát hiện sự cố từ cảnh báo tự động trước khi người dùng báo, ít nhất 80% số lần
- Thời gian từ lúc bắt đầu sự cố tới lúc chặn được thiệt hại dưới 1 giờ
- Chịu được tải gấp đôi mục tiêu trong bài test tải định kỳ
Vì sao tách thành mục tiêu riêng
Chất lượng sản phẩm nói về phần mềm đúng. Mục tiêu này nói về hệ thống đứng vững — hai việc khác nhau và hỏng theo hai cách khác nhau.
Code có thể đúng hoàn toàn mà hệ thống vẫn sập vì 50.000 người cùng mở app lúc 8 giờ sáng, vì một truy vấn thiếu index chạy chậm dần theo lượng dữ liệu, hay vì một migration khoá bảng trong giờ cao điểm. Ở quy mô nhỏ, những lỗi này không xuất hiện. Ở 500.000 người dùng, chúng là loại lỗi thường gặp nhất.
Ngân sách lỗi
Mục tiêu về độ sẵn sàng được phát biểu thành thời gian được phép hỏng, để nó là một con số có thể tiêu và có thể hết:
| Module | Mục tiêu | Được phép hỏng mỗi tháng |
|---|---|---|
| Chat | 99,9% | 43 phút |
| Task | 99,9% | 43 phút |
| Bán hàng | 99,95% | 22 phút |
Luật: hết ngân sách trong tháng thì dừng phát hành tính năng mới, toàn bộ sức của đội chuyển sang phần ổn định cho tới đầu tháng sau. Không xin ngoại lệ, vì ngoại lệ được cấp một lần thì tháng nào cũng sẽ có lý do để xin.
Ngân sách còn dư cũng là thông tin: dư nhiều liên tục nghĩa là đội đang quá thận trọng và có thể đi nhanh hơn.
Ba lớp phòng thủ
| Lớp | Mục đích | Công cụ chính |
|---|---|---|
| Ngăn xảy ra | Không để lỗi ra tới production | Quality gate, test tải, review, performance budget |
| Giới hạn thiệt hại | Nếu lọt thì chỉ chạm ít người | Bật dần theo tỷ lệ, feature flag, giới hạn tần suất |
| Hồi phục nhanh | Đã hỏng thì dừng chảy máu | Rollback, kill switch, chế độ bảo trì, quy trình trực |
Không lớp nào thay được lớp nào. Đội chỉ đầu tư vào lớp một sẽ có sự cố dài; đội chỉ đầu tư vào lớp ba sẽ có sự cố liên tục.
Đo bằng gì
| Chỉ số | Mục tiêu | Nguồn |
|---|---|---|
| Thời gian hoạt động theo module | Xem bảng ngân sách | Giám sát hạ tầng |
| Tỷ lệ sự cố phát hiện bởi cảnh báo, không phải bởi người dùng | ≥ 80% | Sổ sự cố |
| Thời gian tới lúc chặn được thiệt hại | < 1 giờ | Sổ sự cố |
| Thời gian phản hồi P95 của các API chính | Theo performance budget | Giám sát hạ tầng |
| Số cảnh báo giả mỗi tuần | < 3 | Hệ thống cảnh báo |
| Kết quả test tải định kỳ | Đạt ở mức gấp đôi tải mục tiêu | Báo cáo test tải |
Dòng cảnh báo giả không phải chỉ số phụ. Đội bị đánh thức vì chuyện không đâu ba lần một tuần sẽ bắt đầu bỏ qua cảnh báo, và lần thứ tư là lần thật.
Tải mục tiêu
| Hạng mục | Mức phải chịu được |
|---|---|
| Người dùng đồng thời | 50.000 |
| Kết nối thời gian thực đồng thời | 50.000 |
| Tin nhắn mỗi giây | 2.000 |
| Yêu cầu API mỗi giây | 5.000 |
| Đơn hàng mỗi phút | 500 |
Test ở gấp đôi các con số này, và quan tâm tới việc hệ thống gãy thế nào chứ không chỉ gãy ở đâu. Chi tiết ở test tải và quy mô.
Việc cần làm để đạt
- Dựng dashboard kỹ thuật và dashboard nghiệp vụ, tách số liệu theo phiên bản.
- Đặt cảnh báo theo ngưỡng đọc ra được số người, mỗi cảnh báo có đúng một người nhận.
- Lập lịch trực xoay vòng, có người dự phòng, có bù nghỉ.
- Diễn tập sự cố một lần mỗi quý — bao gồm cả diễn tập rollback thật.
- Chạy test tải trước mỗi mốc tăng trưởng lớn, không chờ tới lúc tăng rồi mới đo.
- Rà lại các truy vấn và migration theo danh sách ở quy mô 500.000 người dùng.

