Project

์Œ์„ฑ ์ฑ„ํŒ… ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ - TOVE ON

๐Ÿค“ ๊ฐœ์š”

์Šค๋งˆ์ผ๊ฒŒ์ดํŠธ ์Šคํ† ๋ธŒ์—์„œ DEV CAMP ์ธํ„ด ํ™œ๋™์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๋งŒ๋“  ํ”„๋กœ์ ํŠธ์ด๋‹ค.
์Œ์„ฑ ์ฑ„ํŒ…, ํ…์ŠคํŠธ ์ฑ„ํŒ…์„ ๋‚ด์žฅํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฉฐ ์›น๊ณผ ์•ฑ์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋„๋ก ์›น ๋ฒ„์ „, ๋ชจ๋ฐ”์ผ ๋ฒ„์ „์œผ๋กœ ๊ฐœ๋ฐœํ–ˆ๋‹ค.

๊ธฐ์ˆ  ์Šคํƒ

Front-end : VueJS(Web), Android(Mobile), WebRTC(์Œ์„ฑ ํ”ผ์–ด ์—ฐ๊ฒฐ)
Back-end : Spring boot, Spring WebSocket (STOMP Pub/Sub), Spring Security, Redis, MariaDB, CoTRUN
Infra : Aws S3, Aws RDS, Aws Elastic LoadBalance, Nginx
ํ˜‘์—… : GIT, GitLab, Zira

์—ญํ• 

์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„ ๊ตฌ์ถ•

ํ…์ŠคํŠธ ์ฑ„ํŒ… ์„œ๋ฒ„ ๊ตฌ์ถ•

  • ํ…์ŠคํŠธ ์ฑ„ํŒ… ๋ฐฉ ์ž…์žฅ ๋ฐ ํ‡ด์žฅ ๋กœ์ง ๊ตฌํ˜„
  • ๋ฉ”์„ธ์ง€ DB & FILE ๋กœ๊น…
  • RabbitMQ STOMP Broker ์‚ฌ์šฉ


์›น ํ”„๋ก ํŠธ ๊ตฌํ˜„

  • ์Œ์„ฑ ์ฑ„ํŒ… ๊ธฐ๋Šฅ ๋ฐ UI ๊ตฌํ˜„
  • ์Œ์„ฑ ์ปจํŠธ๋กค ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

์ „์ฒด ์•„ํ‚คํ…์ฒ˜

์ธ์ฆ ์ฑ„๋„ ์•„ํ‚คํ…์ฒ˜

ํ…์ŠคํŠธ ์ฑ„ํŒ… ์•„ํ‚คํ…์ฒ˜

์Œ์„ฑ ์ฑ„ํŒ… ์•„ํ‚คํ…์ฒ˜

์Œ์„ฑ ํ†ต์‹  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„์„ ์œ„ํ•œ Peer ์—ฐ๊ฒฐ๋กœ Full Mesh ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ,
Full Mesh๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ํ•ด๋‹น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•  ๋•Œ ์ตœ๋Œ€ ์ธ์›์„ 8์ธ ์ดํ•˜๋กœ ์„ค์ •ํ•ด๋‘์—ˆ๊ณ ,
์˜์ƒ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์Œ์„ฑ๋ฐ์ดํ„ฐ๋งŒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Full Mesh ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ–ˆ๋‹ค.

๐Ÿค“ ์„ฑ๊ณผ ๋ฐ ๋‹ฌ์„ฑ

์Œ์„ฑ์ฑ„ํŒ…

  • WebRTC๋ฅผ ์œ„ํ•œ ์‚ฌ์šฉ์ž์˜ ๋„คํŠธ์›Œํฌ ์ •๋ณด ๊ตํ™˜ ( ICE candidate ), ๋ฏธ๋””์–ด ์ •๋ณด ๊ตํ™˜, ์„ธ์…˜ ์ปจํŠธ๋กค ์ˆ˜ํ–‰
  • ๋ณด์•ˆ์„ ์œ„ํ•œ ์„ธ์…˜ ์—ฐ๊ฒฐ ์ „ JWT๋ฅผ ์‚ฌ์šฉํ•ด AUTH ์„œ๋ฒ„๋กœ ์ธ์ฆ
  • ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ํ™˜๊ฒฝ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ฐ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋œ ์„ธ์…˜ ์ˆ˜๋ฅผ Redis์— ์บ์‹ฑ
  • ๋ฐฉํ™”๋ฒฝ์— ์˜ํ•œ Symmetric NAT ํ™˜๊ฒฝ์— ๋Œ€๋น„ํ•œ ๋ฆด๋ ˆ์ด ํ†ต์‹ ์„ ์ง€์›ํ•ด์ฃผ๋Š” TURN ์„œ๋ฒ„ ๊ตฌ์ถ•

์ฐธ๊ณ  : https://withseungryu.tistory.com/138?category=917456

[WebRTC] TURN ์„œ๋ฒ„์˜ ํ•„์š”์„ฑ

WebRTC ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ด ์Œ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด ํ…Œ์ŠคํŠธํ•˜๋Š” ์ค‘ P2P ์—ฐ๊ฒฐ์ด ์ž˜ ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์›์ธ์„ ์ฐพ์•„๋ณด๋ ค๊ณ  ์ฝ”๋“œ๋ฅผ ๊ณ„์† ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ์‹คํ–‰์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ LTE๋ฅผ ์‚ฌ์šฉํ•˜๊ณ 

withseungryu.tistory.com

ํ…์ŠคํŠธ์ฑ„ํŒ…

  • ๋ฉ”์‹œ์ง€์˜ ํšจ์œจ์ ์ธ ์ „์†ก์„ ์œ„ํ•œ STOMP ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ
  • ๋ณด์•ˆ์„ ์œ„ํ•œ ์„ธ์…˜ ์—ฐ๊ฒฐ ์ „ JWT๋ฅผ ์‚ฌ์šฉํ•ด AUTH ์„œ๋ฒ„๋กœ ์ธ์ฆ๊ณผ ๋ฉ”์‹œ์ง€ ๋กœ๊น…
  • ํ™•์žฅ์„ฑ, ๊ฒฐํ•จ ํ—ˆ์šฉ์„ฑ, ๊ฐ„ํŽธํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ External Broker๋กœ RabbitMQ STOMP ๋ธŒ๋กœ์ปค ์‚ฌ์šฉ

๐Ÿค“ ๋ฐœํ‘œ ์˜์ƒ

๋ฐ˜์‘ํ˜•