Minh họa cho Định luật Conway
Law #1 Đội ngũ

Định luật Conway

Conway's Law

Cấu trúc hệ thống thường phản chiếu cách các nhóm giao tiếp và chia trách nhiệm với nhau.

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

Tổng quan

Conway mô tả hiện tượng kiến trúc phần mềm thường phản chiếu cấu trúc giao tiếp của tổ chức tạo ra nó. Nếu đội ngũ chia theo silo frontend, backend, database, hệ thống cũng dễ thành các tầng giao tiếp khó khăn tương tự.

Ý chính

  • Kiến trúc không tách rời tổ chức; đường giao tiếp của team thường trở thành đường biên của module hoặc service.
  • Muốn có kiến trúc khác, đôi khi phải đổi cách chia team trước, không chỉ đổi sơ đồ kỹ thuật.
  • Inverse Conway Maneuver là cách cố ý thiết kế tổ chức để kéo hệ thống tiến hóa theo kiến trúc mong muốn.

Ví dụ từ nguồn

Một công ty chia riêng frontend, backend và database thường tạo ra hệ thống ba tầng, nơi mỗi thay đổi feature phải đi qua nhiều đầu mối và nhiều vòng tích hợp.

Mô hình two-pizza team của Amazon là ví dụ ngược lại: team nhỏ sở hữu service rõ ràng, nên kiến trúc cũng thiên về service có API boundary cụ thể.

Nguồn gốc

Melvin Conway nêu ý tưởng này trong bài "How Do Committees Invent?" năm 1967, sau đó được Fred Brooks gọi là Conway's Law trong The Mythical Man-Month.

Lưu ý khi áp dụng

Khi refactor kiến trúc liên tục vướng handoff, hãy kiểm tra ownership và kênh giao tiếp trước khi thêm abstraction kỹ thuật.

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