node.js

DND 5๊ธฐ 4์ฃผ์ฐจ - ์ค‘๊ฐ„์ ๊ฒ€

dev_summer 2021. 7. 24. 00:47

์ •์‹ ์—†๋Š” ์ผ์ฃผ์ผ์ด์˜€๋‹ค.

์ผ๋‹จ ๋‚˜๋Š” ์ €๋ฒˆ์ฃผ๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ‡ด์‚ฌ๋ฅผ ํ–ˆ๊ณ 

์šด์ด ์ข‹๊ฒŒ๋„ ๋‚˜๋ฅผ ์•Œ์•„๋ด์ฃผ์‹œ๋Š” ๊ณณ์„ ๋น ๋ฅด๊ฒŒ ๋งŒ๋‚˜ ์ด์ง์„ ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค.

๋„ˆ๋ฌด ๋‹คํ–‰์ธ ๊ฒƒ์€ ์ด๋ฒˆ dndํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๊ด€์‹ฌ์ด ๊ฐ„ ๊ธฐ์ˆ ? ์ด๋ผ๊ณ  ํ•ด์•ผ๋˜๋‚˜

์š”์ฆ˜ ๊ด€์‹ฌ์ด ๊ฐ”๋˜ ๊ธฐ์ˆ ์„ ์ ‘๋ชฉํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋‹ค๊ธธ๋ž˜

ํšŒ์‚ฌ์ผ ๋ฐ”์˜๋‹ค๋Š” ํ•‘๊ณ„๋กœ ๋””์•ค๋””๋ฅผ ํƒˆ์ฃผํ•  ์ผ์€ ์—†๊ฒ ๊ตฌ๋‚˜ ์‹ถ์—ˆ๋‹ค.

ํšŒ์‚ฌ์˜ ๊ธฐ์ˆ  ๋ฐ ๋ชจ๋“ˆ์€ nestjs, ts, typeorm ๋“ฑ์ด๋‹ค.

ํ˜„์žฌ dndํ”„๋กœ์ ํŠธ๋Š” express, ts, typeorm์ธ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋งŒ ๋นผ๊ณ  ๋™์ผํ•˜๋‹ค.

 

1. typeorm ๊ด€๊ณ„์„ค์ •

 ๋ถ€๋„๋Ÿฌ์šด ์ด์•ผ๊ธฐ์ด์ง€๋งŒ express์— sequelize orm์„ ์‚ฌ์šฉํ–ˆ์„๋•Œ์—๋Š” ๊ด€๊ณ„์„ค์ •์„ ์ž˜ ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ด์œ ๋Š” ํšŒ์‚ฌ์—์„œ ์š”๊ตฌํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ๋„ˆ๋ฌด ์ž์ฃผ๋ฐ”๋€Œ๋Š” ์ƒํ™ฉ์—์„œ ํ…Œ์ด๋ธ”์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊นŒ๋‹ค๋กœ์›Œ์„œ ํ˜น์€ ๊ท€์ฐฎ์•„์„œ(์–ด์ฐจํ”ผ ์กฐ์ธ๋ฌธ ์“ฐ๋ฉด๋˜๋‹ˆ๊นŒ)์˜€๋Š”๋ฐ typeorm์€ ๊ด€๊ณ„์„ค์ •์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž˜ ํ•ด์ฃผ๊ณ  ๋“ค์–ด๊ฐ€์•ผํ•œ๋‹ค. ์‹œํ€„๋ผ์ด์ฆˆ ์‚ฌ์šฉ์‹œ์—๋Š” ๋””๋น„ํˆด๋กœ ์ž์ฃผ ๋“ค์–ด๊ฐ€์„œ ๋กœ์šฐ์ฟผ๋ฆฌ๋ฌธ๋„ ์ž์ฃผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ํƒ€์ž…์˜ค์•Œ์— ์œผ๋กœ ํ•˜๋‹ˆ ์ง„์งœ orm์˜ ์žฅ์ ์ด ๊ทน๋ช…ํ•˜๊ฒŒ ๋Š๊ปด์กŒ๋‹ค. 

 ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ• ๋•Œ์— ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์€ 1:1, 1:n, n:m ์ธ์ง€๊ฐ€ ํ—ท๊ฐˆ๋ฆฌ๋Š”๋ฐ A->B ์ผ๋•Œ A์ปฌ๋Ÿผ 1๊ฐœ๋Š” B์ปฌ๋Ÿผ์— n๊ฐ’์„ ๊ฐ€์งˆ์ˆ˜์žˆ๋Š๋ƒ, B->A์ผ๋•Œ B์ปฌ๋Ÿผ์€ A์˜ n๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์งˆ์ˆ˜์žˆ๋Š๋ƒ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‘๊ณ  ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค. n:m์˜ ๊ด€๊ณ„์—์„œ๋Š” ํ…Œ์ด๋ธ”์„ค์ •์ด๋‚˜ ๊ฐœ๋…์ด ํ—ท๊ฐˆ๋ฆด์ˆ˜์žˆ๋Š”๋ฐ n:m์ธ๊ฒฝ์šฐ 1:n๊ด€๊ณ„๊ฐ€ 2๊ฐœ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ ํ•˜๊ณ  ๊ด€๊ณ„ํ…Œ์ด๋ธ”์„ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค. ๋‚˜๋Š” ์ดํ˜„๋ฒ„ํ”„๊ฐ€ ์žˆ์–ด ์ดํ•ดํ•˜๋ฉด์„œ ๊ด€๊ณ„์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

์˜คํ”„๋ผ์ธ ๋งŒ๋‚จ์„ ์ง€์–‘ํ–ˆ์ง€๋งŒ ๋ฐฑ์—”๋“œ ๋‘๋ช…์ด์„œ ๊ฝ๋ƒฅ๊ฝ๋ƒฅ ๋งŒ๋‚˜๊ณ  ๋‹น์ถฉ์ „ํ–ˆ๋‹ค ํ—คํ—ค

2. nestjs

 ์›๋ž˜๋Š” expressํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์…‹ํŒ…๊นŒ์ง€ ๋๋ƒˆ๋Š”๋ฐ ํšŒ์‚ฌ์—์„œ nest๋ฅผ ์ตํžˆ๊ณ ์žˆ์—ˆ๊ณ  dnd ์ž์œ ๊ฒŒ์‹œํŒ์—์„œ nest์ถ”์ฒœํ•˜๋Š” ๊ธ€์ด ์˜ฌ๋ผ์˜ค๋ฉด์„œ ์˜ค๊ตฌ์˜ค๊ตฌ์กฐ์˜ ํ”„๋กœ์ ํŠธ์—๋„ nest๋ฅผ ๋„์ž…ํ•ด๋ณผ๊นŒ์š”?๋ผ๋Š” ์ œ์•ˆ์„ ๋จผ์ € ํ•ด์ฃผ์…จ๋‹ค. (๋‚œ ์ฒœ์‚ฌ ํŒ€์›์„ ๋งŒ๋‚ฌ๋‹ค.) nest๋ฅผ ์ตํžŒ์ง€ ํ•˜๋ฃจ๋ฐ–์— ๋˜์ง€์•Š์•˜์ง€๋งŒ ์ •๋ง ์šด๋ช…์ ์ด๊ฒŒ๋„ ๋‚˜๋„ ๊ทธ๋ ‡๊ณ  ์ฒœ์‚ฌ ๋ฐฑ์—”๋“œ๋ถ„๋„ spring boot์˜ ๊ฒฝํ—˜์ด ์žˆ์–ด ํฌ๊ฒŒ ๊ฐœ๋…์ด ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์ดํ•ด๊ฐ€ ๋˜์ง€์•Š๊ฑฐ๋‚˜ ์™ธ๊ณ„์–ด ๋ณด๋Š”๋“ฏํ•œ ๋Š๋‚Œ์€ ์•„๋‹ˆ์˜€๋‹ค. ์˜คํžˆ๋ ค express๋ฅผ ํ•˜๋ฉด์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์ด ํ•ด์†Œ๋˜๋Š” ๋Š๋‚Œ๋„ ๋ฐ›์•˜๋‹ค ๋‚œ! ๊ทธ๋ ‡๊ฒŒ nestjs ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๊ฒฐ์ •ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค.

(์‹ฌ์ง€์–ด express๊ตฌ์กฐ๋„ ์Šคํ”„๋ง์„ ๋ฐฐ์› ๋˜ ๋‚˜๋Š” controller, service๋กœ ๋น„์ง€๋‹ˆ์Šค๋กœ์ง์„ ๋ถ„๋ฆฌํ•ด์„œ ์“ฐ๊ณ  dto๋„ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์—ˆ๋‹ค.. ์„ธ์ƒ์— ) 

 nestjs๋ฅผ ํ•œ๋งˆ๋””๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด node๊ณ„์˜ spring boot! 

 

3. api ๋ช…์„ธ์„œ

 nestjs์˜ ์žฅ์ ์€ ์•„์ฃผ ๋งŽ์ง€๋งŒ ๊ทธ์ค‘ ํ•˜๋‚˜๋Š” swagger ๋ชจ๋“ˆ์„ ํ†ตํ•ด ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ(ํ˜น์€ ์–ด๋…ธํ…Œ์ด์…˜)์„ ๋ถ™์ด๋ฉด ๋ฐ”๋กœ api๋ช…์„ธ์„œ๊ฐ€ ๋งŒ๋“ค์–ด ์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!! ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋‚˜ ์‘๋‹ตํ˜•์‹, ์š”์•ฝ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ api ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์‹ค ์ด๋ ‡๊ฒŒ api๋ฌธ์„œ๋ฅผ ์“ด๋‹ค๊ณ  ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ๋” ์ข‹์•„์ง€๊ฑฐ๋‚˜ ๊ฐ„๊ฒฐํ•ด์ง€๋Š”๊ฒƒ๋„ ์•„๋‹ˆ๊ธดํ•œ๋ฐ ์ด๋Ÿฐ ๋ถ€์ˆ˜์ ์ธ ์ž‘์—…๋“ค์ด ์ต์ˆ™ํ•ด์ง€๋ฉด ๋น ๋ฅด๊ฒŒ ํ”„๋ก ํŠธ์™€ ์†Œํ†ต์ด ๊ฐ€๋Šฅํ•ด์„œ ์—…๋ฌดํšจ์œจ์ด ๋†’์•„์งˆ๊ฒƒ์ด๋‹ค..! ์ด๋ฒˆ ๋””์•ค๋”” ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ด๊ฒƒ์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค!

 ์ด๊ฒƒ ์ด์™ธ์—๋„ nest์˜ ์žฅ์ ์€ ๋„ˆ๋ฌด ๋งŽ๊ธด ํ•œ๋ฐ express๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฐœ๋ฐœ์ž์ž…์žฅ์—์„œ nest์™€ ๋น„๊ตํ•˜์—ฌ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค.

typeORM๋„ ์žฅ์ ์ด ์žˆ๋Š”๋ฐ ์ด ๋ถ€๋ถ„๋„ ์กฐ๋งŒ๊ฐ„ ์ •๋ฆฌํ•ด์„œ ์˜ฌ๋ ค์•ผ์ง€.

 

 

 

 

๋””์•ค๋”” ํ”„๋กœ์ ํŠธ๋Š” ์ด 8์ฃผ์ฐจ์ธ๋ฐ 4์ฃผ์ฐจ๋•Œ์— ์ค‘๊ฐ„์ ๊ฒ€์ด ์žˆ๋‹ค.

์‚ฌ์‹ค ๊ฐœ๋ฐœ๋งŒ 8์ฃผ๋™์•ˆ ๊ฐœ๋ฐœ๋งŒ ํ•˜๋ฉด ๊ทธ๋ƒฅ ์ผ ํ•˜๋ฉด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋””์•ค๋”” ํ”„๋กœ์ ํŠธ์˜ ์žฅ์ ์€ ํ‰์†Œ ์‹ค๋ฌด์—์„  ์ž˜ ํ• ์ˆ˜์—†๋Š” ๊ธฐํš์ฐธ์—ฌ, ๋ธŒ๋žœ๋”ฉ์ฐธ์—ฌ, ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ์Šต๋“ํ•˜์—ฌ ๋„์ž…ํ•˜๊ธฐ, ๊ท€์ฐฎ๋‹ค๊ณ  git branch ์ด๋ฆ„์œผ๋กœ ๋”ฐ์„œ ๊ทธ๋ƒฅ ํ‘ธ์‹œํ•ด๋ฒ„๋ฆฌ์ง€์•Š๊ณ  ์ •ํ™•ํ•˜๊ฒŒ git์ „๋žต๊ณผ ์ฝ”๋”ฉ์ปจ๋ฒค์…˜์œผ๋กœ ๋ฒ„์ „๊ด€๋ฆฌํ•˜๊ธฐ ๋“ฑ ๊ฐœ๋ฐœ ์ด์™ธ์— ํ•จ๊ป˜ ํ˜‘์—…ํ• ์ˆ˜ ์žˆ๋Š” ์ฐธ์—ฌ์˜ ๊ธฐํšŒ๋“ค์ด ๋งŽ์ด ์žˆ๋‹ค.

๋˜ํ•œ ํŒ€์›์˜ ์‚ฌ๋ž‘์„ ๋“ฌ๋ฟ๋ฐ›๊ณ  ์ด์จ๋ฐ›๋Š” ์žฅ์ ๋„ ์žˆ๋‹ค.

 

 

์กฐ์žฅ์ด ๋˜๋ฉด ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋ฐœํ‘œ๋Šฅ๋ ฅ๋„ ๊ธฐ๋ฅผ์ˆ˜๊ฐ€ ์žˆ๋‹ค..! (5959 ์šฐ๋ฆฌ๋ฆฌ๋” ํ™”์ดํŒ…)

 

 

๊ฐ ํŒŒํŠธ๋ณ„๋กœ ๋‹ค๋“ค ๋„ˆ๋ฌด ๊ณ ์ƒ์ค‘์ด๊ณ  ๋ฐฑ์—”๋“œ๋Š” api๋ช…์„ธ์„œ๋งŒ ์ •ํ•ด์ง€๋ฉด ๋ฐ”๋กœ ๋งŒ๋“ค์ˆ˜์žˆ๋„๋ก ์…‹ํŒ…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค!

ํ”„๋กœ์ ํŠธ์‹œ์ž‘ํ•œ์ง€ 4์ฃผ๋งŒ์— ์ด์ œ์•ผ ์ง„์งœ ์‹œ์ž‘์ด๋‹ค!

 

 

 

์š”์ฆ˜ ์ง„์งœ ๊ฐœ๋ฐœ์ž์ฒ˜๋Ÿผ ์ฃผ๋ง๋„์—†์ด ๊ฐœ๋ฐœ ๋น„์Šทํ•œ๊ฑธ ํ•˜๊ณ ์žˆ๋Š”๋ฐ ์‹ค๋ ฅ๋„ ํ•จ๊ป˜ ์‘ฅ์‘ฅ ์˜ฌ๋ž์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

์˜ค๋Š˜ ํ•˜๋ฃจ๋„ ๋ฟŒ๋“ฏํ•˜๊ฒŒ ๊ฐœ๋ฐœ์„ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์— ๊ฐ์‚ฌํ•˜๋ฉฐ ๊ตฌ๋นฐ์ด๋‹ค..!