OpenVidu๊ฐ€ ๋ญ˜๊นŒ?

์šฐ๋ฆฌ์˜ ์›น ํ”„๋กœ์ ํŠธ ๋™์ž‘ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์›น ํŽ˜์ด์ง€ ์ ‘์†
  • vue๋กœ ๊ตฌํ˜„ํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€๊ฐ€ ๋„์›Œ์ง„๋‹ค.
  • ํ”„๋ก ํŠธ ๋‹จ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ http ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
  • spring์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ http ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋ฐฑ์—”๋“œ ๋‹จ์—์„œ ์„œ๋ฒ„๊ฐ€ http ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.
  • ํ”„๋ก ํŠธ์—”๋“œ ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ฆ‰ vue ํด๋ผ์ด์–ธํŠธ + spring ์„œ๋ฒ„ ๋กœ ๊ตฌ์„ฑ๋œ ์ƒํƒœ

์—ฌ๊ธฐ์— ํด๋ผ์ด์–ธํŠธ๋ผ๋ฆฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™”์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ(WebRTC) ์œ„ํ•ด ๋ฏธ๋””์–ด ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.(์‚ฌ์‹ค ํ”„๋ก ํŠธ ๋‹จ(ํด๋ผ์ด์–ธํŠธ)์—์„œ P2P ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆด ๊ฒฝ์šฐ ์ด๋ฅผ ๊ฐ๋‹นํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋จ. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ๋ฏธ๋””์–ด ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ฐ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ฏธ๋””์–ด ์„œ๋ฒ„๊ฐ€ ๊ฐ๋‹นํ•˜๋„๋ก ํ•œ๋‹ค. ๋งˆ์น˜ happyhouse ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ ํ”„๋ก ํŠธ์—์„œ ๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•ด์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ cors ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ(๋ถ€ํ•˜์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€๋ฏผ) ํด๋ผ์ด์–ธํŠธ๋ผ๋ฆฌ ์ง์ ‘ ํ†ต์‹ ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ)

WebRTC(Web Real-Time Communication) : ์›น ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ) ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ API. ํ™”์ƒ, ์Œ์„ฑ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์‹ ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฐ„ ํ†ตํ™”, ํŒŒ์ผ ์†ก์ˆ˜์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

Kurento๋ผ๋Š” ๋ฏธ๋””์–ด ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ณ  ์ด๋ฅผ ๊ตฌํ˜„ํ•ด๋‘” OpenVidu API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์ง„๋‹ค.

vue ํด๋ผ์ด์–ธํŠธ + ์„œ๋ฒ„ 2๊ฐœ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šฉ ์„œ๋ฒ„(spring ์„œ๋ฒ„), webRTC ์šฉ ์„œ๋ฒ„(OpenVidu ์„œ๋ฒ„))

์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” AWS์˜ ํด๋ผ์šฐ๋“œ Linux ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด๋‹ค. ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์— ๋„์ปค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์šฐ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์ธ spring ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•œ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ ์„œ๋ฒ„๋Š” www์— ๊ณต๊ฐœ๋˜์–ด ์–ด๋””์„œ๋“  ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ OpenVidu ์„œ๋ฒ„๋„ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•œ๋‹ค.

๋™์ž‘ ํ๋ฆ„์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ํ†ต์‹ ์€ http ํ†ต์‹ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ฒ ์ง€๋งŒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ ๋ฏธ๋””์–ด ์„œ๋ฒ„์˜ ํ†ต์‹ ์€ WebSocket์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.(์•„๋งˆ?) ์ถ”๊ฐ€๋œ ํ๋ฆ„๋งŒ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์ง„๋‹ค.

  • ์›น ํŽ˜์ด์ง€ ์ ‘์†
  • vue๋กœ ๊ตฌํ˜„ํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€๊ฐ€ ๋„์›Œ์ง„๋‹ค.
  • ํ”„๋ก ํŠธ ๋‹จ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ http ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
  • spring์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ http ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค.
  • spring ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ ๋‹ค์‹œ OpenVidu ์„œ๋ฒ„๋กœ WebSocket ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
  • OpenVidu ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  spring ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ WebSocket ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.
  • spring ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ WebSocket ์‘๋‹ต์„ ๋ฐ›์•„ ๋‚˜๋จธ์ง€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋ฐฑ์—”๋“œ ๋‹จ์—์„œ ์„œ๋ฒ„๊ฐ€ http ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.
  • ํ”„๋ก ํŠธ์—”๋“œ ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

WebSocket : ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์— ์ ํ•ฉํ•จ

๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ดํ•ดํ•œ ๋‚ด์šฉ์€ ์ด์ •๋„.