Skip to content

๐Ÿ… ์ตœ์ข… ๋ฐœํ‘œ ์ค€๋น„

Junsang Yu edited this page Dec 5, 2024 · 1 revision

โœ”๏ธย ๋ฐœํ‘œ (15๋ถ„)

๐Ÿ’ก **๊ทธ๋ฃนํ”„๋กœ์ ํŠธ 6์ฃผ๊ฐ„ ์Œ“์•„์˜จ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฒฝํ—˜์˜ ๊ธฐ์Šน์ „๊ฒฐ์„ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.** ํ”„๋กœ์ ํŠธ ๊ณผ์ •์—์„œ ์žˆ์—ˆ๋˜ ํŒ€๊ณผ ๊ฐœ์ธ์˜ ํ•ต์‹ฌ ๊ฒฝํ—˜์„ ์ค‘์‹ฌ์œผ๋กœ ๋ฐœํ‘œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด์„ธ์š”. ์ฒญ์ค‘๋“ค์ด ์šฐ๋ฆฌ ํŒ€์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •๊ณผ ๊ธฐ์ˆ ์  ์„ฑ์žฅ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ , ์ข‹์€ ์งˆ๋ฌธ๊ณผ ํ”ผ๋“œ๋ฐฑ์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€์˜ **๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฒฝํ—˜**๊ณผ **๊ธฐ์ˆ ์  ์™„์„ฑ๋„**์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.
    • ์ „์ฒด ๊ณผ์ •์„ ๋ชจ๋‘ ์Š๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ทธ ์ค‘ ์šฐ๋ฆฌ ํŒ€์˜ ํ•ต์‹ฌ์ ์ด์—ˆ๋˜ ๋‚ด์šฉ์„ ์ค‘์‹ฌ์œผ๋กœ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค์˜ ์™„์„ฑ๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ๊ธฐ์ˆ ์˜ ์ด์œ , ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์ฃผ์š” ์ด์Šˆ, ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ณผ์ •, ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ์  ๋“ฑ ๊ธฐ์Šน์ „๊ฒฐ์„ ๋‹ด์•„๋ณด์„ธ์š”.
    • ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ์—ฌ๋Ÿฌ๋ถ„์ด ๋ฌด์—‡์„ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ๋ฌด์—‡์„ ์‹œ๋„ํ–ˆ๋Š”์ง€๊ฐ€ ๋ณด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ๊ธฐํš & ๊ธฐ๋Šฅ ์†Œ๊ฐœ, ๋™์ž‘ ๋ฐ๋ชจ ๋“ฑ์€ ๋ฐœํ‘œ์˜ ๋งฅ๋ฝ์ด ๋˜๋Š” ๋‚ด์šฉ์„ ์ค‘์‹ฌ์œผ๋กœ ์ตœ์†Œํ™”ํ•˜์—ฌ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข… ๋ฐœํ‘œ ํ๋ฆ„

  • ํŒ€์†Œ๊ฐœ โ†’ ์„œ๋น„์Šค์†Œ๊ฐœ โ†’ FE/BE ๋ฌธ์ œํ•ด๊ฒฐ ๊ฒฝํ—˜?
  • ํŒ€/์„œ๋น„์Šค ์†Œ๊ฐœ(๋ฐ๋ชจ) 5๋ถ„ / ๊ธฐ์ˆ ์  ๋ฌธ์ œํ•ด๊ฒฐ ๊ฒฝํ—˜ 10๋ถ„์ •๋„ ํ•˜๋Š”๊ฑฐ ๊ฐ™์•„์š”(์ด์ „ ๊ธฐ์ˆ˜ ๋ณด๋‹ˆ๊นŒ)
    • ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ธฐ๋Šฅ, ๊ธฐ์ˆ  ์Šคํƒ, ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ

https://www.youtube.com/watch?v=_u_GTshHPMs&list=PLzUx59pIXJDwdgQf6dNXFEOeG9792HGpX

ํŒ€ ์†Œ๊ฐœ

  • ๊ฐ„๋‹จํ•œ ํŒ€์› ๋ฆฌ์ŠคํŠธ

์„œ๋น„์Šค ์†Œ๊ฐœ

  • ์„œ๋น„์Šค ๊ธฐํš ๊ณ„๊ธฐ
  • ๊ฐ„๋‹จํ•œ ์„œ๋น„์Šค ์†Œ๊ฐœ
  • ๋ฐ๋ชจ (์˜์ƒ)

โš ๏ธย ๋ฐฐ๊ฒฝ ์ง€์‹ ๋„ˆ๋ฌด ์ž์„ธํžˆ ์†Œ๊ฐœํ•˜์ง€ ๋ง๊ธฐ

FE ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฒฝํ—˜ - 2๊ฐœ

  1. WebRTC API ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์–ด๋ ค์› ๋˜ ๊ฒƒ ๋ชจ์•„์„œ ์ •๋ฆฌํ•œ ๋‹ค์Œ์— ์ ์–ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    1. ์ƒ๋Œ€๋ฐฉ ์Šคํ†ฑ์›Œ์น˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด DataChannel์„ ์ด์šฉ

      ์˜ˆ์ƒ ์งˆ๋ฌธ

      • ์Šคํ†ฑ์›Œ์น˜๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ ๋‹จ์—์„œ ๊ด€๋ฆฌํ–ˆ์„ ๋•Œ์˜ ์ž์› ์†Œ๋ชจ?
      • ์Šคํ†ฑ์›Œ์น˜๊ฐ€ ์—…๋ฐ์ดํŠธ ๋  ๋•Œ๋งˆ๋‹ค(1์ดˆ ๋งˆ๋‹ค) dataChannel send๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์˜ ๋ถ€๋‹ด?
        • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ Chrome Performance Monitor ๊ธฐ์ค€, ์•ฝ 1~2%์˜ CPU ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€ ์™ธ์— ๋ณ„๋‹ค๋ฅธ ์ž์› ์†Œ๋ชจ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Œ โ†’ ๋” ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ
    2. ์ €ํฌ WebRTC ์ฒ˜์Œ ์จ๋ณด๋Š” ๊ฒƒ ๊ฐ•์กฐ

    3. ํ”ผ์–ด ์ปค๋„ฅ์…˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜

    4. ์นด๋ฉ”๋ผโ‹…๋งˆ์ดํฌ ์ž์› ์†Œ๋ชจ โ†’ ์นด๋ฉ”๋ผ๋Š” ๊บผ๋‘๋Š” ๊ฒŒ ๋‚ซ๋‹ค.

      • ๊ธฐ์กด ๋ฐฉ์‹์€ ๋ธŒ๋ผ์šฐ์ € ํƒญ(OS ์ƒํƒœ๋ฐ”)์— ์นด๋ฉ”๋ผ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋Š” ํ‘œ์‹œ๊ฐ€ ๊ณ„์† ๋‚˜ํƒ€๋‚จ (์นด๋ฉ”๋ผ off์ธ ์ƒํƒœ์—ฌ๋„) ๊ทธ์— ๋”ฐ๋ฅธ ์‹ฌ๋ฆฌ์  ์••๋ฐ•๊ฐ โ†’ UX ๊ฐœ์„ 
  2. ์นด๋ฉ”๋ผโ‹…๋งˆ์ดํฌ ๊ถŒํ•œ ๋ถ€์—ฌ
    1. ๋ฌธ์ œ: ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ์ด ๋ดค์„ ๋•Œ, ๋ฌด์Šจ ๋ฌธ์ œ๋กœ ์นด๋ฉ”๋ผ/๋งˆ์ดํฌ๊ฐ€ ์•ˆ ์ผœ์ง€๋Š” ์ง€ ๋ช…์‹œ์ ์ด์ง€ ์•Š์Œ

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

BE ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฒฝํ—˜ **- 2๊ฐœ

  1. ์ž๋™ ๋ฐฐํฌ(์„œ๋ฒ„ ๊ตฌ์กฐ?) โ†’ ์„œ๋ฒ„ ๊ตฌ์กฐ + github actions ์ž๋™ ๋ฐฐํฌ, eslint prettier ํ™•์ธ

    1. ์ด๊ฑธ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ธฐ? โ† ์˜ค ์ข‹์•„์š”

    https://www.cloudcraft.co/ โ†’ AWS/ncloud ์ œํ’ˆ์€ ์„œ๋ฒ„๋งŒ ์“ฐ๊ณ  ์žˆ์–ด์„œ ์–ด๋ ค์›€

    • ์„œ๋ฒ„ ๊ตฌ์กฐ ๋จผ์ € ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…
    • ๋ฐฐํฌ๋ฅผ ๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ ๋นŒ๋“œํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค์–ด์„œ github actions์œผ๋กœ ์ž๋™ ๋ฐฐํฌ ๊ตฌํ˜„
    • ํ˜‘์—…ํ• ๋•Œ ์ฝ”๋“œ ์Šคํƒ€์ผ ํ†ต์ผ์„ ์œ„ํ•ด์„œ github actions์œผ๋กœ eslint, prettier ํ™•์ธ ๊ณผ์ • ๊ตฌํ˜„
  2. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

    1. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•œ ๋ฐฐ๊ฒฝ
    2. ๋งจ ์ฒ˜์Œ ๋‹จ์ˆœ ๋ชจํ‚นํ•œ ๊ณผ์ •
    3. ๊ทผ๋ฐ ์ด๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ทจ์ง€์— ๋งž๊ฒŒ ๋ชจํ‚นํ•œ ๊ณผ์ •
  3. turn ์„œ๋ฒ„ ์ธ์ฆ?

    1. ์žฌ์˜๋‹˜ P2P ์—ฐ๊ฒฐ์ด ์•ˆ๋˜์„œ TURN ์„œ๋ฒ„ ๊ตฌ์ถ• โ†’ ๋ฐ๋ชจ๋•Œ ์ธ์ฆ์ •๋ณด ๋ณด์•ˆ ๋ฌธ์ œ ์ œ๊ธฐ โ†’ ์ธ์ฆ์ •๋ณด ๋ฐœ๊ธ‰ API๋กœ ๋ฐฉ์‹ ๋ณ€๊ฒฝ

๊ณตํ†ต ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฒฝํ—˜

  1. mesh โ†’ sfu
  • mesh์˜ ํ•œ๊ณ„์  ์ธก์ •

    PeerN Camera On N: Peer N๋ช… ์ ‘์†, N๋ช…์ด ์นด๋ฉ”๋ผ ํ™œ์„ฑํ™”

    Peer3 Camera On 3: ์—ฐ๊ฒฐ๋˜๋Š” ๋น„๋””์˜ค์ŠคํŠธ๋ฆผ ํŠธ๋ž™ 12๊ฐœ (์—…์ŠคํŠธ๋ฆผ 6๊ฐœ, ๋‹ค์šด์ŠคํŠธ๋ฆผ 6๊ฐœ)

    Peer4 Camera On 2: ์—ฐ๊ฒฐ๋˜๋Š” ๋น„๋””์˜ค์ŠคํŠธ๋ฆผ ํŠธ๋ž™ 12๊ฐœ (์—…์ŠคํŠธ๋ฆผ 6๊ฐœ, ๋‹ค์šด์ŠคํŠธ๋ฆผ 6๊ฐœ)

    Peer4 Camera On 3: ์—ฐ๊ฒฐ๋˜๋Š” ๋น„๋””์˜ค์ŠคํŠธ๋ฆผ ํŠธ๋ž™ 18๊ฐœ (์—…์ŠคํŠธ๋ฆผ 9๊ฐœ, ๋‹ค์šด์ŠคํŠธ๋ฆผ 9๊ฐœ)

    Peer4 Camera On 4: ์—ฐ๊ฒฐ๋˜๋Š” ๋น„๋””์˜ค์ŠคํŠธ๋ฆผ ํŠธ๋ž™ 24๊ฐœ (์—…์ŠคํŠธ๋ฆผ 12๊ฐœ, ๋‹ค์šด์ŠคํŠธ๋ฆผ 12๊ฐœ)

    Peer5 Camera On 3: ์—ฐ๊ฒฐ๋˜๋Š” ๋น„๋””์˜ค์ŠคํŠธ๋ฆผ ํŠธ๋ž™ 24๊ฐœ (์—…์ŠคํŠธ๋ฆผ 12๊ฐœ, ๋‹ค์šด์ŠคํŠธ๋ฆผ 12๊ฐœ)

    Peer5 Camera On 4: ์—ฐ๊ฒฐ๋˜๋Š” ๋น„๋””์˜ค์ŠคํŠธ๋ฆผ ํŠธ๋ž™ 32๊ฐœ (์—…์ŠคํŠธ๋ฆผ 16๊ฐœ, ๋‹ค์šด์ŠคํŠธ๋ฆผ 16๊ฐœ)

    Peer5 Camera On 5: ์—ฐ๊ฒฐ๋˜๋Š” ๋น„๋””์˜ค์ŠคํŠธ๋ฆผ ํŠธ๋ž™ 40๊ฐœ (์—…์ŠคํŠธ๋ฆผ 20๊ฐœ, ๋‹ค์šด์ŠคํŠธ๋ฆผ 20๊ฐœ) โ†’ ์ปดํ“จํ„ฐ ์‚ฌ๋งโ˜ ๏ธใ„ทใ„ทใ„ท

    M1 Macbook Air ๋ฐฐํ„ฐ๋ฆฌ ์šฉ๋Ÿ‰ 50Whโ€ฆ 16๋ช… ์ ‘์†ํ•œ ๋ฐฉ์—์„œ 2์‹œ๊ฐ„ 30๋ถ„์ด๋ฉด ๋ฐฐํ„ฐ๋ฆฌ 100% โ†’ 0%

    ๋น„๋””์˜ค ํ•œ ๋ช… ์ „์†ก ๋‹น ํ‰๊ท  ~1.8Mbps

    16๊ฐœ ์ŠคํŠธ๋ฆผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ ์ „์†ก ์‹œ = 58Mps

    Mesh ๋ฐฉ์‹์—์„œ ๋„คํŠธ์›Œํฌ ๋ถ€๋‹ด ๋ฌธ์ œ๋Š” ์•„๋‹Œ๋“ฏํ•˜๋‹ค.

  • mesh ๋ฐฉ์‹์—์„œ ๋ธŒ๋ผ์šฐ์ € ๋ถ€ํ•˜ ์„ฑ๋Šฅ ์ธก์ • โ†’ mesh ๋ฐฉ์‹์—์„œ ์ตœ๋Œ€ ์ ‘์†์ž์ˆ˜ ํ•œ๊ณ„

  • sfu ๋ฐฉ์‹์—์„œ ๋ธŒ๋ผ์šฐ์ € / ์„œ๋ฒ„ ๋ถ€ํ•˜ ์„ฑ๋Šฅ ์ธก์ •

  • sfu ๋‹จ๋ฐฉํ–ฅ 5๋ช…(upload 1, download 4) ์„œ๋ฒ„ ์„ฑ๋Šฅ ์ธก์ •

๐Ÿš€ ํ”„๋กœ์ ํŠธ ๊ทœ์น™

๐Ÿš€ ํ”„๋กœ์ ํŠธ ๊ธฐํš

๐Ÿ“ฝ ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ

๐Ÿ‘ฅ ๊ทธ๋ฃน ํšŒ๊ณ 

๐Ÿ““ ๋ฉ˜ํ† ๋ง ์ผ์ง€

๐Ÿ“† ํšŒ์˜๋ก

๐Ÿง ๊ฐœ๋ฐœ์ผ์ง€

Clone this wiki locally