SERIESPonsLink 알고리즘 노트
[PonsLink] PonsCast가 화면 공유 대신 DataChannel을 택한 이유
·3 min read·116 views
PonsLinkPonsCastTradeoffScreenShareSFUDataChannelP2P
PonsCast를 만들며 화면 공유를 먼저 떠올린 것은 자연스러웠다. 화면 공유는 상대가 무엇을 보는지 바로 맞출 수 있다. 하지만 우리가 해결하려던 문제는 같은 화면을 복제하는 일이 아니었다. 각자가 가진 파일을 상대의 언어와 시간에 맞춰 함께 읽는 일이었다.

화면 공유로는 남는 것
화면 공유는 쉬운 답처럼 보였지만 파일의 구조와 상태를 직접 다루기 어렵다. 보는 사람은 화면을 받지만 파일을 함께 읽고 조작하는 흐름과는 거리가 있다. 네트워크가 흔들리면 화면 전체가 영향을 받고 무엇을 기준으로 다시 맞출지도 분명하지 않다.

DataChannel을 선택한 이유
DataChannel은 파일과 재생 상태를 제품이 직접 다룰 여지를 준다. 전송 순서와 수신 상태를 확인하고 필요한 만큼 기다리게 만들 수 있다. 백프레셔와 지터 버퍼 같은 책임도 함께 떠안아야 하지만 PonsCast의 목적에는 이 선택이 더 가까웠다.
화면 공유가 틀렸다는 뜻은 아니다. 화면을 보여 주는 것이 목적이면 화면 공유가 맞을 수 있다. 우리에게는 두 사람이 같은 파일을 같은 시간에 읽는 흐름이 목적이었기 때문에 데이터의 의미와 상태를 직접 관리하는 편을 택했다.
마치며
DataChannel을 택한 이유는 화면을 덜 보내기 위해서가 아니었다. 무엇을 함께 보고 있는지 제품이 알고, 흔들릴 때 다시 맞출 수 있어야 했기 때문이다.