webRTC 정리편

최예닮·2022년 11월 26일
0
post-thumbnail

시니어분께서 webRTC에 대해 모르는 사람도 들으면 알 수 있도록 설명해달라고 요청하셨다.

그래서 한번 이 곳에 webRTC의 종류와 장단점에 대해 이야기하고 싶어서 적게 되었다.

먼저 P2P에 대해 설명하도록 하겠다.

1. P2P (Peer To Peer)


P2P는 말그대로 Peer To Peer 사용자의 컴퓨터(클라이언트)를 직접 서로 연결 시키는 것이다. 나의 비디오 오디오 데이터 & 상대방의 비디오 오디오 데이터를 서로 주고받는 직거래 형태라고 보면 편할거 같다. (나의 데이터는 upLink 라고 지칭하고 상대방의 데이터는 downLink 라고 지칭하겠다.)

그림으로 보면 총 5명의 클라이언트가 서로 연결하는 모습을 볼 수 있다. 그렇게 되면 나의 upLink를 상대방에게 4개를 주고 상대방의 데이터인 downLink를 4개를 주고 받아야하기 때문에 총 8개의 데이터를 주고 받는다.

<장점>

  • 이 방식에서 생기는 장점은 서버는 클라이언트가 서로 연결할때만 부하가 발생하고 빠지기 때문에 서버의 부하가 적다는 것과 클라이언트끼리 직접 데이터를 주고 받기 때문에 실시간의 소통이 보장된다.

<단점>

  • 다만 데이터를 서로 주고 받기때문에 대상이 늘어날수록 데이터가 급격하게 증가하기 때문에 그만큼 클라이언트들의 과부하가 심해질 수 있다.

이 P2P의 문제점은 다수가 연결할때 과부하로 인해 힘들다는 단점이 있어서 이 것을 보안할 수 있는 SFU와 MCU 가 있다. SFU와 MCU는 클라이언트 간의 직접 연결이 아니고 서버가 클라이언트간을 중계하는 방식이다. 그렇다면 먼저 SFU 방식을 설명하겠다.

2. SFU (Selective Forwarding Unit)

  • SFU는 나의 데이터를 서버에 전송하는 방식이다. (upLink가 1개)
  • 다만 다른사람들의 데이터를 모두 받아야 하기 때문에 downLink는 P2P와 동일하다. (그림상으로는 downLink 3개)

<장점>

  • P2P 방식보다 upLink의 갯수가 적기 때문에 P2P보다 클라이언트에 가해지는 부하가 적다.
  • 그리고 서버를 거치기 때문에 P2P 보다는 느리지만 비슷한 수준의 실시간성을 유지할 수 있다.

<단점>

  • P2P 대비 서버를 거치기 때문에 비용이 증가할 수 있다.
  • 규모가 커지면 여전히 클라이언트가 많은 부하를 감당해야한다.

그렇다면 대규모를 관리할 수 있는 webRTC는 없을까 ? 있다. 바로 MCU이다 한번 살펴보자

3. MCU (Multi-point Control Uni)

  • SFU처럼 나의 데이터를 서버에 전송하는 방식 (upLink 1개)
  • downLink에서 SFU방식과 차이가 발생하는데 서버에서 다른사람들의 데이터(비디오,오디오)를 가공해서 하나의 데이터로 만들어 주기 때문에 서버에서 하나의 데이터만을 내려받으면 된다. (downLink 1개)

<장점>

  • 주고받는 데이터의 갯수가 적기 때문에 클라이언트가 받는 부하가 상대적으로 적다.

<단점>

  • 서버에서 데이터를 가공한 후 주고받기 때문에 실시간성이 저해되고, 서버의 비용이 상대적으로 많다.

총 정리를 해보자면 !!

1) P2P는 1:1 또는 소규모의 MESH 형태의 통신

2) SFU는 1:N 또는 소규모 N:M 통신,

3) MCU는 N:M 통신의 적합한 방식이라고 말할 수 있다.

이렇게 정리해보았는데 혹여나 webRTC에 대해 개념이 안잡히신 분들이 이 글을 보고 쉽게 접근했으면 좋겠다는 생각으로 적었는데... 도움이 되었으면 좋겠다.

어쨌든 정리를 하다보니 webRTC에 대해 어느정도 눈에 들어왔다. 다만 자료가 그렇게 많지 않기 때문에 좀 더 깊게 공부하고 싶어도 생각보다 쉽지 않다는점이 아쉽다. 그래도 기회가 된다면 좀 깊게 파보고 싶은 기능중에 하나이다.

우리는 또 내일 만나요 ⭐️

profile
산을 오르려고 하는데 이제 주차장에 막 주차한 초보개발자

0개의 댓글