노트콘웨이의 법칙
Conway's Law
설계#architecture · 연결된 개념 9개
쉽게 말하면
콘웨이의 법칙은 조직이 대화하는 모양대로 시스템이 생긴다는 말이에요. 세 팀이 함께 만들면 팀끼리 말이 잘 안 통하는 자리마다 선이 그어져, 결과물도 큰 덩어리 셋으로 나뉘기 쉬워요.
비유가 깨지는 곳 그냥 따라오는 결과로만 볼 필요는 없어요. 원하는 아키텍처가 있으면 팀 구조부터 그 모양으로 바꾸는 역 콘웨이 전략을 쓸 수 있고, 집단 코드 소유로 이 경향을 누그러뜨리기도 해요.
조직은 자신의 의사소통 구조를 그대로 닮은 시스템을 설계한다는 법칙. 멜빈 콘웨이(Melvin Conway)가 1968년에 관찰했다. 팀이 셋이면 시스템도 큰 덩어리 셋으로 나뉘는 경향이 있다.
- 팀 사이 소통이 어려운 곳에 시스템 경계와 인터페이스가 생긴다. 반대로 한 팀이 맡은 영역은 내부 결합이 강해지기 쉽다
- 역 콘웨이 전략(Inverse Conway Maneuver): 원하는 아키텍처가 있다면 팀 구조부터 그 모양으로 바꾼다
- 마이크로서비스를 도입할 때 서비스 경계와 팀 경계를 맞추면 효과적이다. 도메인 경계를 기준으로 나누는 바운디드 컨텍스트와 잘 맞는다
- 마이크로 프런트엔드나 모노레포 선택도 팀 구조와 떼어 생각하기 어렵다
- 팀 경계와 무관하게 누구나 코드를 고칠 수 있게 하는 집단 코드 소유는 이 경향을 완화하는 방법 중 하나다
출처: Laws of Software Engineering: Conway's Law · How Do Committees Invent? 멜빈 콘웨이
연결된 개념
이 노트를 가리키는 문서
뜻이 가까운 노트
- 결합도
한 요소를 바꿀 때 다른 요소도 바꿔야 하는 관계. 결합도는 언제나 "어떤 변경에 대해" 결합되어 있는지를 함께 말해야 의미가 있다. 같은 두 모듈도 어떤 변경에는 묶여 있고 어떤 변경에는 독립적일 수 있다.
- 골의 법칙
동작하는 복잡한 시스템은 언제나 동작하던 단순한 시스템에서 진화한 것이라는 법칙. 처음부터 복잡하게 설계한 시스템은 동작하지 않고, 고쳐서 동작하게 만들 수도 없다는 경고가 뒤따른다. 존 골(John Gall)이 1975년 『Systemantics』에서 말했다.
- 구조와 동작, 옵션의 가치
켄트 벡이 정리 시점을 판단하려고 꺼내는 경제학 틀. 소프트웨어는 두 가지 가치를 만든다. 오늘 하는 일(동작)과, 내일 새로 할 수 있게 되는 일(옵션)이다. 구조는 동작을 바꾸지 않지만 옵션을 만든다.
- 『켄트 벡의 Tidy First?』 개요
켄트 벡이 "코드를 바꾸기 전에 먼저 정리해야 할까?"라는 질문 하나를 붙잡고 쓴 얇은 책. 아주 작은 구조 변경인 정리의 기법, 언제 정리할지의 관리, 왜 그런지의 이론을 차례로 다룬다.
- DRY 원칙
"모든 지식은 시스템 안에서 단일하고 명확하며 권위 있는 표현을 하나만 가져야 한다." 앤디 헌트와 데이브 토머스가 『실용주의 프로그래머』에서 정리한 원칙이다. 코드 줄의 반복만이 아니라 규칙·데이터·지식의 중복을 말한다.