Skip to content

화상 회의 구현을 위한 WebRTC 연결 방식 선정

Chanhee Kim edited this page Dec 5, 2021 · 6 revisions

고민

WebRTC를 이용해 화상 회의를 구현하기 전 WebRTC 연결 방식 중 대표적인 방식인 Mesh Networking(P2P), Selective Forwarding Unit(SFU), Multipoint Control Unit(MCU) 중 어떤 방식이 저희 프로젝트에 가장 적합할지 선택해야 했습니다. 시간적인 제약이 있기에 한번 결정하게 되면 다른 방식으로 변경하기 어려웠기에 각 방식의 장단점에 대해 알아보고 신중하게 결정하기로 하였습니다.

해결 과정

각 방식의 특징과 장단점은 다음과 같았습니다.

Mesh Networking

각 클라이언트가 서로 P2P 방식으로 직접 연결해 미디어 스트림을 주고 받습니다.

  • 장점 : 서버는 연결을 위한 정보를 전달하는 역할만 수행하기 때문에 서버에 가해지는 부하가 적습니다. 클라이언트끼리 직접 미디어 스트림을 전달하기 때문에 실시간성이 높습니다.(지연시간이 적다)
  • 단점 : 클라이언트가 부담해야하는 트래픽이 굉장히 크기 때문에 클라이언트의 하드웨어와 네트워크에 가해지는 부하가 큽니다.

Selective Forwarding Unit(SFU)

각 클라이언트는 미디어 스트림을 서버에 전달하고, 서버는 전달받은 미디어 스트림을 가공하지 않고 그대로 다른 클라이언트들에게 전달해줍니다.

  • 장점 : 클라이언트는 Mesh 방식보다 더 적은 연결을 통해 미디어 스트림을 주고 받을 수 있어 부하가 좀 더 적습니다. MCU 방식과 달리 미디어 스트림을 가공하지 않아 서버 부하가 비교적 적습니다.
  • 단점 : 서버가 미디어 스트림을 전달 받아야 하기 때문에 Mesh 방식보다 부하가 큽니다.

Multipoint Control Unit(MCU)

각 클라이언트의 미디어 스트림을 서버에서 믹싱해 다른 클라이언트에게 전달하는 방식입니다.

  • 장점 : 클라이언트들의 미디어 스트림을 가공(믹싱, 압축)해 전달하기 때문에 클라이언트에 가해지는 하드웨어, 네트워크 부하가 크게 줄어듭니다.
  • 단점 : 미디어 스트림을 가공해야 하기 때문에 서버에 가해지는 부하가 매우 큽니다.

저희 프로젝트의 경우 개발할 수 있는 시간이 많지 않고, 사용하는 네이버 클라우드 서버 인스턴스의 성능이 충분하지 않아 구현이 비교적 간단하고, 서버에 요구되는 성능이 가장 적은 Mesh Networking 방식으로 구현하기로 결정하였습니다. 화상 회의 채널당 인원수를 적당한 수로 제한한다면 SFU 방식으로 구현할 때 보다 더 많은 사용자가 적당한 품질로 화상 회의 기능을 사용할 수 있을 것이라 생각했습니다.

Clone this wiki locally