Ý chính: Độ tin cậy của hệ thống phân tán được kiểm chứng bằng cách chủ động phá các giả định trong phạm vi an toàn.
Thuật ngữ trong bài: Contract Test: kiểm tra cam kết giữa các dịch vụ; Chaos Engineering: chủ động tạo sự cố có kiểm soát; canary: thử phiên bản mới trên một phần nhỏ lưu lượng.
Bài toán thực tế
Môi trường kiểm thử không giống hoàn toàn môi trường thật. Mock có thể che lỗi giao thức, còn bộ kiểm thử đầu cuối dễ chậm và thiếu ổn định. Nhiều lỗi chỉ xuất hiện khi có thử lại, chậm mạng hoặc hai phiên bản chạy đồng thời.
Không môi trường kiểm thử nào mô phỏng hoàn toàn production. Chiến lược tốt kết hợp kiểm thử xác định ở lớp thấp, Contract Test tại ranh giới dịch vụ, chủ động tạo lỗi có kiểm soát và canary trên cấu trúc triển khai thật.
Chaos Engineering không phải phá ngẫu nhiên. Mỗi thử nghiệm cần giả thuyết, phạm vi ảnh hưởng, điều kiện dừng và một câu hỏi kỹ thuật cụ thể cần trả lời.
Thiết kế và triển khai
- Kiểm thử các lần chuyển trạng thái và điều kiện bất biến bằng những bài kiểm thử có kết quả xác định.
- Xác minh Contract Test của bên cung cấp và consumer bằng mẫu dữ liệu tuần tự hóa thật.
- Chủ động tạo lỗi ở môi trường thử nghiệm và canary, rồi đánh giá bằng SLO phản ánh trải nghiệm khách hàng.
Mã minh họa: Thử nghiệm Chaos có kiểm soát
hypothesis: checkout SLO remains healthy when one payment replica fails
scope: 5% internal canary traffic
inject: terminate one replica for 10 minutes
abort: error budget burn > threshold or queue age > limit
observe: retries, bulkhead, p99, duplicate charges
record: result, gaps, owner actionsChạy thử nghiệm bằng automation đã rà soát để loại lỗi, phạm vi ảnh hưởng và điều kiện tự động dừng có thể lặp lại chính xác.
Rủi ro cần tính trước
- Mock chấp nhận một trường dữ liệu mà bên cung cấp thật từ chối.
- Việc tự động chạy lại che một lỗi tranh chấp thay vì báo kiểm thử thiếu ổn định.
- Thử nghiệm Chaos loại bớt năng lực trong lúc hệ thống đang có một sự cố khác.
Nên theo dõi gì?
| Tín hiệu | Điều tín hiệu cho biết |
|---|---|
| Tỷ lệ kiểm thử thiếu ổn định và chỉ đạt sau khi chạy lại | Đo độ đáng tin của chính bộ kiểm thử. |
| Lỗi tương thích Contract | Phát hiện sai lệch tích hợp trước khi triển khai. |
| Chênh lệch SLO của canary và thời gian quay lui | Đo hiệu quả của quá trình kiểm chứng trên production. |
Đưa vào production từng bước
Kiểm kê các hành trình người dùng quan trọng và ánh xạ từng rủi ro vào lớp kiểm thử phù hợp. Ổn định các kiểm thử hay lỗi ngẫu nhiên trước, bắt đầu Chaos ở luồng nội bộ chỉ đọc, rồi mới mở canary nhỏ có cơ chế tự động dừng và SLO rõ.
Điều cần nhớ
Không môi trường kiểm thử nào chứng minh được production; chiến lược nhiều lớp giúp mỗi thay đổi trên production nhỏ, quan sát được và dễ đảo ngược.
