-
Notifications
You must be signed in to change notification settings - Fork 1
๐ WebRTC Mesh โ ํธ๋ํฝ ๊ณ์ฐ
์ ํฌ๋ ์ต๋ 4๋ช ์ด ํจ๊ปํ๋ ์๊ท๋ชจ ๊ฒ์ ๋ฐฉ์์ ์์ฑ ํตํ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด WebRTC Mesh ๋ฐฉ์์ ์ ํํ์ต๋๋ค.
์ด ๋ฐฉ์์ ์ ํํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์๊ท๋ชจ ์ธ์: ํ ๊ฒ์ ๋ฐฉ์ ์ธ์์ด ์ต๋ 4๋ช ์ผ๋ก ๋งค์ฐ ์ ์ต๋๋ค.
- ์์ฑ ๋ฐ์ดํฐ๋ง ์ ์ก: ์์ ์์ด ์์ฑ ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋์ญํญ ๋ถ๋ด์ด ๋น๊ต์ ์ ์ต๋๋ค.
- ์๋ฒ ๋ถ๋ด ์ต์ํ: ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๊ณ ์ ํด๋ผ์ด์ธํธ ์ธก์์ ์ฝ๊ฐ์ ๋ถ๋ด์ ๊ฐ์ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ํ์ง๋ง ์ค์ ๋ก ๊ฐ ์ฌ์ฉ์๊ฐ ๋ถ๋ดํด์ผ ํ๋ ์ ๋ก๋์ ๋ค์ด๋ก๋ ํธ๋ํฝ์ด ์ด๋ ์ ๋์ธ์ง ์ ํํ๊ฒ ํ์ ํ ํ์๊ฐ ์์์ต๋๋ค.
์ด๋ ํด๋ผ์ด์ธํธ ์ธก ๋คํธ์ํฌ ๋ถ๋ด์ ์์ธกํ๊ณ , ์๋น์ค ํ์ง์ ๋ณด์ฅํ๊ธฐ ์ํจ์ ๋๋ค. ๐
์ค๋์ค ์ค์ :
- ์ฑ๋ ์: ๋ชจ๋ ธ (1์ฑ๋)
- ์ํ ๋ ์ดํธ: 16,000Hz
- ์ํ ํฌ๊ธฐ: 16๋นํธ
์์ ์ค๋์ค ๋นํธ ์ ์ก๋ฅ :
๊ณ์ฐ ๋จ๊ณ | ์ | ๊ฒฐ๊ณผ |
---|---|---|
๋นํธ ์ ์ก๋ฅ (raw) | ์ํ ๋ ์ดํธ ร ์ํ ํฌ๊ธฐ ร ์ฑ๋ ์ | 16,000 Hz ร 16 bits ร 1 = 256,000 bps |
ํ์ง๋ง WebRTC๋ ์์ ์ค๋์ค ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ์ ์กํ์ง ์๊ณ , Opus ์ฝ๋ฑ์ ์ฌ์ฉํ์ฌ ์์ถํฉ๋๋ค.
Opus ์ฝ๋ฑ์ ์์ ๋นํธ ์ ์ก๋ฅ :
- 16kHz ๋ชจ๋ ธ ์์ฑ์ ๊ฒฝ์ฐ ์ฝ 24kbps๋ก ์ค์ ๋ฉ๋๋ค.
ํจํทํ ๊ฐ๊ฒฉ:
- ์ผ๋ฐ์ ์ผ๋ก 20ms ํ๋ ์ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ๋ผ์ ์ด๋น 50๊ฐ์ ํจํท์ด ์ ์ก๋ฉ๋๋ค.
ํจํท๋น ์ค๋์ค ํ์ด๋ก๋ ํฌ๊ธฐ:
๊ณ์ฐ ๋จ๊ณ | ์ | ๊ฒฐ๊ณผ |
---|---|---|
ํ์ด๋ก๋ ํฌ๊ธฐ | 24,000 bps รท 50 | 480 bits = 60 bytes |
ํจํท๋น ๋คํธ์ํฌ ์ค๋ฒํค๋:
- IP ํค๋: 20๋ฐ์ดํธ (IPv4)
- UDP ํค๋: 8๋ฐ์ดํธ
- RTP ํค๋: 12๋ฐ์ดํธ
- ์ด ์ค๋ฒํค๋: 40๋ฐ์ดํธ
ํจํท๋น ์ด ํฌ๊ธฐ:
๊ณ์ฐ ๋จ๊ณ | ์ | ๊ฒฐ๊ณผ |
---|---|---|
์ด ํจํท ํฌ๊ธฐ | ์ค๋ฒํค๋ + ํ์ด๋ก๋ | 40 bytes + 60 bytes = 100 bytes |
์คํธ๋ฆผ๋น ์ด ๋นํธ ์ ์ก๋ฅ :
๊ณ์ฐ ๋จ๊ณ | ์ | ๊ฒฐ๊ณผ |
---|---|---|
์ด ๋นํธ ์ ์ก๋ฅ | 100 bytes ร 50 ร 8 | 40,000 bps = 40 kbps |
4๋ช ์ ์ฌ์ฉ์๊ฐ ์์ ๋, ๊ฐ ์ฌ์ฉ์๋ ๋ค๋ฅธ 3๋ช ์๊ฒ ์์ ์ ์์ฑ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ , ๋ค๋ฅธ 3๋ช ์ผ๋ก๋ถํฐ ์์ฑ ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค.
-
์ ๋ก๋ ํธ๋ํฝ:
๊ณ์ฐ ๋จ๊ณ ์ ๊ฒฐ๊ณผ ์ ๋ก๋ ํธ๋ํฝ 40 kbps ร (4 - 1) 120 kbps -
๋ค์ด๋ก๋ ํธ๋ํฝ:
๊ณ์ฐ ๋จ๊ณ ์ ๊ฒฐ๊ณผ ๋ค์ด๋ก๋ ํธ๋ํฝ 40 kbps ร (4 - 1) 120 kbps
์๋น์ค | ๋นํธ ์ ์ก๋ฅ |
---|---|
์์ ์คํธ๋ฆฌ๋ฐ | 128kbps ~ 320kbps |
์ ํ๋ธ ์์ฒญ | |
- HD (720p) | 1 ~ 3Mbps |
- FHD (1080p) | 3 ~ 7Mbps |
- QHD (1440p) | 7 ~ 13Mbps |
- 4K (2160p) | 15 ~ 25Mbps |
์ ํฌ์ ์์ฑ ํตํ ์๋น์ค๋ ์ฌ์ฉ์๋น ์ ๋ก๋ 120kbps, ๋ค์ด๋ก๋ 120kbps ์ ๋์ ํธ๋ํฝ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์์ ์คํธ๋ฆฌ๋ฐ๊ณผ ๋น์ทํ๊ฑฐ๋ ๋ ๋ฎ์ ์์ค์ด๋ฉฐ, ๊ณ ํ์ง ์์ ์คํธ๋ฆฌ๋ฐ์ ๋นํ๋ฉด ๋งค์ฐ ์ ์ ์์ ๋๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ํ๊ฒฝ์์ ํฐ ๋ถ๋ด ์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๐ง
Mesh ๋ฐฉ์์์๋ ๊ฐ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ์์ ์ง์ P2P ์ฐ๊ฒฐ์ ๋งบ์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์ ์๊ฐ ๋์ด๋ ์๋ก ๊ฐ ์ฌ์ฉ์์ ํธ๋ํฝ ๋ถ๋ด์ ์ฆ๊ฐํฉ๋๋ค.
-
๊ฐ ์ฌ์ฉ์์ ์ ๋ก๋/๋ค์ด๋ก๋ ํธ๋ํฝ์ ๋ค๋ฅธ ์ฌ์ฉ์ ์์ ๋น๋กํฉ๋๋ค.
-
์ฆ, n๋ช ์ ์ฌ์ฉ์๊ฐ ์์ ๋, ๊ฐ ์ฌ์ฉ์์ ์ ๋ก๋/๋ค์ด๋ก๋ ํธ๋ํฝ์:
์ ์ค๋ช ํธ๋ํฝ = ์คํธ๋ฆผ๋น ๋นํธ ์ ์ก๋ฅ ร (n - 1) ์ฌ์ฉ์ ์์ ๋น๋กํ์ฌ ํธ๋ํฝ ์ฆ๊ฐ
์ฌ์ฉ์ ์ (n) | ์ ๋ก๋ ํธ๋ํฝ (kbps) | ๋ค์ด๋ก๋ ํธ๋ํฝ (kbps) |
---|---|---|
2 | 40 | 40 |
3 | 80 | 80 |
4 | 120 | 120 |
5 | 160 | 160 |
6 | 200 | 200 |
7 | 240 | 240 |
8 | 280 | 280 |
9 | 320 | 320 |
10 | 360 | 360 |
- ํด๋ผ์ด์ธํธ ์ธก ๋ถ๋ด์ ๊ณ ๋ คํ์ฌ, ํ ๋ฐฉ์ ์ต๋ ์ฌ์ฉ์ ์๋ 10๋ช ์ดํ๊ฐ ์ ์ ํฉ๋๋ค.
- 10๋ช ์ผ ๊ฒฝ์ฐ, ๊ฐ ์ฌ์ฉ์๋ ์ ๋ก๋/๋ค์ด๋ก๋ 360kbps๋ฅผ ๋ถ๋ดํ๊ฒ ๋ฉ๋๋ค.
- ์ด๋ ์ฌ์ ํ ์์ ์คํธ๋ฆฌ๋ฐ ์์ค์ด๋ฉฐ, ๋๋ถ๋ถ์ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- ๊ทธ๋ฌ๋ ๋น ๋ฅธ ๊ฒ์ ์งํ์ ์ํด ์ ํฌ๋ ์ต๋ 4๋ช ์ผ๋ก ์ ํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ํธ๋ํฝ์ด ์ ๋ค๋ฉด ์๋ฒ์์ SFU ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํด๋ ๋์ง ์์๊น ์๊ฐํ์ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก Mesh ๋ฐฉ์์ ์ ํํ์ต๋๋ค:
SFU ๋ฐฉ์์์๋ ์๋ฒ๊ฐ ๋ชจ๋ ๋ฏธ๋์ด ์คํธ๋ฆผ์ ์ค๊ณํฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ฒด ์ฌ์ฉ์๊ฐ ๋ง์์ง์๋ก ์๋ฒ์ ํธ๋ํฝ ๋ถ๋ด์ด ์ปค์ง๋๋ค.
- ๋ฐฉ์ ํฌ๊ธฐ: 4๋ช (ํ ๋ฐฉ์ ์ต๋ ์ธ์)
- ์คํธ๋ฆผ๋น ๋นํธ ์ ์ก๋ฅ : 40kbps
- ๋ฐฉ์ ์ (R): ์ ์ฒด ์ฌ์ฉ์ ์(U)๋ฅผ 4๋ก ๋๋ ๊ฐ
๋ฐฉ๋น ์๋ฒ ํธ๋ํฝ ๊ณ์ฐ:
-
์ ๋ก๋ ํธ๋ํฝ (์๋ฒ ์์ ):
๊ณ์ฐ ๋จ๊ณ ์ ๊ฒฐ๊ณผ ์ ๋ก๋ ํธ๋ํฝ ์ฌ์ฉ์ ์ ร ์คํธ๋ฆผ๋น ๋นํธ ์ ์ก๋ฅ 4 ร 40 kbps = 160 kbps -
๋ค์ด๋ก๋ ํธ๋ํฝ (์๋ฒ ์ก์ ):
๊ณ์ฐ ๋จ๊ณ ์ ๊ฒฐ๊ณผ ๋ค์ด๋ก๋ ํธ๋ํฝ ์ฌ์ฉ์ ์ ร (์ฌ์ฉ์ ์ - 1) ร ์คํธ๋ฆผ๋น ๋นํธ ์ ์ก๋ฅ 4 ร 3 ร 40 kbps = 480 kbps -
๋ฐฉ๋น ์ด ์๋ฒ ํธ๋ํฝ:
๊ณ์ฐ ๋จ๊ณ ์ ๊ฒฐ๊ณผ ๋ฐฉ๋น ์ด ํธ๋ํฝ ์ ๋ก๋ ํธ๋ํฝ + ๋ค์ด๋ก๋ ํธ๋ํฝ 160 kbps + 480 kbps = 640 kbps
- ์ ์ฒด ์ฌ์ฉ์ ์ (U): 1,000๋ช , 10,000๋ช , 100,000๋ช , 1,000,000๋ช
์ด ์๋ฒ ํธ๋ํฝ:
์ ์ฒด ์ฌ์ฉ์ ์ (U) | ๊ณ์ฐ ์ | ์ด ์๋ฒ ํธ๋ํฝ |
---|---|---|
1,000๋ช | 160 kbps ร 1,000 | 160,000 kbps = 160 Mbps |
10,000๋ช | 160 kbps ร 10,000 | 1,600,000 kbps = 1.6 Gbps |
100,000๋ช | 160 kbps ร 100,000 | 16,000,000 kbps = 16 Gbps |
1,000,000๋ช | 160 kbps ร 1,000,000 | 160,000,000 kbps = 160 Gbps |
- ์๋ฒ ํธ๋ํฝ์ ์ฌ์ฉ์ ์์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค.
- ๋ง ๋ช ์ ์ฌ์ฉ์๋ง ๋์ด๋ ์๋ฒ๋ 1.6Gbps์ ํธ๋ํฝ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
- ์ด๋ ์๋ฒ ์ธํ๋ผ์ ๋น์ฉ ์ธก๋ฉด์์ ์ ์ง ์์ ๋ถ๋ด์ด ๋ฉ๋๋ค.
- ๋ํ, ๋คํธ์ํฌ ํธ๋ํฝ ์ธ์๋ CPU์ RAM ์ฌ์ฉ๋ฅ ๋ ๋น๋กํ์ฌ ์ฆ๊ฐํ๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธก ํธ๋ํฝ์ ๋ฐฉ์ ํฌ๊ธฐ์๋ง ์์กดํ๋ฉฐ, ์ ์ฒด ์ฌ์ฉ์ ์์ ๋ฌด๊ดํฉ๋๋ค.
- ์๋ฒ ๋ถ๋ด ์ต์ํ: ์๋ฒ๋ ์๊ทธ๋๋ง๊ณผ ์ต์ํ์ ํต์ ๋ง ์ฒ๋ฆฌํ์ฌ, ๋๊ท๋ชจ ์ฌ์ฉ์๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
์ ํฌ๋ ์๊ท๋ชจ ์ธ์์ด ์ฐธ์ฌํ๋ ์์ฑ ํตํ ์๋น์ค์์ WebRTC Mesh ๋ฐฉ์์ ์ ํํจ์ผ๋ก์จ, ์ฌ์ฉ์ ๊ฒฝํ์ ํด์น์ง ์์ผ๋ฉด์๋ ์๋ฒ ํธ๋ํฝ ๋ถ๋ด์ ์ค์ด๋ ํจ์จ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธก: ๋ถ๋ดํ๋ ํธ๋ํฝ์ด ์์ ์คํธ๋ฆฌ๋ฐ ์์ค์ผ๋ก ๋ฎ์, ์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ํํ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์๋ฒ ์ธก: ํธ๋ํฝ ๋ถ๋ด์ด ์ต์ํ๋์ด, ๋ง์ ์ฌ์ฉ์๊ฐ ๋์์ ์ ์ํ๋๋ผ๋ ์์ ์ ์ธ ์๋น์ค ์ ๊ณต์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ค์๊ฒ๋ ์พ์ ํ ์์ฑ ํตํ ํ๊ฒฝ์, ์๋น์ค ์ธก๋ฉด์์๋ ์ ์ ๋น์ฉ์ผ๋ก ์์ ์ฑ ๋์ ์๋ฒ ํ๊ฒฝ์ ์ ๊ณตํ ์ ์๊ฒ ๋์์ต๋๋ค. ๐
๐ค Ground Rule
๐ Convention
๐ณ Git Branch ์ ๋ต
๐ ๏ธ AGT - Automatic Git & Github Tool
๐ WebRTC Mesh โ ํธ๋ํฝ ๊ณ์ฐ
๐ข WebRTC Mesh - ํ๋ํ ์ฌ์
๐ฌ WebRTC๋ฅผ ์์๋ณด์
๐ฎ SSE(Server Sent Events)
๐ SSE Pagination
โณ Socket ํต์ ์์ ๋น๋๊ธฐ ์์
์์ ๋ณด์ฅ ๋ฐฉ๋ฒ
๐ก Redis pub/sub๋ฅผ ํ์ฉํ SSE ์ ์ฉ๊ธฐ
๐๏ธ Naver Cloud Platform์ ํ์ฉํ ๋ฐฐํฌ ์ ๋ต
โ๏ธ๐ ๋ถํ ํ
์คํธ: ๋จ์ผ ์ธ์คํด์ค VS NKS
๐ดโโ๏ธ Redis๋ก ๊ฒ์๋ฐฉ ๊ด๋ฆฌ ์ต์ ํ: ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฑ๋ฅ ๊ฐ์
๐ ํ์๋ก ์บ๋ฆฐ๋
๐ค ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ ํ
ํ๋ฆฟ
๐ค ํ๊ณ ํ
ํ๋ฆฟ
0๏ธโฃ 0์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
1๏ธโฃ 1์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
2๏ธโฃ 2์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
3๏ธโฃ 3์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
4๏ธโฃ 4์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
0๏ธโฃ 0์ฃผ์ฐจ ๋ฐํ
1๏ธโฃ 1์ฃผ์ฐจ ๋ฐํ
2๏ธโฃ 2์ฃผ์ฐจ ๋ฐํ
3๏ธโฃ 3์ฃผ์ฐจ ๋ฐํ
4๏ธโฃ 4์ฃผ์ฐจ ๋ฐํ
5๏ธโฃ ์ต์ข
๋ฐํ