Skip to content

๐Ÿ‘€We Are Lie๋Š” ๋ณด๋“œ๊ฒŒ์ž„ '์ŠคํŒŒ์ด ํด' ์„ ๋ชจํ‹ฐ๋ธŒ๋กœํ•œ ํ™”์ƒ์ฑ„ํŒ…์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ์˜จ๋ผ์ธ ๋ณด๋“œ๊ฒŒ์ž„ ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค !(~2022.12.22)

Notifications You must be signed in to change notification settings

tastekim/WeAllLie-BE

Repository files navigation

๐Ÿฑ์˜จ๋ผ์ธ ํ™”์ƒ์ฑ„ํŒ… ๋ณด๋“œ๊ฒŒ์ž„, We All Lion

600

'We All Lion' ์€ ๋ณด๋“œ๊ฒŒ์ž„ '์ŠคํŒŒ์ด ํด' ์„ ๋ชจํ‹ฐ๋ธŒ๋กœ ๋งŒ๋“  ์˜จ๋ผ์ธ ํ™”์ƒ ์ฑ„ํŒ… ๋ณด๋“œ๊ฒŒ์ž„ ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค.


1. ์†Œ๊ฐœ

๐Ÿ“Notion

๐Ÿ“†๊ธฐ๊ฐ„

  • 2022.11.04 ~ 2022.12.16 (6์ฃผ)

๐Ÿ‘จโ€๐Ÿ’ปํŒ€์›

Position ใ€€Nameใ€€ blog Github
BE L ๊น€์—ฐ์„ https://tastekim.notion.site/ https://github.com/tastekim
BE ๊น€ํ˜•์„ https://stone1207.tistory.com/ https://github.com/kimhsno1
BE ์†ก๋ฏผํ˜• https://www.notion.so/Home https://github.com/Minhyeong-S
BE ์ตœ์œค์ง„ https://velog.io/@yunjin5450 https://github.com/yunjin5450
FE VL ๊ฐ•์Šนํ›ˆ https://velog.io/@deepthink https://github.com/seunghoonKang
FE ๋ฐ•ํ•˜์€ https://haro-e.tistory.com/ https://github.com/parkharoi
FE ์ตœ์ง„์˜ https://www.notion.so/yoooooooung/ https://github.com/yoooooooung
Design ์ด์ฃผ์€ https://cloudtraveljournal.tistory.com Gmail : zooni0630@gmail.com

2. ์„œ๋น„์Šค

๐Ÿ‘จโ€๐Ÿซ์„œ๋น„์Šค ์†Œ๊ฐœ

  • ์‚ฌ์ž๋“ค ์‚ฌ์ด์— ์ˆจ์–ด๋“  ๊ณ ์–‘์ด๋กœ ๋””์ž์ธ ์ปจ์…‰์„ ์ •ํ•ด ๋ชจ๋“  ์—ฐ๋ น๋Œ€๊ฐ€ ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์†Œ 4๋ช… ๋ถ€ํ„ฐ ์ตœ๋Œ€ 8๋ช… ๊นŒ์ง€ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•œ ๊ฒŒ์ž„ ๊ทœ์น™์œผ๋กœ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋ผ๋ฆฌ?! ์ง€์ธ๋“ค๊ณผ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ๋น„๋ฐ€๋ฐฉ ์„ค์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…๊ณผ ์บ ์œผ๋กœ ์œ ์ €๋“ค๊ณผ ์†Œํ†ตํ•˜๋ฉฐ ์˜จ๋ผ์ธ์œผ๋กœ ์ง€๊ธˆ ๋‹น์žฅ ๊ฒŒ์ž„์„ ์ฆ๊ฒจ๋ณด์„ธ์š”!

๐Ÿ“ฐํŽ˜์ด์ง€ ์†Œ๊ฐœ

๊ฒŒ์ž„์„ค๋ช… & ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๋กœ๋น„ ํŽ˜์ด์ง€
์œ ์ € ํ”„๋กœํ•„ ๋ณ€๊ฒฝ ๋ฐฉ ๋งŒ๋“ค๊ธฐ
๋ฐฉ ์ž…์žฅ & ๋Œ€๊ธฐ ํŽ˜์ด์ง€ ๊ฒŒ์ž„์‹œ์ž‘ ํŽ˜์ด์ง€
๊ฒŒ์ž„ํˆฌํ‘œ ํŽ˜์ด์ง€ ๊ฒŒ์ž„์ข…๋ฃŒ ํŽ˜์ด์ง€

๐Ÿ”๊ธฐ๋Šฅ์†Œ๊ฐœ

๊ฒŒ์ž„์„ค๋ช… & ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

  • ์นด์นด์˜ค ์†Œ์…œ๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž…
  • ๊ฒŒ์ž„ ์„ค๋ช… ๋ชจ๋‹ฌ

๋กœ๋น„ ํŽ˜์ด์ง€

  • ๋ฐฉ ๋ชฉ๋ก (๋ฐฉ ์ •๋ณด ์‹ค์‹œ๊ฐ„ ํ™•์ธ ๊ฐ€๋Šฅ : ์ธ์›, ๋ชจ๋“œ, ๋ฐฉ ์ƒํƒœ ๋“ฑ)
  • ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ (๊ณต๊ฐœ & ๋น„๊ณต๊ฐœ / EASY & HARD)
  • ๋กœ๋น„ ์ „์ฒด ์ฑ„ํŒ…

์œ ์ € ํ”„๋กœํ•„ ๋ณ€๊ฒฝ

  • ์ด๋ฏธ์ง€, ์œ ์ €์ด๋ฆ„, ๊ฒŒ์ž„ ์Šน๋ฅ 
  • ์œ ์ € ์ด๋ฆ„ ์ˆ˜์ •

๋ฐฉ ๋งŒ๋“ค๊ธฐ

  • ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ (๊ณต๊ฐœ & ๋น„๊ณต๊ฐœ / EASY & HARD)

๋ฐฉ ์ž…์žฅ & ๋Œ€๊ธฐ ํŽ˜์ด์ง€

  • ๋ฐฉ ์ •๋ณด (๋ชจ๋“œ, ์ธ์› ๋“ฑ)
  • ๊ฒŒ์ž„ ์ค€๋น„/ ๊ฒŒ์ž„ ์‹œ์ž‘
  • ๋ฐฉ ์ „์ฒด ์ฑ„ํŒ…
  • ๋งˆ์ดํฌ, ์นด๋ฉ”๋ผ ๊ธฐ๋Šฅ

๊ฒŒ์ž„์‹œ์ž‘ ํŽ˜์ด์ง€

  • ๊ฐ์ž ์—ญํ•  ์นด๋“œ ๋ถ„๋ฐฐ / ์ œ์‹œ์–ด ์นดํ…Œ๊ณ ๋ฆฌ & ๋‹จ์–ด ๋ชจ๋‹ฌ
  • ์‚ฌ์ „ ํˆฌํ‘œ ๊ธฐ๋Šฅ

๊ฒŒ์ž„ํˆฌํ‘œ ํŽ˜์ด์ง€

  • ์ŠคํŒŒ์ด ํˆฌํ‘œํ•˜๊ธฐ
  • ์ŠคํŒŒ์ด ์ •๋‹ต ์ œ์‹œ์–ด ์„ ํƒ

๊ฒŒ์ž„์ข…๋ฃŒ ํŽ˜์ด์ง€

  • ์ŠคํŒŒ์ด ๋ฐํžˆ๊ธฐ
  • ์žฌ์‹œ์ž‘ ๋ฐ ๋‚˜๊ฐ€๊ธฐ

3. ๊ตฌ์กฐ

๐Ÿคนโ€โ™‚๏ธ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜


KakaoTalk_20221215_222023461

๐Ÿ“ŠERD

ERD

erd

๐Ÿ“ˆํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ

ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ

โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ nodemon.json
โ”œโ”€โ”€ package-lock.json
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ server.js
โ”œโ”€โ”€ src
โ”‚ย ย  โ”œโ”€โ”€ app.js
โ”‚ย ย  โ”œโ”€โ”€ chat
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ chat-socket.js
โ”‚ย ย  โ”œโ”€โ”€ game
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ game-provider.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ game-repo.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ game-socket.js
โ”‚ย ย  โ”œโ”€โ”€ middlewares
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ auth-middleware.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ exception.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ passport
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ kakao-stratege.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ socket-auth-middleware.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ test.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ user-error-handler.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ wrap-async-controller.js
โ”‚ย ย  โ”œโ”€โ”€ redis.js
โ”‚ย ย  โ”œโ”€โ”€ rooms
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ room-provider.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ room-repo.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ room-socket.js
โ”‚ย ย  โ”œโ”€โ”€ schemas
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ game.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ room.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ user.js
โ”‚ย ย  โ”œโ”€โ”€ socket.js
โ”‚ย ย  โ”œโ”€โ”€ users
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ user-controller.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ user-repo.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ user-route.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ user-service.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ util
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ jwt.js
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ user-function.js
โ”‚ย ย  โ””โ”€โ”€ webRTC
โ”‚ย ย      โ””โ”€โ”€ webRTC.js
โ”œโ”€โ”€ test
โ”‚ย ย  โ”œโ”€โ”€ mockData
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ user-data.js
โ”‚ย ย  โ””โ”€โ”€ user-test
โ”‚ย ย      โ”œโ”€โ”€ jwt.spec.js
โ”‚ย ย      โ”œโ”€โ”€ user-controller.spec.js
โ”‚ย ย      โ”œโ”€โ”€ user-function.spec.js
โ”‚ย ย      โ”œโ”€โ”€ user-repo.spec.js
โ”‚ย ย      โ””โ”€โ”€ user-service.spec.js
โ””โ”€โ”€ ์ œ๋ชฉ ์—†๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ.drawio

๐Ÿ› ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ 

  • BackEnd


  • FrontEnd


โ‰๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ •

  • BE

    1. Nginx

    ใ€€์‚ฌ์šฉ์ด์œ 

    • event-driven์˜ ๋น„๋™๊ธฐ ๊ตฌ์กฐ์ด๋ฏ€๋กœ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด๋‚˜ RTC๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ ํ•  ๋•Œ, ๋™์‹œ ์ ‘์†์ž ์ˆ˜๊ฐ€ ์ฆ๊ฐ€๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์ ํ•ฉํ•œ ๋ฐฉ์‹์˜ ์›น ์„œ๋ฒ„๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ NginX๋Š” ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹, ๋น„๋™๊ธฐ์‹ ์ฒ˜๋ฆฌ, ๋…ผ๋ธ”๋กœํ‚น ๋ฐฉ์‹ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ณ ์†์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํŠน์ง•์ด ์žˆ์–ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๋™์‹œ ์ ‘์†์ž ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ๋„ Apache์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์ด ๋‚ฎ๊ณ , ์ฒ˜๋ฆฌํ•˜๋Š” ์ดˆ ๋‹น ์š”์ฒญ ์ˆ˜๊ฐ€ ์•ž๋„์ ์œผ๋กœ ๋†’์€ ๋ชจ์Šต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๊ณ  ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • reverse proxy๋กœ ์„œ๋ฒ„ ํ™•์žฅ์— ์šฉ์ดํ•˜๊ณ  ๋ณด์•ˆ์ ์œผ๋กœ ๋›ฐ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    2. Socket.io

    ใ€€์‚ฌ์šฉ์ด์œ 

    • ํ†ต์ƒ์ ์œผ๋กœ ์‚ฌ์šฉ์ž(์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋œ ์†Œ์ผ“๋“ค)์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ์„œ๋น„์Šค์—๋Š” socket.io์— ์žˆ๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ํšจ์œจ์ ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    • socket์„ ์ด์šฉํ•ด์„œ ๊ฒŒ์ž„ ๋กœ์ง๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  socekt์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ด์„œ ์„œ๋น„์Šค ๋‚ด์—์„œ ํ™œ์šฉํ•˜๋Š” ๋ถ€๋ถ„๋“ค์„ ์ƒ๊ฐํ•˜๋ฉด socekt.io๊ฐ€ ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
    3. Redis

    ใ€€์‚ฌ์šฉ์ด์œ 

    • ๊ฐ ๊ฒŒ์ž„์— ๋Œ€ํ•ด ํˆฌํ‘œ ๊ฒฐ๊ณผ ์ง‘๊ณ„๋‚˜ ์ค€๋น„ ์ƒํƒœ ๋“ฑ DB์— ์ €์žฅํ•  ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    • I/O์— ๋นˆ๋ฒˆํ•œ ๊ฐ„๋‹จํ•œ ์•ก์…˜๋“ค์— ๋Œ€ํ•ด ๊ฐ€๋ณ๊ฒŒ ์ €์žฅํ•ด ๋‘˜ DB์— memcached๋ž‘ redis ๊ฐ€ ํ›„๋ณด์˜€์Šต๋‹ˆ๋‹ค. memcached๋ณด๋‹ค redis๊ฐ€ cloud์„œ๋น„์Šค๋กœ ์ œ๊ณต์ด ์ดˆ๊ธฐ ์„ธํŒ…ํ•˜๊ธฐ์— ๋” ๋นจ๋ผ์„œ ์„ ํƒํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.
    • ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋“ค๊ณผ key, value ํ˜•์‹์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” DB๋ผ์„œ I/O์„ ๋‹ค๋ฃจ๊ธฐ์—๋Š” redis๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    • redis๋ฅผ ์„ ํƒํ•  ๋•Œ local๊ณผ cloud ๋‘๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์—ˆ๋Š”๋ฐ ํ˜‘์—…ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์•„๋ฌด๋ž˜๋„ local๋ณด๋‹จ cloud๊ฐ€ ๋” ํšจ์œจ์ ์ผ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    4. JWT

    ใ€€์‚ฌ์šฉ์ด์œ 

    • ์นด์นด์˜ค์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ accessToken์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ ์นด์นด์˜ค์˜ accessToken ์˜ ์œ ํšจ์‹œ๊ฐ„์ด 11์‹œ๊ฐ„์œผ๋กœ ๊ต‰์žฅํžˆ ๊ธด ํŽธ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ง์ ‘ accessToken์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ์œ ํšจ์‹œ๊ฐ„์„ ์ค„์—ฌ ๋ณด์•ˆ์„ ์กฐ๊ธˆ ๋” ๊ฐ•ํ™”ํ•˜๊ณ ์ž ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์„ธ์…˜ ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ณ„๋„์˜ ์ธ์ฆ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•„ ์„œ๋ฒ„์™€์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ตœ์†Œํ•œ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์–ด ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์ ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    5. MongoDB

    ใ€€์‚ฌ์šฉ์ด์œ 

    • ํ”„๋กœ์ ํŠธ์—์„œ DB์— ์ €์žฅํ•˜๋Š” ๋Œ€์ƒ์€ ์œ ์ €(์ „์ , ๊ฐœ์ธ์ •๋ณด) / ๋ฃธ / ๊ฒŒ์ž„ ์ด๋ ‡๊ฒŒ ์„ธ ๊ฐ€์ง€ ํ…Œ์ด๋ธ”(์ฝœ๋ ‰์…˜) ๋ฐ–์— ํ•„์š”ํ•˜์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ ๊ฐ„์˜ ์ข…์†์„ฑ์ด ๋งŽ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฒŒ์ž„ ๋‚ด์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ•˜๋Š” ์ •๋ณด๋‚˜ ๋ฐฉ ์ƒํƒœ์˜ ๋ณ€ํ™”์˜ ๊ฒฝ์šฐ ์ผ์‹œ์ ์ธ ์ •๋ณด๋Š” Redis๋ฅผ ํ†ตํ•ด์„œ ์ €์žฅํ•˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, Redis๋กœ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ „๋ถ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋Š” ์—†๊ธฐ์— DB๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ณ , ๋˜ ๊ต‰์žฅํžˆ ์ž์ฃผ DB์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์—ฐ๊ฒฐ์‹œ์ผœ์„œ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค์‹œํ”ผํ•˜๊ธฐ์— ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฅธ NoSQL์ด ์šฐ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ์™€ ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์†Œ์ผ“์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋งŽ์€ ์ •๋ณด๊ฐ€ ์ƒ์„ฑ, ๋ณ€๊ฒฝ๋˜๋Š” ์„œ๋น„์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋นจ๋ฆฌ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    6. Prettier / ESLint / Babel

    ใ€€์‚ฌ์šฉ์ด์œ 

    • prettier ๊น”๋”ํ•œ ์ฝ”๋“œ์™€ ํ˜‘์—…์„ ์œ„ํ•ด์„œ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์ œ๊ณตํ•ด์ค€๋‹ค ์ƒ๊ฐํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • eslint ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ๋ฐฉ์‹์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค ์ƒ๊ฐํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • babel Babel์„ ์ด์šฉํ•˜๋ฉด ES6 ์ด์ƒ์˜ ์ตœ์‹  ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ES5 ์ดํ•˜์˜ ์˜ˆ์ „ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ์†Œ์Šค ์ฝ”๋“œ ๋‚ด์˜ ๋ฌธ๋ฒ•์˜ ํ˜•ํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด ๋‹ค์–‘ํ•œ ์‹คํ–‰ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค ์ƒ๊ฐํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

ใ€€ใ€€๐Ÿ‘‰ ๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ •

โšฝํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

  • BE

ใ€€ใ€€๐Ÿ‘‰ ์นด์นด์˜ค์†Œ์…œ ๋กœ๊ทธ์ธ : ํ”„๋ก ํŠธ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ถˆ๊ฐ€

ใ€€ใ€€๐Ÿ‘‰ socket.js ๊ธฐ๋Šฅ๋ณ„ ๋ถ„๋ฆฌ ์ค‘ ์—ฐ๊ฒฐ ์—๋Ÿฌ

ใ€€ใ€€๐Ÿ‘‰ ํŠน์ • ๋ฃธ์œผ๋กœ ์ฑ„ํŒ…๋ฉ”์„ธ์ง€ ์ „๋‹ฌ ๋ถˆ๊ฐ€ (Socket.io)

ใ€€ใ€€๐Ÿ‘‰ docker image๋กœ ์„œ๋ฒ„ ์‹คํ–‰ ์‹œ 'Javascript heap out of memory' ํ˜„์ƒ

ใ€€ใ€€๐Ÿ‘‰ docker์—์„œ openvidu ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ SFU ๋ฐฉ์‹ ํ…Œ์ŠคํŠธ ์ง„ํ–‰ ๋‚ด์šฉ


4. ๊ธฐํƒ€

๐Ÿ’ปGitHub

About

๐Ÿ‘€We Are Lie๋Š” ๋ณด๋“œ๊ฒŒ์ž„ '์ŠคํŒŒ์ด ํด' ์„ ๋ชจํ‹ฐ๋ธŒ๋กœํ•œ ํ™”์ƒ์ฑ„ํŒ…์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ์˜จ๋ผ์ธ ๋ณด๋“œ๊ฒŒ์ž„ ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค !(~2022.12.22)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published