<aside> 💡 유저 간의 화상 통화 기능 구현을 위해 WebRTC를 이용했고, 그 안에서 어떤 통신 방식을 적용할지 고민한 과정과 구현한 작업물에 대한 성능 테스트를 진행해보았어요.
</aside>
게임에 참여한 사람들끼리 화상 통화가 가능한 환경을 만들 목적으로 WebRTC 기술을 적용했어요.
WebRTC는 서버를 통하지 않고 브라우저-브라우저 간의 데이터 공유가 이루어지기 때문에 빠른 통신이 가능한 장점이 있어 게임 서비스 구현에 적합했어요.
화상 통화 기능을 구현하기에 앞서 WebRTC의 개념과 통신 원리에 대해 공부할 필요가 있었어요.
📕 WebRTC의 이해 by @JIHYUN KIM
webRTC는 세 가지 구현 방식으로 구분할 수 있어요.
WebRTC는 기본적으로 P2P 프로토콜로, 더 나은 성능을 위해서는 SFU나 MCU 기반 아키텍처를 사용해요. 각각의 장단점이 분명히 존재하지만, MCU 서버는 P2P와 SFU에서 발생하는 트래픽은 줄일 수 있으나 미디어스트림을 합치는 동작에서 서버에서 많은 자원을 소모하게 돼요. 서버의 많은 비용 부담이 있는 MCU 방식을 제외하고 Mesh와 SFU 사이에서 구현방식을 결정하기로 했고, 우리 서비스에 맞는 통신 방식을 적용하기에 앞서 Mesh 방식을 먼저 구현해보기로 했어요. SFU는 P2P에서 다수의 사용자를 다루기 힘든 부분을 커버할 수 있는 장점이 있어요. 그렇다면 접속할 수 있는 최대 클라이언트 수가 8명인 우리 서비스에서 Mesh를 이용할 때 클라이언트의 과부하가 발생하게 될까?라는 궁금증이 생겨 Mesh 방식으로 먼저 구현해보고, 만약 무리가 있다고 판단되면 SFU 방식을 이용해보는 것이 좋겠다고 판단했어요.