Minh họa cho Định luật Hyrum
Law #3 Kiến trúc

Định luật Hyrum

Hyrum's Law

Nếu một hành vi của hệ thống có thể quan sát được, sớm muộn cũng sẽ có người phụ thuộc vào nó.

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

Tổng quan

Hyrum nói rằng khi API hoặc hệ thống có đủ nhiều người dùng, mọi hành vi quan sát được đều có thể trở thành dependency. Hợp đồng thực tế không chỉ là tài liệu chính thức mà còn là cách hệ thống đang cư xử ngoài đời.

Ý chính

  • Bug, timing, format lỗi, thứ tự trả về hoặc thông báo lỗi đều có thể bị người dùng dựa vào.
  • Một thay đổi tưởng là nội bộ vẫn có thể phá workflow của ai đó nếu hành vi đó từng quan sát được.
  • Backward compatibility cần nhìn rộng hơn spec, bao gồm telemetry, migration path và thông báo thay đổi.

Ví dụ từ nguồn

Windows từng phải giữ lại hoặc mô phỏng một số hành vi không chính thức vì ứng dụng bên thứ ba đã phụ thuộc vào chúng.

Một thư viện ghi rằng danh sách trả về không có thứ tự, nhưng nếu lâu nay nó luôn trả theo alphabet, người dùng có thể âm thầm phụ thuộc vào thứ tự đó.

Nguồn gốc

Luật này được đặt theo Hyrum Wright, kỹ sư tại Google, người quan sát hiện tượng này khoảng năm 2011-2012 trong các thư viện lõi được dùng rất rộng.

Lưu ý khi áp dụng

Khi sửa API đã có người dùng, hãy xem log, test consumer và migration guide như một phần của thiết kế, không phải việc phụ.

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