Skip to content

๐Ÿ““WebRTC ๊ฐœ๋… ์ •๋ฆฌ

๋…ธํ˜„์ง„ edited this page Nov 3, 2024 · 2 revisions

๋ชฉ์ฐจ


๊ฐœ์š”

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” WebRTC(Web Real-Time Communication)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


WebRTC๋ž€?

WebRTC(Web Real-Time Communication)๋ž€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‚ฌ์ดํŠธ๊ฐ€ ๋ณ„๋„์˜ ์ค‘๊ฐ„์ž ์—†์ด ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์— ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ, ์˜์ƒ ํ†ตํ™”์™€ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. WebRTC๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ผ๋ จ์˜ ํ‘œ์ค€๋“ค์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ์ œ 3์ž ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜ ์—†์ด P2P(Peer-to-Peer) ํ†ต์‹ ์„ ์ง€์›ํ•ด ์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ข…๋‹จ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ์™€ ํ™”์ƒ ํšŒ์˜๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. WebRTC๋Š” ์ฃผ๋กœ ๋น„๋””์˜ค ํ†ตํ™”, ํ™”๋ฉด ๊ณต์œ , ํŒŒ์ผ ์ „์†ก ๊ฐ™์€ ๊ธฐ๋Šฅ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


WebRTC์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

WebRTC์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์Œ์„ฑ ๋ฐ ์˜์ƒ ํ†ตํ™”

    ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ์˜์ƒ ํ†ตํ™”์™€ ์Œ์„ฑ ํ†ตํ™”๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ „์†ก

    ๋ฐ์ดํ„ฐ ์ฑ„๋„์„ ํ†ตํ•ด ํ…์ŠคํŠธ ๋ฉ”์„ธ์ง€, ํŒŒ์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ™”๋ฉด ๊ณต์œ 

    ์›๊ฒฉ ํšŒ์˜๋‚˜ Presentation ๊ฐ™์€ ๊ธฐ๋Šฅ์— ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ WebRTC๋Š” ์ฃผ๋กœ ํ™”์ƒ ํšŒ์˜, ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ, ์›๊ฒฉ ํ•™์Šต ํ”Œ๋žซํผ ๋“ฑ์—์„œ ๋งŽ์ด ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.


WebRTC์˜ ์žฅ๋‹จ์ 

WebRTC์˜ ์žฅ๋‹จ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฅ์ 

  • ์‹ค์‹œ๊ฐ„ ํ†ต์‹ 

    ํ”Œ๋Ÿฌ๊ทธ์ธ ์—†์ด ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด ๊ฐ„ํŽธํ•˜๋ฉฐ, ์„œ๋ฒ„ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ์ง€์›

    Chrome, Firefox, Safari ๋“ฑ ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋˜๋ฉฐ, ๋ณ„๋„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋†’์€ ๋ณด์•ˆ์„ฑ

    WebRTC๋Š” ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด DTLS(Secure Datagram Transport Layer Security)์™€ SRTP(Secure Real-time Transport Protocol)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์ „์†ก ์ค‘์ธ ๋ฏธ๋””์–ด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜คํ”ˆ์†Œ์Šค ๋ฐ ๋ฌด๋ฃŒ ์‚ฌ์šฉ

    WebRTC๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณต๋˜๋ฏ€๋กœ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์˜ˆ์ œ๊ฐ€ ๋งŽ์•„ ๊ฐœ๋ฐœ๊ณผ ํ™•์žฅ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  • ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ํ’ˆ์งˆ ์ €ํ•˜

    P2P ์—ฐ๊ฒฐ์€ ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ํ’ˆ์งˆ์ด ์˜ํ–ฅ์„ ๋ฐ›์œผ๋ฏ€๋กœ, ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์ด ๋ถˆ์•ˆ์ •ํ•œ ๊ฒฝ์šฐ์—๋Š” ์Œ์„ฑ ๋ฐ ์˜์ƒ ํ’ˆ์งˆ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ฐธ์—ฌํ•˜๋Š” ํ™”์ƒ ํšŒ์˜์˜ ๊ฒฝ์šฐ, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ ์‚ฌ์šฉ์ด ์ฆ๊ฐ€ํ•˜์—ฌ ์—ฐ๊ฒฐ ํ’ˆ์งˆ์ด ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • NAT ๋ฐ ๋ฐฉํ™”๋ฒฝ ๋ฌธ์ œ

    NAT(Network Address Translation)์ด๋‚˜ ๋ฐฉํ™”๋ฒฝ ์„ค์ •์œผ๋กœ ์ธํ•ด P2P ์—ฐ๊ฒฐ์ด ์ œํ•œ๋˜๋Š” ๊ฒฝ์šฐ, TURN ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ค‘๊ณ„ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋Œ€์—ญํญ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ์—… ๋„คํŠธ์›Œํฌ๋‚˜ ๊ฐ•๋ ฅํ•œ ๋ฐฉํ™”๋ฒฝ ํ™˜๊ฒฝ์—์„œ๋Š” ์ง์ ‘ ์—ฐ๊ฒฐ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณต์žกํ•œ ๊ฐœ๋ฐœ ๋ฐ ์šด์˜

    STUN ์„œ๋ฒ„์™€ TURN ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ICE(Interactive Connectivity Establishment) ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๋‹จ์ˆœํ•œ HTTP ํ†ต์‹ ๋ณด๋‹ค ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์ž๊ฐ„ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” SFU๋‚˜ TURN ์„œ๋ฒ„๋ฅผ ๋ณ„๋„๋กœ ์šด์˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์šด์˜ ๋น„์šฉ๊ณผ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.


๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์„œ๋ฒ„

  • STUN ์„œ๋ฒ„

    STUN(Session Traversal Utilities for NAT) ์„œ๋ฒ„๋ž€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์‹ ์˜ ๊ณต์ธ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” STUN ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ˆ˜์‹ ํ•œ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์˜ ๊ณต์ธ IP์™€ ํฌํŠธ๋ฅผ ์•Œ์•„๋‚ด์–ด NAT ๋ฐฉํ™”๋ฒฝ์„ ๋„˜์–ด ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์™€ ์ง์ ‘ P2P ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    STUN ์„œ๋ฒ„๋Š” ์ฃผ๋กœ NAT ๋ฐฉํ™”๋ฒฝ ๋’ค์— ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ๋“ค์ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๊ฒฝ๋กœ ์ •๋ณด๋งŒ ์ œ๊ณตํ•˜๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ P2P ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ง์ ‘ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

  • TURN ์„œ๋ฒ„

    TURN(Traversal Using Relays around NAT) ์„œ๋ฒ„๋ž€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ์ง์ ‘ P2P ์—ฐ๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ค‘๊ณ„ ์„œ๋ฒ„ ์—ญํ• ์„ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” TURN ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์ƒ๋Œ€๋ฐฉ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

    TURN ์„œ๋ฒ„๋Š” NAT ๋ฐฉํ™”๋ฒฝ์ด ๊ฐ•๋ ฅํ•˜์—ฌ STUN์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ TURN ์„œ๋ฒ„๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์—ญํญ ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์•„์ ธ ์„œ๋ฒ„ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


WebRTC์˜ ๊ธฐ๋ณธ ์ž‘๋™ ์›๋ฆฌ

WebRTC๋Š” ์‹œ๊ทธ๋„๋ง(Signaling)์„ ํ†ตํ•ด ๋‘ ์žฅ์น˜๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก Peer ๊ฐ„ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ทธ๋„๋ง(Signaling)์ด๋ž€ ์œ„์˜ 3๊ฐ€์ง€ API๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ RTCPeerConnection๋“ค์ด ์ ์ ˆํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„(Signaling Server)๋Š” WebRTC ํ‘œ์ค€์— ํฌํ•จ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ทธ๋„๋ง ๊ณผ์ •์ด ๋๋‚˜๋ฉด ๋‘ ์žฅ์น˜๋Š” ์ง์ ‘ P2P ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


WebRTC ์ ‘๊ทผ ๋ฐฉ์‹

WebRTC๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ P2P ๋ฐฉ์‹์ด๋ฏ€๋กœ, ๊ฐ ์ฐธ๊ฐ€์ž๊ฐ€ ์„œ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ๋งบ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฐธ๊ฐ€์ž๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๊ฐ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๊ฐ€ ์ปค์ง€๋ฉฐ, ํŠนํžˆ ๋Œ€์—ญํญ๊ณผ CPU์— ๋ถ€๋‹ด์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Mesh ๋ฐฉ์‹

Mesh ๋ฐฉ์‹๋Š” ๊ฐ ์ฐธ๊ฐ€์ž๊ฐ€ ๋ชจ๋“  ๋‹ค๋ฅธ ์ฐธ๊ฐ€์ž์™€ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ๋งบ๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ์ฐธ๊ฐ€์ž๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ด๋น„๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 6๋ช…์˜ ์ฐธ๊ฐ€์ž๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ, ๊ฐ ์ฐธ๊ฐ€์ž๋Š” 5๊ฐœ์˜ ์—ฐ๊ฒฐ์„ ๋งบ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Mesh ๋ฐฉ์‹์€ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๊ณ  ์„œ๋ฒ„ ๋น„์šฉ์ด ์ ๊ฒŒ ๋“ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์—ฐ๊ฒฐ์ด ๋Š˜์–ด๋‚  ์ˆ˜๋ก ๋„คํŠธ์›Œํฌ ๋ฐ CPU ๋ถ€๋‹ด์ด ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ ๋ช…์˜ ์ฐธ๊ฐ€์ž๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Mesh ๋ฐฉ์‹์€ ๋น„๊ต์  ์†Œ๊ทœ๋ชจ ๊ทธ๋ฃน์— ์ ํ•ฉํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


SFU ๋ฐฉ์‹

SFU ๋ฐฉ์‹์€ Selective Forwarding Unit ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ ์ฐธ๊ฐ€์ž๋Š” ์ž์‹ ์˜ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ์„ SFU ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ๊ฐ ์ฐธ๊ฐ€์ž์—๊ฒŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ŠคํŠธ๋ฆผ์„ ์ค‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ณ„ํ•˜๋Š” ์—ญํ• ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU ๋ถ€๋‹ด์ด ์ ๊ณ  ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.

SFU ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ ๊ฐ ์ฐธ๊ฐ€์ž๋Š” ์„œ๋ฒ„์™€ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋งŒ ๋งบ์œผ๋ฉด ๋˜๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๊ณ  ๋Œ€๊ทœ๋ชจ ๊ทธ๋ฃน ์ฑ„ํŒ…์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ SFU ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ  ์„ค์ • ๋ณต์žก๋„๊ฐ€ ๋†’๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

SFU ๋ฐฉ์‹์€ ๋‹ค์ˆ˜์˜ ์ฐธ๊ฐ€์ž๊ฐ€ ์ฐธ์—ฌํ•˜๋Š” ํ™”์ƒ ์ฑ„ํŒ…์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. SFU ๋ฐฉ์‹์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด OpenVidu, mediasoup, jitsi Meet, Twilio ๋“ฑ SFU ๋ฐฉ์‹์„ ์ง€์›ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค๋‚˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


SFU ๋ฐฉ์‹์˜ ์ž‘๋™ ์›๋ฆฌ

SFU ๋ฐฉ์‹์˜ ์ž‘๋™ ์›๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ ์—…๋กœ๋“œ

    ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์˜ ๋น„๋””์˜ค/์˜ค๋””์˜ค ์ŠคํŠธ๋ฆผ์„ SFU ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

  2. Selective Forwarding

    SFU ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ ์ŠคํŠธ๋ฆผ์„ ์„ ํƒ์ ์œผ๋กœ ํฌ์›Œ๋”ฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ฐ€๊ณตํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•˜๋ฏ€๋กœ CPU ๋ถ€ํ•˜๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค.

  3. ๋‹ค์šด๋กœ๋“œ

    ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค์˜ ์ŠคํŠธ๋ฆผ์„ SFU ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” SFU ์„œ๋ฒ„์™€๋งŒ ์—ฐ๊ฒฐ๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž์™€ ์ง์ ‘ ์—ฐ๊ฒฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


SFU ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ 

SFU ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฅ์ 

  • ํ™•์žฅ์„ฑ

    ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” SFU ์„œ๋ฒ„์™€ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋งŒ ์œ ์ง€ํ•˜๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ํ•œ ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ๋™์‹œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‚ฎ์€ ํด๋ผ์ด์–ธํŠธ ๋ถ€๋‹ด

    ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” SFU ์„œ๋ฒ„์™€ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋Œ€์—ญํญ๊ณผ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

  • ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ

    ์„œ๋ฒ„๊ฐ€ ๊ฐ ์‚ฌ์šฉ์ž์˜ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ ์€ ๋”œ๋ ˆ์ด

    SFU ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ”๋กœ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์„œ๋ฒ„ ์šด์˜ ๋น„์šฉ

    SFU๋Š” ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ์ŠคํŠธ๋ฆผ์„ ์ค‘๊ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์„œ๋ฒ„ ํ™•์žฅ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Bitrate ๊ด€๋ฆฌ ํ•„์š”

    SFU ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ์„ ํƒ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ์‚ฌ์šฉ์ž์˜ ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋งž์ถฐ Bitrate๋ฅผ ์กฐ์ ˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ค‘์•™ ์„œ๋ฒ„ ์˜์กด์„ฑ

    SFU ๋ฐฉ์‹์€ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋ฉด ์ „์ฒด ์—ฐ๊ฒฐ์ด ๋Š์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋Œ€๋น„ํ•ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์ด๋‚˜ ๋ฐฑ์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

MafiaCamp

๐Ÿ“”์†Œ๊ฐœ
๐ŸŽฏํ”„๋กœ์ ํŠธ ๊ทœ์น™
๐Ÿ’ปํ”„๋กœ์ ํŠธ ๊ธฐํš
๐Ÿ€๊ธฐ์ˆ  ์Šคํƒ
๐Ÿ“‹Backlog
  • ๐Ÿ“•1์ฃผ์ฐจ
  • ๐Ÿ“˜2์ฃผ์ฐจ
  • 3์ฃผ์ฐจ
  • 4์ฃผ์ฐจ
  • 5์ฃผ์ฐจ
  • 6์ฃผ์ฐจ
๐Ÿ‘‹๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ
  • ๐Ÿ“•1์ฃผ์ฐจ
  • ๐Ÿ“˜2์ฃผ์ฐจ
  • 3์ฃผ์ฐจ
  • 4์ฃผ์ฐจ
  • 5์ฃผ์ฐจ
  • 6์ฃผ์ฐจ
๐Ÿ“˜๊ฐœ์ธ ํšŒ๊ณ 
  • ๐Ÿ“•1์ฃผ์ฐจ
  • ๐Ÿ“˜2์ฃผ์ฐจ
  • 3์ฃผ์ฐจ
  • 4์ฃผ์ฐจ
  • 5์ฃผ์ฐจ
  • 6์ฃผ์ฐจ
๐Ÿ“š๊ทธ๋ฃน ํšŒ๊ณ 
โœ’๏ธ๋ฉ˜ํ† ๋ง ์ผ์ง€
๐ŸŒˆ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •
โš ๏ธํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
Clone this wiki locally