-
Notifications
You must be signed in to change notification settings - Fork 1
Home

๋ฒ ํ ๋ ํ๋ก์ ํธ๋ ๋ ๊ฐ์ ์ต์ ์ค ํ๋์ ์ฝ์ธ์ ๊ฑธ๋ฉฐ ๋ฒ ํ ์ ์ฆ๊ธธ ์ ์๋ ์๋น์ค์ ๋๋ค.
์ค์๊ฐ ๋ฒ ํ
, ์ฑํ
์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด Socket.IO
๋ฅผ ์ฌ์ฉํ์๊ณ , ์ฝ์ธ์ผ๋ก ์ฌ์ฉํ๋ 3D ์ค๋ฆฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด Three.js
๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
โฃ ํ๋ก์ ํธ ๋ ํฌ์งํ ๋ฆฌ๋ก ์ด๋
โฃ ๋ฐฐํฌ ์ฌ์ดํธ๋ก ์ด๋
โ๏ธ ๋ด๋น ์์ :
- ๋ฒ ํ ์์คํ ์ ์ ์ฒด ํ๋ฆ ์ค๊ณ ๋ฐ ์บ์ ์ ๋ต ์ ์ฉ
- ๋ฒ ํ API ๊ตฌํ
- ๋ฒ ํ ๊ด๋ จ Socket.IO ์ด๋ฒคํธ ๊ตฌํ
- CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
โ๏ธ ๋ฐฐ์ด ์ ๋ฐ ๋๋ ์ :
- ์์ผ IO๋ฅผ ํตํด ์ค์๊ฐ ํต์ ์ ๊ตฌํํ๋ฉฐ, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ํ ์ดํด๋ฅผ ๋์์ต๋๋ค.
- Redis๋ฅผ ์ค์ ์ ์ผ๋ก ํ์ฉํ๋ฉด์, ๋ฐ์ดํฐ ์บ์ฑ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ค์ ์์ ์ ํตํด Redis์ ๋ํ ์ดํด๋ฅผ ์์์ต๋๋ค.
- ํ๋ก ํธ์๋์์ ํ์ ๊ณผ์ ์์ ๋ฌธ์ํ๋ฅผ ๊ผผ๊ผผํ๊ฒ ์ฑ๊ธฐ์ง ๋ชปํด ํ๋ก ํธ ํ์์๊ฒ ๋ถ์ฑ๊ฐ ๋์๋ ์ ์ด ์์ต๋๋ค. ๋ฌธ์ํ์ ์ค์์ฑ์ ๋ค์ ํ๋ฒ ์ค๊ฐํ์ต๋๋ค.
โ๏ธ ํ์ต ์ ๋ฆฌ ๊ณต์ ๋งํฌ:
- ๋์์ฑ ๋ฌธ์ ์ ์ด ๋ฐฉ๋ฒ
- ๋ฒ ํ ๋์ ์ ์ฉํ ๋ค์ํ ์บ์ ์ ๋ต
- Redis ๋ฉ๋ชจ๋ฆฌ ์ค์ ๋ฐ ์ต์ ํ
โ๏ธ ์์ฌ์ ๋ ์ :
- ๋ถํ ํ ์คํธ ๋ฐ ์์ ์ฑ ํ ์คํธ๋ฅผ ์ถฉ๋ถํ ์ํํ์ง ๋ชปํ ์ ์ด ์์ฝ์ต๋๋ค.
- ๊ธฐ๋ฅ ๊ตฌํ์ ์ง์คํด CS ํ์ต์ ์ํํ ํ ๊ฒ์ด ์์ฝ์ต๋๋ค.
โ๏ธ ๋ฆฌํฉํ ๋ง ๊ฐ์ธ ๋ชฉํ:
- ์๋น์ค ์์ ์ฑ์ ๊ฐํํ๊ธฐ ์ํ Redis Sentinel ๋์
- Redis ๋ฉ์์ง ํ๋ฅผ ๊ฐ์ ํด๋ณด๊ธฐ
โ๏ธ ๋ด๋น ์์ :
- ๋ก๊ทธ์ธ(ํ์, ๋นํ์)/ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ
- ๋ฒ ํ ์์ฑ ํผ ๊ตฌํ + ์ฑ๋ฅ ๊ฐ์
- ๋ฒ ํ ๊ด๋ฆฌ์ ํ์ด์ง ๊ตฌํ
- ๋ฒ ํ ๊ฒฐ๊ณผ ์ ํ ํ์ด์ง ๊ตฌํ
- ๋ฒ ํ ์ข ๋ฃ ํ ๊ฒฐ๊ณผ ํ์ด์ง ๊ตฌํ
- Husky ๋์ ํด ์ปค๋ฐ ๋ฉ์ธ์ง ์๋ํ, Lint ์ฒดํฌ ์๋ํ ์ ์ฉ
- UI ๊ฐ์ ์ ์ํ ์ฌ์ฉ์ ํผ๋๋ฐฑ ๋ฐ์: ์ฌ์ฉ์ ๋์ UI ํฌํ ์งํ ๋ฐ UI ๊ฐ์
โ๏ธ ๋ฐฐ์ด ์ ๋ฐ ๋๋ ์ :
- CI/CD ๊ณผ์ ์ด ์กฐ๊ธ ๊ท์ฐฎ๋๋ผ๋ ํ ๋ฒ ์ ๊ตฌ์ถํด๋๋ฉด ํ์ ์ ํฐ ๋์์ด ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
- ์ง๊ธ ๋น์ฅ ๊ธฐ๋ฅ ๊ตฌํ์ด ๊ธํด ์ ์์ง ๋ชป ํ๋ ์ํ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค ํ์ ๋ ๊ทธ๋ก ์ธํ ์ฌ์ด๋์ดํํธ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์๊ฐ์ด ๋ง์ด ์๋๋ผ๋ ์ ์ด๋ ์ง๊ธ ๋น์ฅ ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ์ง์์ ์ง๊ณ ๋์ด๊ฐ๋ ๊ฒ ์ข๋ค๊ณ ์๊ฐํ๊ฒ ๋์์ต๋๋ค.
- ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํด๋์ง ์์๋ค๊ฐ API ๋ช ์ธ๊ฐ ๋ฐ๋์์ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ๋ชจ๋ ์์ ํด์ผํ๋ ๋ถํธํจ์ ๊ฒช์ ์ดํ, ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํด๋๋ ๊ฒ์ ๋ํ ์ค์์ฑ์ ๊นจ๋ฌ์์ต๋๋ค.
โ๏ธ ํ์ต ์ ๋ฆฌ ๊ณต์ ๋งํฌ:
- ๋ฒ ํ ์์ฑ ํ์ด์ง์์ ์์ด์ฝ์ด ํจ๊ป ๋ฆฌ๋ ๋๋ง ๋๋ ๋ฌธ์ ํด๊ฒฐ
- useEffect ์ ๋๋ก ์ฌ์ฉํด์ ์๋ฒ ๊ฐ๋ฐ์์ ์ ์ ๊ฑด๊ฐ ์งํค๋ ๋ฐฉ๋ฒ
- commit message์ ์ด์ ๋ฒํธ ์ถ๊ฐ ์๋ํ ํ๊ธฐ
โ๏ธ ์์ฌ์ ๋ ์ :
- Socket์ ๋์ ์๋ฆฌ๋ฅผ ์ถฉ๋ถํ ์ดํดํ์ง ๋ชปํ ์ํ์์ ์ค์๊ฐ ๊ธฐ๋ฅ ๊ตฌํ์๋ง ์น์คํ์ฌ ๊ตฌ์กฐ์ ์ธ ์์ฑ๋๊ฐ ๋ถ์กฑํ์
- ๋ฒ ํ ํ์ด์ง์์ ๋จ์ผ Socket ์ธ์คํด์ค๋ง ํ์ํจ์๋ ๋ถ๊ตฌํ๊ณ , ํ์ด์ง๋ง๋ค Socket์ ์ ์ธํ์ฌ ์ค๋ณต ์์ฑ ๋ฌธ์ ๋ฅผ ์ด๋
- ํ์ํ์ง ์์ API ํธ์ถ์ ๋ฐฉ์งํ์ง ๋ชปํด ๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ๋ญ๋น
- UI์ ๋ก์ง์ด ๋ณต์กํจ์๋ ๋ถ๊ตฌํ๊ณ ์ปดํฌ๋ํธํํ์ง ์์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง
- ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์ํด ๊ฐ์ฒด ๊ธฐ๋ฐ ๊ด๋ฆฌ๊ฐ ์๋ ๋จ์ ๋ฌธ์์ด ๋ฐํ ๋ฐฉ์์ ์ฌ์ฉ, ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ์ ํด
โ๏ธ ๋ฆฌํฉํ ๋ง ๊ฐ์ธ ๋ชฉํ:
- Socket.IO์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ชจ๋ธ๊ณผ ์ฐ๊ฒฐ ๊ด๋ฆฌ ๋ฐฉ์, ๋ค์์คํ์ด์ค, ๋ฃธ ๊ตฌ์กฐ ๋ฑ์ ๋ํ ์ฌ์ธต์ ์ธ ํ์ต์ ํตํด ์ค์๊ฐ ํต์ ์ ์ดํด๋๋ฅผ ๋์ด๊ณ Socket.IO ์ฌ์ฉ ์ฝ๋ ๊ฐ์
- Singleton ํจํด์ ์ ์ฉํด Socket ์ธ์คํด์ค๋ฅผ ์ ์ญ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ํ์ด์ง ๊ฐ ๊ณต์ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ์ฌ ์ฑ๋ฅ ์ต์ ํ ๋ฐ ์์ ๋ญ๋น ๋ฐฉ์ง
- ์์ฒญ ๋ก์ง ์ต์ ํ๋ฅผ ์ํด API ํธ์ถ ์กฐ๊ฑด์ ๋ํ ๋ช ํํ ๊ฒ์ฆ ๋ก์ง์ ์ถ๊ฐํ๊ณ , ์บ์ฑ์ ํ์ฉํด ๋์ผ ์์ฒญ์ ์ค๋ณต ์ ์ก์ ๋ฐฉ์ง
- ์๋ฌ ์ฝ๋๋ฅผ ํฌํจํ ์๋ฌ ๊ฐ์ฒด๋ฅผ ์ ์ํ๊ณ , ์๋ฌ ํธ๋ค๋ง์ ์ค์์์ ๊ด๋ฆฌํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๋์ . ์ด๋ฅผ ํตํด ๋ค๊ตญ์ด ์ง์, ๋ค์ํ ์๋ฌ ์ํฉ ์ฒ๋ฆฌ ๋ฑ ํ์ฅ์ฑ์ ๊ณ ๋ คํ ์ค๊ณ๋ก ๊ฐ์
โ๏ธ ๋ด๋น ์์ :
- ๋น๋ ์๊ฐ ๊ฐ์ ๋ฐ ์บ์ฑ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด Vite์ ํตํ ์ฝ๋ ์คํ๋ฆฟ, ์์ ๊ตฌ์กฐ ๊ณ์ธตํ๋ฅผ ์ํ
- DX๋ฅผ ์ํด ๊ฐ๋ฐ์๋ฒ์์ ์ธ๋ถ ์๋ฒ ์ ๊ทผ์ CORS ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๊ฒ ํ๋ก์ ์๋ฒ ์ค์
- ํ์ ๊ฐ ๋ถํ์ํ ์์ฌ์ํต์ ์ค์ด๊ธฐ ์ํ API ๊ณต์ฉ ํ์ ํจํค์ง๋ฅผ ์์ฑ ๋ฐ ๋ชจ๋ ธ๋ ํฌ ํ๊ฒฝ ์ค์
- ์๋น์ค์ ์ฝ์ธ ์์ ์ ์๋ฏธ๋ฅผ ๋ง๋ค๊ธฐ ์ํ์ฌ 3D ์ค๋ธ์ ํธ๋ก ์ ์๋ ์ค๋ฆฌ ๊ตฌ๋งค ๊ธฐ๋ฅ ์ถ๊ฐ
- ํ๋ก์ ํธ์ ํ์ด์ง ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ตฌํ
- ํ๋ก์ ํธ์ ๋์ /์ ์ ๋ผ์ฐํ ์ค์ ๋ฐ ์ฌ์ฉ์ ํ๋ฆ ์ต์ ํ
- ๋คํธ์ํฌ ์ง์ฐ ์ ์ฌ์ฉ์๊ฐ UI ํผ๋๋ฐฑ๊ณผ ์์ฒญ ์ฌ์ ์ก ๊ธฐ๋ฅ ๊ตฌํ
- FSD ํด๋ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์
โ๏ธ ๋ฐฐ์ด ์ ๋ฐ ๋๋ ์ :
- vite์ด ์ด๋ ํ ์ฅ์ ์ด ์๊ณ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํจ์จ์ ์ผ๋ก ๋น๋๋ฅผ ์ํํด์ผ ํ๋์ง ๋ฐฐ์ ์ต๋๋ค.
- ์๋ฒ์ ํต์ ์ ํ ๊ฒฝ์ฐ ๋คํธ์ํฌ ์ง์ฐ์ ๊ณ ๋ คํ์ฌ ์ด๋ค ์์ผ๋ก ์์ ์ ์ํํด์ผ ํ๋์ง ๋ฐฐ์ ์ต๋๋ค.
- ํ์ ๊ฐ์ ์์ฌ์ํต์ ์ค์์ฑ์ ๋ํด์ ๋ฐฐ์ ์ต๋๋ค.
- ์์ผ ํต์ ์ ์ํํ ๊ฒฝ์ฐ ์ฃผ์ํด์ผ ํ๋ ์ ์ ๋ํด์ ๋ฐฐ์ ์ต๋๋ค.
โ๏ธ ํ์ต ์ ๋ฆฌ ๊ณต์ ๋งํฌ:
- ๋คํธ์ํฌ ์์ฒญ ์บ์ฑ์ด ํ์ํด์ก๋ค.
- Vite ์ค์ ๊ฐ์ด๋
- API ์๋ต์ ๋๋ ์ด๊ฐ ์๋ ๋ฌธ์
โ๏ธ ์์ฌ์ ๋ ์ :
- ํ๋ก์ ํธ์ ์ํคํ ์ณ์์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํ ๊ณ ๋ ค๋ฅผ ๋ง์ด ํ์ง ์๊ณ ์ค๊ณํ ๊ฒ
- ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ณ ์ถ์๋๋ฐ ํ ์ค๋ ์์ฑ ํด๋ณด์ง ๋ชปํ ๊ฒ
- tanstack query์ ๋ํด ์ ์์ง ๋ชปํ๊ณ ์ฌ์ฉํ ์
โ๏ธ ๋ฆฌํฉํ ๋ง ๊ฐ์ธ ๋ชฉํ:
- ํ ์คํธ ์ฝ๋ ์์ฑ์ ์ด์ฉํ์ฌ ์์ ์ฑ ํฅ์
- ํ๋ก์ ํธ ์ํคํ ์ณ๋ฅผ ์๋ฌ ์ํฉ์ ์ด๋ป๊ฒ ๋ค๋ฃฐ ๊ฒ์ธ์ง๋ฅผ ๊ณ ๋ คํ์ฌ ์ฌ์ค๊ณ
- ๋ถํ์ํ ๋คํธ์ํฌ ์์ , ๋ฆฌ๋ ๋๋ง ์์ ๊ฐ์
- ์ฐ๋ฆฌ์ ๋ฆฌํฉํ ๋ง ๋ชฉํ
- 1์ฃผ์ฐจ ๋ฆฌํฉํ ๋ง ๊ณํ
- 2์ฃผ์ฐจ ๋ฆฌํฉํ ๋ง ๊ณํ
- 3์ฃผ์ฐจ ๋ฆฌํฉํ ๋ง ๊ณํ
- ์ํ ๊ด๋ฆฌ์ ์ค์์ฑ
- vite vs webpack
- TCP์ UDP
- RESTful API์ ๋ํ ๊ณ ๋ฏผ
- useEffect ์ ๋๋ก ์ฌ์ฉํด์ ์๋ฒ ๊ฐ๋ฐ์์ ์ ์ ๊ฑด๊ฐ ์งํค๋ ๋ฐฉ๋ฒ
- libuv์ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ํํค์ณ๋ณด์ (1) - libuv์ ์ด๋ฒคํธ ๋ฃจํ ์คํ ํ๋ฆ
- ๋ฒ ํ ๋๊ธฐ์ฐฝ์๋ง ๋ค์ด๊ฐ๋ ๋ฐ๋ก ๋ฒ ํ ์ฐธ์ฌ ๋๋ ๊ฒ ๋ง๋?
- ์ธ์ ์คํ ๋ฆฌ์ง์ userInfo ๊ฐ ์ ์ฅํ๋ ๊ฒ์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ์
- ๋ก์ปฌ์์ ์๋ฒ๋ก ์์ฒญ ์, ์บ์ ์ฒ๋ฆฌ๋ก ์ธํ ์๋ต ์ด์ ํด๊ฒฐ
- ์ฐธ์ฌ์๊ฐ ์ฐฝ์ ๋๊ฐ ์ํ์์ ๋ฐฉ์ฅ์ด ๋ฒ ํ ๋ฐฉ์ ์ข ๋ฃํ๋ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด์ผํ๋๊ฐ?