node.js

DND 5๊ธฐ 3์ฃผ์ฐจ - ๋ฐฑ์—”๋“œ ์ ๊ฒ€

dev_summer 2021. 7. 16. 16:00

 

๋””์•ค๋””๊ฐ€ ์‹œ์ž‘ํ•œ์ง€ ์‚ผ์ฃผ๊ฐ€ ์ง€๋‚ฌ๋‹ค. 

๋‚˜๋Š” ์‹ค๋ฌด์—์„œ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๊ธด ํ•˜์ง€๋งŒ ์ œ๋Œ€๋กœ ๊ฐ–์ถฐ์„œ ํ•œ ์ ์€ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด http ์‘๋‹ต์ฝ”๋“œ๋ฅผ ๊ฐ„์†Œํ™”ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ฑฐ๋‚˜

git branch ์ „๋žต์„ ์•Œ๊ณ ๋Š” ์žˆ์ง€๋งŒ ๊ตณ์ด feature branch๋ฅผ ๋”ฐ์ง€ ์•Š๋Š”๋‹ค๊ฑฐ๋‚˜.. 

์‚ฌ์‹ค ๋””๋น„์˜ ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ตœ์ ์œผ๋กœ ๋Œ์•„๊ฐˆ๊ฑธ ์•Œ๊ณ ์žˆ์Œ์—๋„ ์‹œ๊ฐ„์ด ์—†์–ด์„œ ์„œ๋ฒ„๋‹จ์—์„œ ๊ฐ€๊ณตํ•œ๋‹ค๊ฑฐ๋‚˜..

์™€ ์ด๋ ‡๊ฒŒ ๋ณด๋‹ˆ๊นŒ ์ตœ์•…์ด๋„ค ๋‚˜(ใ…‹ใ…‹ใ…‹)

๋‚ด๊ฐ€ ์ด์ง์„ ๊ฒฐ์‹ฌํ•˜๊ฒŒ ๋œ ์ด์œ ์ด๊ธฐ๋„ ํ•œ ์ด๋Ÿฐ ์ฃผ๋จน๊ตฌ๊ตฌ์‹์˜ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ ์žˆ์—ˆ๋Š”๋ฐ

์ด๋ฒˆ ์‚ฌ์ด๋“œํ”„๋กœ์ ํŠธ๊ฐ€ ๊ทœ๋ชจ๋Š” ์ž‘์ง€๋งŒ ์ข€ ๋””ํ…Œ์ผํ•œ ๋ถ€๋ถ„๋“ค์„ ์žก๋Š”๋‹ค๋Š” ๋Š๋‚Œ์œผ๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊พธ๋ ค๊ฐˆ์ง€ ๋ฐฑ์—”๋“œ ๋™๋ฃŒ๋ถ„๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„์–ด ๋ณด์•˜๋‹ค.

 

์ผ๋‹จ ๊ตฌ์ฒด์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋‚˜์˜ค์ง€์•Š์•„ ๋””ํ…Œ์ผํ•˜๊ฒŒ ์ด์Šˆ๋ฅผ ๋‚˜๋ˆˆ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ํ–‰์œ„๋Š” ํ•˜์ง€๋ชปํ•œ๋‹ค.

์•ž๋‹จ ์—†์ด ๋’ท๋‹จ์—์„œ ํ• ์ˆ˜์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

 

1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ

๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•˜์˜€๋‹ค.

๋กœ๊ทธ์ธ์„ ์„ ํƒ์‚ฌํ•ญ์œผ๋กœ ๋‘๊ณ  ๋น„ํšŒ์›์ธ ์‚ฌ๋žŒ๋„ ํŒ€์žฅ์ด ๋˜์–ด ๋งŒ๋‚จ์„ ์ •ํ• ์ˆ˜์žˆ๊ณ  ํŒ€์›์œผ๋กœ ์ดˆ๋Œ€๋œ ์‚ฌ๋žŒ๋„ ๋ณ„๋„์˜ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์—†์ด ๋งŒ๋‚จ ๋‚ด์—์„œ ์Šค์ผ€์ฅด, ์žฅ์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์•ฝ์†์„ ์žก์„๋•Œ ๊ฐ€์žฅ ์ž˜ ์ด์šฉํ•˜๋Š” ์ฑ„๋„์ธ ์นด์นด์˜คํ†ก์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ ํ• ์ˆ˜์žˆ๋Š” Oauth๋ฅผ ํƒํ• ๊ฒƒ์ธ์ง€ local์„ ํ†ตํ•ด ํšŒ์›์„ ๋ฐ›์„๊ฒƒ์ธ์ง€ ์ค‘์— ์ถ”๊ฐ€๊ธฐ๋Šฅ์€ ๋กœ๊ทธ์ธ OAuth๋ฅผ ์ฑ„ํƒํ•  ์ง€์–ธ์ • ๊ธฐ๋ณธ์€ local๋กœ ๋‘๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ช…์„ธ์„œ๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐ€์‹œํ™”์‹œ์ผœ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.

๋Œ€ํ•™์ƒ๋ถ„๋“ค๊ณผ ํ˜‘์—…ํ•˜๋‹ค๋ณด๋ฉด ์ด๋Ÿฐ ์ •๋ณด๋“ค์„ ์–ป์„์ˆ˜์žˆ์–ด ์ข‹๋‹ค ํ—คํ—ท

https://dbdiagram.io/home

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

๊ธฐ๋Šฅ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์ด์•ผ๊ธฐํ•˜๋ฉด์„œ ํ•จ๊ป˜ ์งœ๋‹ค๊ฐ€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์•„ ๊ฐ์ž๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์งœ๊ณ  ํ•จ๊ป˜ ์„ค๋ช…ํ•˜๋ฉด์„œ ๊ต์ง‘ํ•ฉ์€ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋„˜์–ด๊ฐ€๊ณ  ์ฐจ์ง‘ํ•ฉ๋“ค์ค‘ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ํ•จ๊ป˜ ๊ณ ๋ฏผํ•˜์—ฌ ํ•จ๊ป˜ ๊ตฌ์กฐ๋ฅผ ์™„์„ฑํ–ˆ๋‹ค.

 

 

2. ORM ๊ฒฐ์ •

 ์ดˆ๋ฐ˜์—๋Š” js๋กœ ์ž‘์—…์„ ํ•  ์˜ˆ์ •์ด์—ฌ์„œ sequelize๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์…‹ํŒ…ํ•ด๋†“์•˜์œผ๋‚˜ ์ค‘๊ฐ„์— ts๋กœ ๋ณ€๊ฒฝ์ด๋˜๋ฉด์„œ typeORM์ด ํ›„๋ณด๊ตฐ์œผ๋กœ ์˜ฌ๋ผ์™”๋‹ค. sequelize๋ณด๋‹คt typeORM์ด ์†๋„๊ฐ€ ์‚ด์ง ๋”์ข‹๊ธด ํ•˜์ง€๋งŒ ORM ์ž์ฒด๊ฐ€ ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธฐ๋•Œ๋ฌธ์— ํฐ ์ด์ ์€ ๋ชป๋Š๊ผ‡๋‹ค. ๋˜ํ•œ ๊ฐ orm์˜ ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์ด typeORM์ด ์กฐ๊ธˆ ๋” ์ง๊ด€์ ์ธ ๋Š๋‚Œ์„ ๋ฐ›์•˜๋‹ค.

 ์‚ฌ์‹ค sequelize๊ฐ€ ์ข€ ๋” ์ต์ˆ™ํ•˜๊ธด ํ•˜์ง€๋งŒ typescript๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ๋ถ„๊ป˜์„œ typeORM์˜ ๊ฒฝํ—˜์ด ์žˆ์œผ์…”์„œ ์…‹ํŒ…ํ•˜๋ฉฐ ๋ฐฐ์›Œ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. typeORM์œผ๋กœ ๊ฒฐ์ •!

 

3. ๊ทธ ์™ธ ๊ณ ๋ฏผ๋“ค..

 - ์„œ๋น„์ŠคํŒŒ์ผ ์–ด๋””์—์„œ๋„ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋‰˜์•™์Šค๊ฐ€ ๋‚˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์กฐ์–ธ์„ ๋ฐ›๊ณ  ์„œ๋น„์ŠคํŒŒ์ผ์—์„œ result template์ด ์•„๋‹Œ ๊ฐ์ฒด ํ˜•์‹์œผ๋กœ ๋ฆฌํ„ดํ•ด์ฃผ๊ธฐ๋กœ ํ–ˆ๋‹ค.

 - ํ˜„์žฌ ํ”„๋ก ํŠธ๋‹จ์—์„œ ๋งก์•„์•ผํ•  ์ž‘์—…๋“ค์ด ๋งŽ์ด์žˆ๋Š”๋ฐ socket์ž‘์—…์„ back๋‹จ์—์„œ ํ•ด์ฃผ์–ด ๋„˜๊ฒจ์ค˜๋„ ํ”„๋ก ํŠธ๋‹จ์—์„œ๋„ ํ•ธ๋“ค๋งํ•ด์•ผ๋˜๋Š”๋ฐ ์ด ๋ถ€๋ถ„์— ๋„ˆ๋ฌด์‹œ๊ฐ„์„ ๋นผ์•—๊ธฐ์ง„ ์•Š์„๊นŒ.. ์ฑ„ํŒ…์ด ์•„๋‹Œ ํŒ€์›์˜ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด๋Š” ์šฉ๋„์ด๋ฏ€๋กœ ์„ ํƒ๊ณผ ์ง‘์ค‘์ด ํ•„์š”ํ•œ ์ˆœ๊ฐ„์ธ ๊ฒƒ ๊ฐ™๋‹ค. ํ”„๋ก ํŠธ ๋‹จ์— ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€์•Š๊ณ  ๋ฐฑ๋‹จ์—์„œ ํ™œ์šฉํ•ด๋ณผ์ˆ˜์žˆ๋Š” ๊ฒƒ๋“ค์€ cicd, docker ๋“ฑ ๋‹ค์–‘ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์„ ํƒ๊ณผ ์ง‘์ค‘์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 - ํšŒ์›/๋น„ํšŒ์›, ํŒ€์žฅ/ํŒ€์› ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กฐ๊ธˆ ์žˆ์–ด์„œ ํ™”๋ฉด์„ ๋งŒ๋“ค๊ณ  ๊ธฐ๋Šฅ๋ณ„ ์ด์Šˆ์ •๋ฆฌ ์‹œ ์˜ค๋ฅ˜์‚ฌํ•ญ์— ์ข€ ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์ด ๋ถ€๋ถ„์€ ์˜ค๋ฅ˜์‚ฌํ•ญ์„ ์ถฉ๋ถ„ํžˆ ์˜ˆ์ธกํ•˜๊ณ  ๊ธฐ๋Šฅ๋ณ„ ์ด์Šˆ์ •๋ฆฌ๋ฅผ ํ•ด์•ผ๋ ๊ฒƒ ๊ฐ™๋‹ค.!

 - typeORM ์—์„œ ํŠธ๋žœ์žญ์…˜ ์ฝ”๋“œ๋Š” ์ž˜ ๋˜์–ด์žˆ์œผ๋ ค๋‚˜.. ts๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ๊ณผ์—ฐ 8์ฃผ๋™์•ˆ ๋‚ด๊ฐ€ ์ž˜ ์™„์„ฑ ํ• ์ˆ˜์žˆ์„๊นŒ .. 

 

* OAuth kakao back process 

1. ํ”„๋ก ํŠธ์—์„œ ๋ฐฑ์œผ๋กœ ์นด์นด์˜ค ์œ ์ €์•„์ด๋””, ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์œ๋‹ค
2. ๋ฐฑ์—์„œ ๊ทธ ์œ ์ €๊ฐ€ ์œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์‹ค์ œ ์นด์นด์˜ค ์œ ์ €๊ฐ€ ๋งž๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค
3. ์ดํ›„ ๋ฐฑ์—์„œ ์œ ์ € ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ €์žฅํ•˜๊ณ , ์ถ”๊ฐ€๋กœ ํ”„๋ก ํŠธ์—์„œ ์ •๋ณด๋ฅผ ๋” ๋ฐ›๋Š”๋‹ค๋ฉด ์ฒ˜์Œ์— ํ‚ค ๋ฐ›์„ ๋•Œ ํ•จ๊ป˜ ๋ฐ›์•„์„œ ๊ฐ€์ž… ์ฒ˜๋ฆฌ ํ›„ ์ €์žฅ. (์†Œ์…œ ์ข…๋ฅ˜, ํ•ด๋‹น ์†Œ์…œ์˜ ์œ ์ € ID, ์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ์œ ์ € ๊ณ ์œ  ID, ์ถ”๊ฐ€ ์ •๋ณด ๋“ฑ ํ•จ๊ป˜ ์ €์žฅ)
4. ๋ฐฑ์—์„œ ํ•ด๋‹น ์œ ์ €์— ๋Œ€ํ•œ ์ž์ฒด ํ† ํฐ๊ณผ ๋ฆฌํ”„๋ ˆ์‰ฌ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค
5. ๊ทธ ํ† ํฐ์„ ๊ฐ€์ง€๊ณ  ์šฐ๋ฆฌ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ฒŒ ํ•œ๋‹ค
6. ํ”„๋ก ํŠธ์—์„œ ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ ์šฐ๋ฆฌ ์„œ๋ฒ„์˜ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์œผ๋กœ ํ† ํฐ์„ ์žฌ์š”์ฒญํ•œ๋‹ค

 

ํ•ญ์ƒ ๋‚˜์˜ ๊ฐœ๋ฐœ ์น˜ํŠธํ‚ค๋ฅผ ๋‹ด๋‹นํ•ด์ฃผ์‹œ๋Š” ์ฒ˜๋ฃจ๋‹˜ ๊ฐ์‚ฌ