Minh họa cho Định luật Hệ quả ngoài ý muốn
Law #13 Kiến trúc

Định luật Hệ quả ngoài ý muốn

Law of Unintended Consequences

Mỗi thay đổi trong hệ thống phức tạp đều có thể tạo ra tác động phụ ở nơi bạn chưa nghĩ tới.

Nguồn tham khảo: Laws of Software Engineering

Tổng quan

Luật hệ quả ngoài ý muốn nhắc rằng thay đổi trong hệ thống phức tạp có thể tạo ra kết quả không được dự đoán. Kết quả đó có thể tốt, xấu hoặc thậm chí làm vấn đề ban đầu tệ hơn.

Ý chính

  • Không thể thấy hết tác động của thay đổi lớn chỉ bằng phân tích trên giấy.
  • Side effect thường xuất hiện ở nơi liên quan gián tiếp: quota, log, cache, chi phí vận hành hoặc hành vi người dùng.
  • Rollout nhỏ, monitoring và rollback plan là cách giảm thiệt hại khi hệ thống phản ứng bất ngờ.

Ví dụ từ nguồn

Bật logging chi tiết để debug có thể làm đầy disk và gây crash, trái ngược với mục tiêu tăng ổn định.

Tối ưu một chỉ số latency có thể làm tăng retry và khiến downstream chịu tải lớn hơn.

Nguồn gốc

Khái niệm này được nhà xã hội học Robert K. Merton phổ biến trong thế kỷ 20 và được mượn vào phần mềm như một cách nhìn hệ thống phức tạp.

Lưu ý khi áp dụng

Hãy thiết kế change management như một thí nghiệm có đo lường, không phải một lần deploy rồi hy vọng mọi thứ đúng như dự tính.

← Quay lại danh sách 56 luật