-
Notifications
You must be signed in to change notification settings - Fork 3
๐ก ๊ธฐ์
๊น์ง์ฑ Kim Jinsung edited this page Dec 15, 2022
·
13 revisions
์ ์ ํ ๊ธฐ์ ์คํ : TypeScript
์ ํ์ ์ด์ :
- ํ์๋ค ๋ชจ๋ TypeScript๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ต์ํ๋ค.
- ์ฌ๋ฌ๋ช ์ด ํจ๊ป ์์ ํ๋ ๊ณผ์ ์์ ์ผ๊ด๋ ์ธํฐํ์ด์ค(ํ์ )๋ฅผ ์ ์ฉํจ์ผ๋ก์จ ์ป๋ ํจ๊ณผ์ ํ์ ๋ณํ์ผ๋ก ์ธํด ๋ฐ์ ํ ์ ์๋ ์๋ฌ๋ฅผ ๋ฏธ๋ฆฌ ํ์ธํ๊ณ ๋๋ฒ๊น ํ ์ ์๋ค๋ ์ ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด์ ์ป๋ ๊ฐ๋ฐ ์๋์ ํฅ์๊ณผ ๊ฐ์ ํจ๊ณผ๋ณด๋ค ํจ์ฌ ํด ๊ฒ์ผ๋ก ์์๋์๋ค
์ ์ ํ ๊ธฐ์ ์คํ : NextJS๋ฅผ ์ฌ์ฉํ์ง ์์
์ ํ์ ์ด์ :
- ์๋น์ค์ ํน์ฑ์
SEO๊ฐ ์ค์ํ ํ์ด์ง๊ฐ ์กด์ฌํ์ง ์์๊ธฐ ๋๋ฌธ์,CSR๋ก ๋ชจ๋ ํ์ด์ง๋ฅผ ์ปค๋ฒํ ์ ์๋ค๊ณ ์๊ฐํ๋ค. - ์ฌ์ฉ์์ ๋ฐ๋ผ ๋ณํ๋ ํ๋ฉด์ด ๋ง์๊ธฐ ๋๋ฌธ์,
SSR์ ์ ์ฉํ์ ๋, ์ป์ ์ ์๋ ํจ๊ณผ๊ฐ ํฌ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์์ํ๋ค.
์ ์ ํ ๊ธฐ์ ์คํ : Redux Tool Kit
์ ํ์ ์ด์ :
- ์๋น์ค ํน์ฑ์
ํด๋ผ์ด์ธํธ ์ํ์์๋ฒ ์ํ๋ฅผ ๋ชจ๋ ๊ด๋ฆฌํด์ผ ํ๋ ์ํฉ์ด ๋ง๋ค. - ์๋ฒ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ + ํด๋ผ์ด์ธํธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ ์ฉํด๋ ๋์ง๋ง,
Redux Tool Kit๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋๋ง์ผ๋ก๋, ํด๋ผ์ด์ธํธ ์ํ๊ด๋ฆฌ์RTK Query๋ฅผ ํตํ ์๋ฒ ์ํ๊ด๋ฆฌ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ๊ธฐ์ ์ ํต์ผ์ฑ์ ์ํ์ฌRedux Tool Kit์ ์ ํํจ - ํ์๋ค์ด ๋ชจ๋
Redux์ฌ์ฉ ๊ฒฝํ์ด ์๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์ ์ ๋ฆฌํจ.
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : Jest, React-Testing Library, Cypress, msw
์ ํ์ ์ด์ :
- ๊ฐ ์ปดํฌ๋ํธ๋ง๋ค ํ
์คํธ ์ฝ๋(๋ ๋๋ง ํ
์คํธ, ์ด๋ฒคํธ ํ
์คํธ [
click,inputchange, ...])๋ฅผ ์์ฑํ๊ณ , ํ ์คํธ ํ๊ธฐ ์ํด Jest, React-Testing Library๋ฅผ ์ฌ์ฉ - ์ฌ์ฉ์์ ์
์ฅ์์ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ํ
์คํธํด๋ณด๊ธฐ ์ํด E2E ํ
์คํธ ํด๋ก
Cypress๋ฅผ ์ ํ - ์๋ฒ์ ์ํ์ ์๊ด์์ด, ์ผ๊ด๋
Response๋ฅผ ์ด์ฉํ ํ ์คํธ๋ฅผ ์งํํ๊ธฐ ์ํด,msw๋ฅผ ์ฌ์ฉ. ์ถ๊ฐ๋ก, ์๋ฒ์ API๊ฐ ์ค๋น๋๊ธฐ ์ ์ํฉ์์๋ Mock ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ๊ฐ๋ฐ์ ์งํํ๊ธฐ ์ํดmsw๋ฅผ ๋์ .
์ ์ ํ ๊ธฐ์ ์คํ : Nest.js
์ ํ์ ์ด์
- Spring ๊ณผ์ ์ ์ฌ์ฑ์ผ๋ก ์ธํ์ฌ ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ๋ค.
- ๊ธฐํ ํ๊ฒฝ์ ๋ํ ์ ์ด๊ถ์ Nest.js์๊ฒ ๋๊ธฐ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ฝ๋ ๊ตฌํ์๋ง ์ง์คํ ์ ์๋ค.
- Express์ ๊ฒฝ์ฐ ํจํค์ง๋ฅผ ์ค์นํ ๋,
@types์ ๊ด๋ จ๋ ํจํค์ง๋ ์ถ๊ฐ์ ์ผ๋ก ์ค์นํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์กด์ฌํ๋ค. ํ์ง๋ง nest์ ๊ฒฝ์ฐ, ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ ํจํค์ง(@nestjs/~) ์ค์น๋ฅผ ํตํด ์ด๋ฌํ ๋ฒ๊ฑฐ๋ก์์ ๊ฒช์ง ์์๋ ๋๋ค. - Express.js์์๋ ๋ผ์ดํ ์ฌ์ดํด์ ์ง์ ๊ด๋ฆฌํ๊ฒ ๋๋ค. ํ์ง๋ง nest.js์์๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ์ ๊ด์ ์ ์์ด ๋ณด๋ค ํต์ผ์ฑ ์๋ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ ์ ํ ๊ธฐ์ ์คํ : Jest
์ ํ์ ์ด์
- nest.js๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํด์ฃผ๋ ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Jest์ด๊ธฐ์ ์ถ๊ฐ์ ์ธ ํจํค์ง ์ค์น๊ฐ ํ์์๋ค.
- Jest ์ Nest.js ๋ฅผ ์ฌ์ฉํ ๋ ํผ๋ฐ์ค๊ฐ ๋ง๋ค.
์ ์ ํ ๊ธฐ์ ์คํ : SQL(MySQL)
์ ํ์ ์ด์
- ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ฑ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ค.
- ํฐ์ผ ์๋ฒ ๊ฐ์ ๊ฒฝ์ฐ ์๋๊ฐ ๋น ๋ฅธ ๊ฒ๋ ์ค์ํ์ง๋ง ๋์์ ๊ฐ์ ํฐ์ผ์ ์ฌ๋ฌ ๋ช ์ ์ ์ ๊ฐ ๋ฐ๋ผ๋ณด๊ฒ ๋๋ ๋ฌธ์ ์ ์ ๋ฐฉ์งํ๊ณ ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ค์ ํ๋ฉฐ ๋ณด์ฅํ๋ SQL ์ ๋์ ํ์๋ค.
์ ์ ํ ๊ธฐ์ ์คํ : Prisma
์ ํ์ ์ด์
- ์์ธํ ๊ณต์ ๋ฌธ์์ ํจ๊ป ๋ค์ํ ์์ ๋ฅผ ์ ๊ณตํ๋ค.
์ ์ ํ ๊ธฐ์ ์คํ : socket.io
์ ํ์ ์ด์
- socket.io ๊ฐ websocket ์ ๋นํด ์ฃผ๋ ๊ธฐ๋ฅ๋ค์ด ๋ง์ด ์กด์ฌํ์ฌ ๊ธฐ๋ฅ ์์ ์ฑ๊ณผ ์์ฐ์ฑ์ด ๋์์ง๋ค.
- ๋ํ, socket.io ๋ ์ฐ๊ฒฐ์ด ๋์ด์ก์ ๋ ๋ค์ ์ฐ๊ฒฐ์ ์คํ์์ผ์ฃผ๋ ๊ธฐ๋ฅ์ด ๋ค์ ์กด์ฌํ๋ค.
- ๋ธ๋ผ์ฐ์ ์ค websocket์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ socket.io ๋ ๋ธ๋ผ์ฐ์ ์คํ์ ํ์ธ์ ํด์ ๊ทธ ์คํ์ ๋ง๊ฒ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ค๋ค.
Copyright ยฉ 2022 FanUp โ
- Nest.js์์ ์์ผ ํ ์คํธํ๊ธฐ
- Image Lazy Loading์ ํตํ ์ต์ ํ
- Nginx์์ HTTP Cache ์ค์ ์ ํตํ ์ต์ ํ
- ์๋ฒ ์ํ ๊ด๋ฆฌ with RTK Query
- MSA ์์ Gateway์ Microservice๋ก ์ด์ด์ง๋ ํ์ผ ํต์ ์ ์ด๋ป๊ฒ ํ ๊น?
- MSA์์ service ๊ฐ ํต์ ๋ฐฉ์
- Nest.js ์์ ์๋์ผ๋ก ํฌ๋ฏธํ ๋ฐฉ ์์ฑํ๋ ์ค์ผ์ค๋ง์ ์ด๋ป๊ฒ ํด์ผํ ๊น?
๐ ํธ๋ฌ๋ธ ์ํ
- MSA ์์ Docker๋ก ๋ฐฐํฌํ ๋ ๊ฒช์๋ ์ค๋ฅ
- Redux useSelector ๋ ๋๋ง ์ต์ ํ
- Sentry๋ฅผ ์ด์ฉํ ํด๋ผ์ด์ธํธ ์๋ฌ ๋ชจ๋ํฐ๋ง๊ณผ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง
- Layout Shift ํด๊ฒฐํ๊ธฐ
- ๋ฌดํ์์ฒญ์ ๋ง๊ธฐ์ํ Debounce์ UX๋ฅผ ์ํ Optimistic UI
- 1์ฃผ์ฐจ ์คํ๋ฆฐํธ ๊ณํ
- 2์ฃผ์ฐจ ์คํ๋ฆฐํธ ๊ณํ
- 3์ฃผ์ฐจ ์คํ๋ฆฐํธ ๊ณํ
- 4์ฃผ์ฐจ ์คํ๋ฆฐํธ ๊ณํ
- 5์ฃผ์ฐจ ์คํ๋ฆฐํธ ๊ณํ
- 6์ฃผ์ฐจ ์คํ๋ฆฐํธ ๊ณํ