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.