Skip to content

๐Ÿ’ก ๊ธฐ์ˆ 

๊น€์ง„์„ฑ Kim Jinsung edited this page Dec 15, 2022 · 13 revisions

๊ธฐ์ˆ  ์Šคํƒ

Common

1. JavaScript vs TypeScript

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : TypeScript

์„ ํƒ์˜ ์ด์œ  :

  1. ํŒ€์›๋“ค ๋ชจ๋‘ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ์ต์ˆ™ํ•˜๋‹ค.
  2. ์—ฌ๋Ÿฌ๋ช…์ด ํ•จ๊ป˜ ์ž‘์—…ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค(ํƒ€์ž…)๋ฅผ ์ ์šฉํ•จ์œผ๋กœ์จ ์–ป๋Š” ํšจ๊ณผ์™€ ํƒ€์ž… ๋ณ€ํ™˜์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ๋ฅผ ๋ฏธ๋ฆฌ ํ™•์ธํ•˜๊ณ  ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์–ป๋Š” ๊ฐœ๋ฐœ ์†๋„์˜ ํ–ฅ์ƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ณด๋‹ค ํ›จ์”ฌ ํด ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์—ˆ๋‹ค

Frontend

1. NextJS ์‚ฌ์šฉ ์—ฌ๋ถ€

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : NextJS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

์„ ํƒ์˜ ์ด์œ  :

  1. ์„œ๋น„์Šค์˜ ํŠน์„ฑ์ƒ SEO๊ฐ€ ์ค‘์š”ํ•œ ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—, CSR๋กœ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ํ™”๋ฉด์ด ๋งŽ์•˜๊ธฐ ๋•Œ๋ฌธ์—, SSR์„ ์ ์šฉํ–ˆ์„ ๋•Œ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํšจ๊ณผ๊ฐ€ ํฌ์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ๋‹ค.

2. ์ƒํƒœ๊ด€๋ฆฌ

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : Redux Tool Kit

์„ ํƒ์˜ ์ด์œ  :

  1. ์„œ๋น„์Šค ํŠน์„ฑ์ƒ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ์™€ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ชจ๋‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋งŽ๋‹ค.
  2. ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ + ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋”ฐ๋กœ ์ ์šฉํ•ด๋„ ๋˜์ง€๋งŒ, Redux Tool Kit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•˜๋‚˜๋งŒ์œผ๋กœ๋„, ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๊ด€๋ฆฌ์™€ RTK Query๋ฅผ ํ†ตํ•œ ์„œ๋ฒ„ ์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์ˆ ์˜ ํ†ต์ผ์„ฑ์„ ์œ„ํ•˜์—ฌ Redux Tool Kit์„ ์„ ํƒํ•จ
  3. ํŒ€์›๋“ค์ด ๋ชจ๋‘ Redux ์‚ฌ์šฉ ๊ฒฝํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์— ์œ ๋ฆฌํ•จ.

3. Test

์„ ์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : Jest, React-Testing Library, Cypress, msw

์„ ํƒ์˜ ์ด์œ  :

  1. ๊ฐ ์ปดํฌ๋„ŒํŠธ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ ์ฝ”๋“œ(๋ Œ๋”๋ง ํ…Œ์ŠคํŠธ, ์ด๋ฒคํŠธ ํ…Œ์ŠคํŠธ [click, input change, ...])๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด Jest, React-Testing Library๋ฅผ ์‚ฌ์šฉ
  2. ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์ด๋ฅผ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ ์œ„ํ•ด E2E ํ…Œ์ŠคํŠธ ํˆด๋กœ Cypress๋ฅผ ์„ ํƒ
  3. ์„œ๋ฒ„์˜ ์ƒํƒœ์™€ ์ƒ๊ด€์—†์ด, ์ผ๊ด€๋œ Response๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด, msw๋ฅผ ์‚ฌ์šฉ. ์ถ”๊ฐ€๋กœ, ์„œ๋ฒ„์˜ API๊ฐ€ ์ค€๋น„๋˜๊ธฐ ์ „ ์ƒํ™ฉ์—์„œ๋„ Mock ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด msw๋ฅผ ๋„์ž….

Backend

1. Nest.js vs Express

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : Nest.js

์„ ํƒ์˜ ์ด์œ 

  1. Spring ๊ณผ์˜ ์œ ์‚ฌ์„ฑ์œผ๋กœ ์ธํ•˜์—ฌ ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ๋‚ฎ๋‹ค.
  2. ๊ธฐํƒ€ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ Nest.js์—๊ฒŒ ๋„˜๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ ๊ตฌํ˜„์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. Express์˜ ๊ฒฝ์šฐ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ, @types์™€ ๊ด€๋ จ๋œ ํŒจํ‚ค์ง€๋„ ์ถ”๊ฐ€์ ์œผ๋กœ ์„ค์น˜ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์กด์žฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ nest์˜ ๊ฒฝ์šฐ, ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€(@nestjs/~) ์„ค์น˜๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๊ฒช์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  4. Express.js์—์„œ๋Š” ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ nest.js์—์„œ๋Š” ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ˜‘์—… ๊ด€์ ์— ์žˆ์–ด ๋ณด๋‹ค ํ†ต์ผ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

2. Jest vs Mocha

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : Jest

์„ ํƒ์˜ ์ด์œ 

  1. nest.js๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•ด์ฃผ๋Š” ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Jest์ด๊ธฐ์— ์ถ”๊ฐ€์ ์ธ ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ํ•„์š”์—†๋‹ค.
  2. Jest ์™€ Nest.js ๋ฅผ ์‚ฌ์šฉํ•œ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ๋งŽ๋‹ค.

3. SQL vs NoSQL

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : SQL(MySQL)

์„ ํƒ์˜ ์ด์œ 

  1. ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋“ฑ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.
  2. ํ‹ฐ์ผ“ ์„œ๋ฒ„ ๊ฐ™์€ ๊ฒฝ์šฐ ์†๋„๊ฐ€ ๋น ๋ฅธ ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ๋™์‹œ์— ๊ฐ™์€ ํ‹ฐ์ผ“์„ ์—ฌ๋Ÿฌ ๋ช…์˜ ์œ ์ €๊ฐ€ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ์ ์„ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์„ค์ •ํ•˜๋ฉฐ ๋ณด์žฅํ•˜๋Š” SQL ์„ ๋„์ž…ํ•˜์˜€๋‹ค.

4. TypeORM vs Prisma

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : Prisma

์„ ํƒ์˜ ์ด์œ 

  1. ์ž์„ธํ•œ ๊ณต์‹ ๋ฌธ์„œ์™€ ํ•จ๊ป˜ ๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

5. Websocket vs Socket-io

์„ ์ •ํ•œ ๊ธฐ์ˆ  ์Šคํƒ : socket.io

์„ ํƒ์˜ ์ด์œ 

  1. socket.io ๊ฐ€ websocket ์— ๋น„ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ๋“ค์ด ๋งŽ์ด ์กด์žฌํ•˜์—ฌ ๊ธฐ๋Šฅ ์•ˆ์ •์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
  2. ๋˜ํ•œ, socket.io ๋Š” ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์„ ๋•Œ ๋‹ค์‹œ ์—ฐ๊ฒฐ์„ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ๋‹ค์‹œ ์กด์žฌํ•œ๋‹ค.
  3. ๋ธŒ๋ผ์šฐ์ € ์ค‘ websocket์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ socket.io ๋Š” ๋ธŒ๋ผ์šฐ์ € ์ŠคํŽ™์„ ํ™•์ธ์„ ํ•ด์„œ ๊ทธ ์ŠคํŽ™์— ๋งž๊ฒŒ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

๐Ÿ“‹ ๊ทธ๋ผ์šด๋“œ๋ฃฐ


๐Ÿ“š ํ”„๋กœ์ ํŠธ




๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ


โœˆ๏ธ ์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš


๐Ÿ—“๏ธ ์ฃผ๊ฐ„ ํšŒ๊ณ ๋ก


โ˜• ๊ฐœ์ธ ํšŒ๊ณ ๋ก


๐Ÿ’ก ๊ธฐ์ˆ 


๐Ÿ—ฃ ๋ฐœํ‘œ

Clone this wiki locally