toycrane
toycrane

착한 사람을 뽑아도 교착은 사라지지 않는다

골목길의 교착

좁은 골목길에서 맞은편 차와 딱 마주쳤습니다. 둘 중 하나가 뒤로 빠져야 풀립니다. 그런데 아무도 안 움직입니다.

이상한 일이 아닙니다. 각자 따져 보면 버티는 쪽이 이득이니까요. 뒤로 빠지는 사람은 시간과 수고를 들이고, 그 덕은 상대가 봅니다. 그러니 상대가 물러나길 기다리는 게 나로서는 가장 나은 선택입니다. 문제는 두 사람이 똑같이 이렇게 따진다는 데 있습니다. 저마다 영리하게 판단했을 뿐인데, 그게 모여 둘 다 손해 보는 교착이 됩니다.

여기까지 보면 답이 뻔해 보입니다. 이기심이 문제구나, 한 명이라도 착했으면 풀렸겠구나. 그런데 반대로 상상해 봅시다. 둘 다 착해서 같이 양보하면 어떻게 될까요. 두 차가 함께 뒤로 빠집니다. 서로 물러난 걸 보고 함께 앞으로 갑니다. 그리고 다시 마주칩니다. 길에서 마주친 두 사람이 자꾸 같은 쪽으로 비켜서는 그 어색한 춤을, 차로 추는 셈입니다.

둘 다 이기적이어도 막히고, 둘 다 양보해도 막힙니다. 딱 한 명만 양보해야 풀리는 구조라서 그렇습니다. 그러니 원인은 사람 됨됨이가 아닙니다. 두 운전자가 같은 자리에서 같은 계산을 하고 같은 행동을 한다는 것, 이 대칭이 문제입니다. 교착을 푸는 건 착한 마음이 아니라 대칭을 깨는 무언가입니다.

와이파이는 어떻게 풀었나

똑같은 구조의 문제를 기계는 이렇게 풉니다. 와이파이에 연결된 기기들은 하나의 채널을 함께 씁니다. 두 기기가 동시에 신호를 보내면 서로 겹쳐 둘 다 깨집니다. 그래서 기기는 보내기 전에 채널을 먼저 들어 봅니다. 조용하면 보냅니다. 그런데 두 기기가 동시에 “조용하네” 하고 같이 보내면 어떻게 될까요. 부딪칩니다. 골목길에서 두 차가 동시에 앞으로 가는 것과 똑같습니다.

단순한 방법은 이겁니다. “부딪치면 잠깐 기다렸다 다시 보낸다.” 여기에 함정이 있습니다. 둘 다 똑같이 1초를 기다리면 정확히 1초 뒤에 또 같이 보내고, 또 부딪칩니다. 영원히요. 같은 상황에서 같은 규칙을 따르는 한, 대칭은 저절로 깨지지 않습니다.

그래서 기계는 주사위를 던집니다. 부딪치면 각자 무작위로 정한 시간만큼 기다렸다 다시 보냅니다. A가 3, B가 7을 뽑았다면 A가 먼저 보내고, B는 채널이 차 있는 걸 듣고 차례를 기다립니다. 랜덤 백오프(random backoff)라고 부르는 이 방식의 핵심은 무작위로 대칭을 깨는 것입니다. 누가 양보할지 아무도 정해 주지 않았는데, 운이 역할을 나눠 줍니다.

여기에는 착한 마음도 없고 서로 정한 약속도 없습니다. 기기가 착해진 것도 아닙니다. 그저 같은 값이 잘 안 나오는 주사위 하나를 시스템에 넣었을 뿐입니다. 그걸로 충분했습니다.

회의실의 골목길

조직에서도 같은 교착이 매일 일어납니다. 두 팀이 서로 “저쪽이 먼저 정해서 넘겨줘야 우리가 시작하죠”라며 기다립니다. 각자로서는 이치에 맞습니다. 먼저 움직이는 쪽이 수고를 떠안으니까요. 반대쪽 실패도 흔합니다. 다들 예의 바르게 의견을 미루다가 아무도 결정하지 않는 회의 말입니다. 버티다 막히고 양보하다 막히는, 골목길에서 본 두 실패가 회의실에서 똑같이 되풀이됩니다.

원인이 같으니 푸는 법도 같습니다. 대칭을 깨는 장치를 구조에 심으면 됩니다.

첫 번째 장치는 대칭을 깨는 규칙, 곧 책임의 주인을 분명히 하는 것입니다. 애플의 DRI(Directly Responsible Individual)는 모든 일마다 직접 책임지는 사람 한 명을 꼭 정해 두는 방식입니다. 핵심은 책임을 팀이 아니라 한 사람에게 둔다는 데 있습니다. “마케팅팀이 맡는다”고 하면 팀 안에서 다시 골목길 교착이 생기지만, “이 건은 김○○“라고 하면 미룰 데가 없어집니다. 여럿이 맡으면 오히려 아무도 안 나서는데, 그걸 구조로 막습니다.

두 번째 장치는 논쟁의 끝을 정해 두는 것입니다. 아마존의 disagree and commit은 충분히 논쟁하되, 그래도 뜻이 안 모이면 책임자가 정하고, 반대하던 사람도 결정이 나면 온 힘을 다해 따른다는 약속입니다. 이 규칙이 없으면 조직은 나쁜 두 상태에 빠집니다. 모두가 찬성할 때까지 끝없이 토론하거나, 회의에서는 동의하는 척하고 뒤에서 슬쩍 발을 빼거나. 반대를 억누르는 게 아니라, 반대를 적어 둔 채로 앞으로 갑니다. 논쟁이 끝나는 지점을 미리 정해 둔, 교착을 푸는 장치입니다.

온콜 당번이나 회의 진행자를 돌아가며 맡는 방식도 같은 이치입니다. 누가 수고할지를 순서와 운이 정해 주니, 자존심 상할 일 없이 대칭이 깨집니다. 조직이 던지는 주사위인 셈입니다.

대칭은 어디서 깨지는가

교착을 만나면 우리는 먼저 사람을 탓합니다. 저 팀은 왜 저렇게 안 도와주지. 쟤는 왜 양보를 안 하지. 그래서 답도 사람에서 찾습니다. 더 잘 협조하는 사람을 뽑자, 팀워크 교육을 하자.

그러나 골목길이 보여 주듯, 교착은 사람 됨됨이 문제가 아니라 구조가 대칭이라 생기는 문제입니다. 좋은 사람이 모여도 역할이 대칭이면 막히고, 평범한 기기라도 주사위 하나면 뚫립니다. 착한 사람을 뽑는다고 교착이 사라지지는 않습니다. 대칭을 깨는 장치, 곧 책임의 주인, 논쟁의 끝, 돌아가며 맡기 같은 규칙을 시스템에 심어야 사라집니다.

그러니 다음에 교착을 만나면 질문을 바꿔 봅시다. “누가 잘못했나”가 아니라, “이 구조에서 대칭은 어디서 깨지나.”