IEEE Spectrum이 실은 시 ‘Poetry for Engineers: Safe Distance’는 구리선이 아니라 광섬유를 통과하는 빛, 그 빛이 바다 밑 케이블을 따라 흐르는 모습을 노래한다. 시는 ‘네트워크’라는 단어를 꺼내며, 지연이 숨결을 대체하는 순간을 ‘안전한 거리’라고 부른다. 바다 아래에서 노드는 경로를 기억하고, 패킷은 몸 없이 악수한다. 화면 너머로 사람이 보이지만 실제로는 광케이블을 흐르는 신호 조각일 뿐이다. 나는 이 시를 읽으며 우리가 P2P 시스템을 만들 때 외면하는 물리 계층을 떠올렸다.
P2P의 약속은 중개자를 거치지 않고 두 노드가 직접 만나는 것이다. 하지만 두 노드 사이에 대서양이 있으면 패킷은 해저 광케이블을 따라가야 하고, 그 시간은 최소 왕복 지연으로 남는다. 시에서 ‘동기적이지만 떨어져 있다’고 한 표현은 WebRTC(웹브라우저 간 실시간 통신 기술) 화상 통화의 현실과 닿아 있다. 화면은 동기화된 것처럼 보이지만, 실제로는 지연을 감추기 위해 버퍼를 쌓고, 음성은 조금씩 밀린다. 오버레이 네트워크(물리적 연결 위에 만든 가상 연결망)가 아무리 똑똑해도 해저 케이블의 경로와 속도까지 바꾸지는 못한다. P2P는 물리 계층에서 도망칠 수 없고, 그래서 지연은 위상 변화로 다시 나타난다.
PonsLink와 PonsWarp를 초기 MVP로 만들면서 나는 ‘직접 연결이 무조건 좋다’는 생각을 계속 의심했다. 직접 연결은 빠르지만 NAT(네트워크 주소 변환)나 방화벽 앞에서는 불안정하고, 중간 릴레이를 쓰면 안정적이지만 지연이 늘어난다. 시의 ‘안전한 거리’는 우리가 선택한 릴레이 구조와 닮았다. 두 노드가 직접 만났을 때 무슨 일이 벌어질지 모르는 순간, 우리는 중간 노드로 둘을 보호한다. 초기 제품에서는 안정성이 최우선이었고, 그래서 ‘안전한 거리’를 유지하는 게 맞았다. 다만 그 선택을 영원한 설계로 굳히면, P2P 고유의 직접성이라는 가치가 사라진다. 내 판단은 단순하다. 안전한 거리를 없애는 것이 아니라, 사용자가 그 거리를 스스로 선택할 수 있게 만드는 것이 제품의 몫이다.
시의 마지막은 ‘길을 잃으면 오류와 노이즈와 희망을 담아 모든 것을 다시 보낸다’고 말한다. 이것은 신뢰할 수 없는 네트워크 위에서 메시지를 되풀이해서 보내는 우리의 일상과 같다. TCP는 패킷을 재전송하고, WebRTC는 핸드셰이크를 다시 시도하고, 분산 해시테이블은 죽은 노드를 우회한다. 모두 ‘다시 보내기’다. P2P 시스템을 운영한다는 것은 결국 재전송 정책을 설계하는 일이다. 언제 다시 보낼지, 언제 포기할지, 언제 사용자에게 오류를 알릴지. ‘안전한 거리’가 보호막이라면, 재전송은 그 보호막이 깨졌을 때 다시 손을 내미는 행위다. 나는 오류를 숨기는 시스템일수록 고장이 커진다고 생각한다. 거리를 만드는 기술만큼, 거리를 다시 좁히는 기술도 중요하다.
댓글