Skip to content
This repository has been archived by the owner on May 1, 2023. It is now read-only.

미디어 서버 선택하기

Heedong Kim edited this page Dec 31, 2021 · 3 revisions
  • updated at : 2021.12.31.
  • updated by : 희동

미디어 서버 선택하기

어떤 미디어 서버를 선택할 것인가?

  • 여러 가지 오픈 소스 중에 활용해볼만한 미디어 서버는 크게 3가지였다.
    • 비용을 고려할 때 무료로 활용할 수 있는 오픈 소스 중에서 선택
Kurento Mediasoup Janus
kurneto mediasoup janus
  • 이 중에서 어떤 기준에 의해 미디어 서버를 선택할 것인가?
    • 성능
    • 지원 언어
    • 러닝 커브 및 참고 자료
    • 설치 방법

성능

  • 모든 미디어 서버에 대해 직접 설치하고 테스팅을 진행할 수 있다면 좋겠지만 시간적 제약이 있기 때문에 조사를 하던 중 2018년 미디어 서버들에 대해 테스팅을 진행한 자료를 찾아볼 수 있었다.
  • 앞단에 동일한 환경을 구성하고 각 미디어 서버에 대해서 500명의 사용자를 초대(한 방에 7명)해서 테스팅을 진행
    • Jitsi Meet (JVB version 0.1.1077),
    • Janus Gateway (version 0.4.3) with its video room plugin,
    • Medooze (version 0.32.0) SFU app,
    • Kurento (from OpenVidu Docker container, Kurento Media Server version 6.7.0),
    • Mediasoup (version 2.2.3)

Bit rates

bitrates

Round trip time

roundtirptime

Image Quality

imagequality

비교

Kurento

  • 다른 미디어 서버와 비교했을 때 성능이 매우 좋지 못함
  • 500명을 수용하기 위한 테스트에서 50명을 수용하는 지점부터 문제가 발생

Mediasoup, Janus

  • 좋음

성능을 고려할 때에는 mediasoup 또는 janus gateway를 활용하는 것이 바람직하다.


지원 언어

Kurento Mediasoup Janus
Java Javascript Java
  • 결국 미디어 서버를 실행시켜도 연결할 시그널링 서버와 같이 개발할 때를 고려해야한다.
  • 현재 언어를 Java를 기반으로 개발을 진행하고 있기 때문에 mediasoup을 사용하는 경우 js기반의 node 애플리케이션을 개발해야 한다.

언어적인 측면에서 볼 때 현재 Java를 활용하고 있기 때문에 kurento 또는 janus를 활용하는 것이 바람직하다.
물론 node로 충분히 개발할 수 있기 때문에 완전히 배제할 필요는 없다고 생각된다.


러닝 커브 및 참고 자료

Kurento Mediasoup Janus
Good Normal Bad
  • kurento의 경우 참고할만한 자료가 많다. 공식 사이트에서 제공하는 tutorial 및 상황별 demo 코드가 존재하고 관련된 포스트가 많다.
  • mediasoup의 경우 kurento에 비해서는 아니지만 참고할만한 자료들이 존재한다. WebRTC 애플리케이션의 코드를 확인하면 대부분의 포스트나 자료들이 js 기반의 애플리케이션이기 때문에 참고할만한 자료들이 있다.
  • janus의 경우 거의 없다.

기간이 정해져 있고, 스트리밍 기능 외에 다른 기능들을 구현하고 성능을 개선하는 것을 고려할 때 빠르게 학습하고 활용할 수 있는 kurento가 바람직하다.


설치 방법

Kurento Mediasoup Janus
Good Normal Bad
  • Kurento의 경우 우분투 환경에서 명령어 한 줄로 미디어 서버를 설치할 수 있다.
  • mediasoup도 이미지를 당겨받아서 실행할 수 있다.
  • janus의 경우 미디어 서버인 janus gateway를 실행하기 위해 설치해야 할 별도의 라이브러리가 매우 많다.

janus를 활용하는 경우 설치 및 실행이 까다롭기 때문에 기한 내에 오픈 소스의 이해를 바탕으로 한 실행이나 확장이 힘들 것으로 보인다.

선택

항목 Kurento Mediasoup Janus
성능 Bad Good Good
지원 언어 Java JavaScript Java
러닝 커브 및 참고 자료 Good Bad Bad
설치 방법 Good Normal Bad
  • 이 외에도 클라이언트와 협업할 때 클라이언트에서 편하게 개발하고 접근이 가능한지, 계속 버전이 업데이트 되고 관리되는지 등 추가적으로 고려해야 할 사안이 많다.
  • 다만 현재 조사한 내용과 기간 내의 목표를 바탕을 고려해서 미디어 서버를 선택하고자 한다.
  • 이번 프로젝트에서 내 목표는 서버 아키텍처에 대한 전반적인 이해와 성능 개선의 경험이 목적이다.

Kurento

  • 따라서 목표를 바탕으로 했을 때 내가 선택한 미디어 서버는 Kurento이고, 이유는 다음과 같다.
  • 서버 아키텍처에 대한 전반적인 이해가 MSA를 활용한 아키텍처도 있고, 스트리밍 서비스를 지원하기 위한 구조도 존재한다. 그 점을 고려했을 때 어떤 미디어 서버를 활용하던 미디어 서버를 활용한 아키텍처를 설계한다는 것은 본질에서 벗어나지 않는다.
  • 고려하고 있는 미디어 서버들이 모두 OSS이고, 내가 커스터마이징할 수 있는 폭이 그렇게 넓지 않을 것을 예상했을 때 사실상 성능 비교는 오픈 소스로 존재하는 미디어 서버 간의 성능 비교일 뿐 내가 개선한 성능이 아니다.
  • 정해진 기간 내에 학습, 개발, 완성을 고려해야 한다.
  • 이 부분에서 절감한 시간을 채널 관리나 메세지 관련 기능에서 고민 및 노력을 통해 내 주도적으로 성능 개선을 경험해보자.

참고 자료

Clone this wiki locally