Skip to content

๐ŸŽ ๊ธฐํš ๋ฐ MVP ์œ ์ง€ ํšŒ์˜

Junsang Yu edited this page Nov 12, 2024 · 1 revision
๐Ÿ’ก

์›”์š”์ผ ๊ณ„ํš


  • ๊ธฐํš๊ณผ MVP ์œ ์ง€?
    • ์ˆ˜์ •์„ ํ•œ๋‹ค๋ฉด ์–ด๋””๋ฅผ?
  • โ—ย ๊ฐœ์ธ ๋ชฉํ‘œ
    • ์ฃผ๋ง์— ์ƒ๊ฐํ•ด์„œ ๋…ธ์…˜์— ์ ์–ด๋†“๊ธฐ
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ๊ฐœ์ธ ๋ชฉํ‘œ๋„ ์ข€ ๋ณด๊ธฐ
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ƒ๊ฐ ์•ˆํ•˜๊ณ  ์ด๊ธฐ์ ์œผ๋กœ ๋ชฉํ‘œ ์ƒ๊ฐํ•ด์˜ค๊ธฐ
    • ์กฐ๊ธˆ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ, ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋ญ˜ ์–ป๊ณ  ์‹ถ์€์ง€?
  • ๊ฐ ๋ถ„์•ผ์˜ ๋ชฉํ‘œ
  • ๋‹ค์‹œ ํ•œ ๋ฒˆ ํŒ€์žฅ(์ค‘์žฌ์ž)?
  • ์ด๋ฒˆ ์ฃผ ๊ณ„ํš ์ž‘์„ฑ

๊ฐœ์ธ ๋ชฉํ‘œ

  • J025
    • ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ๊ทผ๊ฑฐ๋ฅผ ๋ฌธ์„œํ™”
    • WebRTC, WebSocket ๋˜๋Š” [Socket.IO](http://Socket.IO)์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ
    • React์˜ ์ปดํฌ๋„ŒํŠธ, ์ƒํƒœ ๊ด€๋ฆฌ, ํ›…, ๋ Œ๋”๋ง ์ตœ์ ํ™”์— ๋Œ€ํ•œ ๊นŠ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ
      • ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„ ํŒจํ„ด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•ด๋ณด๊ณ  ์ ์šฉํ•ด๋ณด๊ธฐ
      • ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„ โ†’ Storybook์„ ์ž˜ ํ™œ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.
      • ์„œ๋ฒ„ ์ƒํƒœ๊ด€๋ฆฌ(useQuery), ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๊ด€๋ฆฌ(Zustand) ๋“ฑ์„ ํ™œ์šฉํ•œ ์ตœ์ ํ™”๋œ ์ƒํƒœ ๊ด€๋ฆฌ ์„ค๊ณ„
      • ์ ์ ˆํ•˜๊ฒŒ ์ปค์Šคํ…€ ํ›…์„ ์ž˜ ํ™œ์šฉํ•ด๋ณด๊ธฐ
      • useCallback, useMemo ๋“ฑ์„ ์‚ฌ์šฉํ•œ ๋ Œ๋”๋ง ์ตœ์ ํ™”
    • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ๊ณ ๋ คํ•˜๊ธฐ
    • ๊ฐœ์ธ์ ์ธ ์š•์‹ฌ
      • ๋ฒ ์ด์Šค ๊ธฐ๋Šฅ ์ดํ›„์— ๋‹จ์ˆœํžˆ โ€œ์—ดํ’ˆํƒ€โ€ ์„œ๋น„์Šค๋กœ์„œ์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„œ๋น„์Šค ์ธก๋ฉด์—์„œ๋Š” ๋ถ€๊ฐ€์ ์ด๋”๋ผ๋„ ๋„์ „ํ•ด๋ณผ๋งŒํ•œ ๋ถ€๋ถ„์„ ํ•ด๋ณด๊ณ  ์‹ถ์Œ
      • [Socket.IO](http://Socket.IO) ๊ธฐ๋ฐ˜์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „ํŒŒ๋ฅผ ํ†ตํ•œ ๊ณต์šฉ ์บ”๋ฒ„์Šค ๋“ฑ์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋˜๋Š” ๋‹ค์ค‘ ๋ฝ€๋ชจ๋„๋กœ ํƒ€์ด๋จธ ์‹ค์‹œ๊ฐ„ ๊ณต์œ 
      • ๋˜๋Š” MediaPipe(์–ผ๊ตด์ธ์‹), WebGL(์•„๋ฐ”ํƒ€๋ Œ๋”๋ง) ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž ์–ผ๊ตด์— ์•„๋ฐ”ํƒ€๋ฅผ ์”Œ์šฐ๋Š” ๊ธฐ๋Šฅ
  • J046
    • ๊ธฐ๋ณธ๊ธฐ ๋‹ค์ง€๊ธฐ
    • ์ตœ์†Œ ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ, ์ตœ๋Œ€ ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ ์™„๋ฒฝ ์ดํ•ดํ•˜๊ธฐ
    • webRTC ์ง„ํ•˜๊ฒŒ ํ•™์Šตํ•ด๋ณด๊ธฐ
    • ์ ‘๊ทผ์„ฑ ์‹ ๊ฒฝ์“ฐ๊ธฐ
  • J129
    • ํ”„๋กœ์ ํŠธ์˜ ๋ฒ ์ด์Šค ๊ธฐ์ˆ (WebRTC, WebSocket, ์›น(api) ๋“ฑ..)์— ๋Œ€ํ•ด ๋”ฅ๋‹ค์ด๋ธŒ ํ•ด๋ณด๋Š” ๊ฒฝํ—˜.
    • ๋ฐฐํฌ์— ๋Œ€ํ•ด ๊ฒฝํ—˜ํ•ด๋ณด๊ธฐ + ๋ฐฐํฌ ์ดํ›„ ์œ ์ € ํ”ผ๋“œ๋ฐฑ ๊ฒฝํ—˜ํ•ด๋ณด๊ธฐ.
    • ์‚ฌ์‹ค ํŠน์ • ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊นŠ์ด ์žˆ๋Š” ํ•™์Šต + ๋น ๋ฅธ ๋ฐฐํฌ๋ฅผ ํ†ตํ•œ ํ•™์Šต ๋ชจ๋‘ ํ•ด๋ณด๊ณ  ์‹ถ๊ธด ํ•จ.
    • ๋‹ค๋งŒ, ํ”„๋กœ์ ํŠธ ๋ฒ ์ด์Šค ๊ธฐ์ˆ ์„ ์ฒ˜์Œ ํ•™์Šตํ•˜๋Š” ์ž…์žฅ์ด๋ผ ํ”„๋กœ์ ํŠธ ์ง„๋„์— ๋Œ€ํ•œ ๊ฑฑ์ •์ด ์žˆ์Œ.
    • ์ •๋ฆฌ๋œ ๋ฌธ์„œํ™”๋ฅผ ํ•ด๋ณด๋ฉด ์ข‹๊ฒ ๋‹ค. ์ด์ „์—๋Š” ๋„ˆ๋ฌด ์ค‘๊ตฌ๋‚œ๋ฐฉ์œผ๋กœ ๋ฌธ์„œํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์Œ.
  • J166
    • ์ฒ˜์Œ์— ๋น„๋””์˜ค ์ฃผ์ œ ๊ณ ๋ฅผ๋•Œ HLS ๊ฐ™์€ ๋น„๋””์˜ค ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„์—์„œ ์Šค์ผ€์ผ๋ง ์‰ฌ์šด ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„์ง€๋ฉด ์„œ๋ฒ„๊ฐ€ ์Šค์ผ€์ผ ์•„์›ƒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ
    • ์ด์ „ ๋ชฉํ‘œ
      • ๊ธฐ์ˆ ์ ์ธ ๋„์ „
        • ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์Šค์ผ€์ผ๋ง ์‰ฌ์šด ๊ตฌ์กฐ
        • ์„œ๋ฒ„ API docs ๋ฌธ์„œํ™”(swagger)
        • ์—๋Ÿฌ์ฒ˜๋ฆฌ ์ž˜ํ•˜๊ธฐ
        • CI/CD ์Šคํฌ๋ฆฝํŠธ๋กœ ์‰ฌ์šด ๋ฐฐํฌ
        • ์—๋Ÿฌ ์›์ธ ๋ถ„์„ ๋กœ๊ทธ ๊ด€๋ฆฌํ•˜๊ธฐ(sentry?)
        • ํ…Œ์ŠคํŠธ?
      • ๋ฌธ์„œํ™” ์ž˜ํ•˜๊ธฐ
      • ์•„๋ฌด๋„ ์•ˆ์“ฐ๋Š”๊ฑฐ๋ณด๋‹ค ๋‚˜๋งŒ์ด๋ผ๋„ ์“ฐ๊ณ ์‹ถ์€ ๊ธฐํš
  • J290 : ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ทผ๊ฑฐ๋ฅผ ๋ฌธ์„œํ™”ํ•˜์ž โ†’ ๊ฐœ๋ฐœ์ผ์ง€ ๋А๋‚Œ
    • WebRTC ํ•™์Šต ๋ฐ ๊ตฌํ˜„ํ•˜๊ธฐ
    • 3~4์ฃผ ์ฐจ ๊ธฐํš ๊ณต์œ ์— ๋ฐฐํฌํ•˜๊ธฐ
    • ์ถ”ํ›„ ์˜คํ†  ์Šค์ผ€์ผ๋ง์— ๋Œ€ํ•ด ํ•™์Šต
    • latency ๊ฐ์†Œ ๋ฐฉ๋ฒ• ํ•™์Šต
    • ๋ฌธ์„œํ™” ์Šต๊ด€ํ™”
    • ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ๋„ ์–ด๋А์ •๋„ ํ•™์Šตํžˆ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค
    • ๊ธฐ์กด ์ƒ๊ฐ โ€˜๋‚˜๋ผ๋ฉด ์“ธ ์„œ๋น„์Šค์ธ๊ฐ€?โ€™ โ†’ ์ด๊ฑด ํ์ง€

๊ธฐํš๊ณผ MVP ์œ ์ง€?

  • J166
    • ์ฒ˜์Œ ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๊ณ ๋ฅธ ์ด์œ : HLS๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ์— ๊ด€์‹ฌ์ด ๋งŽ์•˜์Œ

      โ‡’ HLS ์‚ฌ์šฉ ์‹œ ๊ธฐํš ์ˆ˜์ • ํ•„์š”

    • ์–ด๋–ค ๊ธฐ๋Šฅ/๊ด€์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๊ฒƒ์ธ๊ฐ€ โ†’ ๋ฐฑ์—”๋“œ์—์„œ๋Š” ์Šค์ผ€์ผ๋งํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ์— ๊ฐ๋ช…๋ฐ›์Œ

    • WebRTC๋Š” ํŠน์ดํ•œ ๊ธฐ์ˆ  ๊ฐ™์Œ + ํ•œ๊ณ„ ๋งŽ์Œ

    • ๋กœ์ปฌ์—์„œ๋Š” ํ•ด๋ณด์•˜์ง€๋งŒ ์™ธ๋ถ€์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์ง„ ์•Š์•˜์Œ

    • WebRTC์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋ ค๋ฉด ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/์„œ๋น„์Šค(์˜ˆ์‹œ : OpenVidu) ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์ด ์•„์‰ฌ์› ์Œ

  • J290
    • ์Šค์ผ€์ผ๋งํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์‹ถ๋‹ค.
    • ์ฒ˜์Œ์—๋Š” WebRTC๋กœ ์Šค์ผ€์ผ๋ง์„ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, WebRTC๋กœ๋Š” ์Šค์ผ€์ผ๋ง์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
    • WebRTC์— SFU๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์ง€ ์•Š์„๊นŒ?
  • J025
    • (ํ˜„์žฌ ๊ธฐํš ๊ธฐ์ค€ WebRTC + Socket IO ๊ฐ™์€) ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๊นŠ์ด ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ
    • ์„œ๋น„์Šค์ ์ธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋กœ๋Š” ๋ฐฐ์›Œ๊ฐ€๋Š” ๊ฒƒ์ด ๋งŽ์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Œ
      • ํ”„๋ก ํŠธ์—์„œ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋„์ „์„ ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค ex. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
    • ๋ฆฌ์•กํŠธ๋ฅผ ํ™•์‹คํžˆ ๋ฐฐ์›Œ๊ฐ€๋Š” ๊ฒƒ์ด ํ”„๋ก ํŠธ์—”๋“œ์—์„œ์˜ ๊ฐœ์ธ์  ๋ชฉํ‘œ
    • ์ ‘๊ทผ์„ฑ โ†’ ์˜์ƒ ์ชฝ ์ฃผ์ œ์—์„œ ์›น ์ ‘๊ทผ์„ฑ์ด ๋งŽ์ด ์ค‘์š”ํ• ๊นŒ..?
    • WebRTC์˜ ํ•œ๊ณ„๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ๋„์ „ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์‚ฌํ•ญ?
  • J046
    • ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์—†์ด ํ•ต์‹ฌ ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜์ž. ๋Œ€์‹  ํ€„๋ฆฌํ‹ฐ ์žˆ๊ฒŒ
    • ๊ธฐํš์„ ์ง€๊ธˆ ๋ณ€๊ฒฝํ•˜๋Š”๊ฑด x
    • ๋ฒ ์ด์Šค ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜๊ธฐ
  • J129
    • ๊ธฐ์ˆ ์„ ๊นŠ๊ฒŒ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์ฃผ์ œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™๋‹ค.

๊ณตํ†ต ์˜๊ฒฌ : ํ•ต์‹ฌ์— ์ง‘์ค‘ํ•˜์ž

SFU ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๋ถ€๋ถ„์ด ์ถฉ๋ถ„ํžˆ ์ฑŒ๋ฆฐ์ง•ํ•œ ๊ณผ์ •์ผ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

  • ๊ฐ€์žฅ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ํ™”์ƒ ํšŒ์˜ ๊ธฐ๋Šฅ ํ•™์Šต ๋ฐ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•œ๋‹ค.
  • ๊ธฐ์กด ๊ธฐํš์„ ์œ ์ง€ํ•˜๋˜ SFU ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰

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

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

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

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

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

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

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

Clone this wiki locally