์ž…์‚ฌ๐Ÿ™Œ๐Ÿป

๊น€๋ช…์ผยท2022๋…„ 5์›” 9์ผ
0
post-thumbnail

์ž‘๋…„ 9์›”, ์›น๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•œ์ง€ 9๊ฐœ์›”๋งŒ์— ์ฒ˜์Œ์œผ๋กœ ํšŒ์‚ฌ์— ์ž…์‚ฌํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ์ธ์› 7๋ช…, ๊ทธ ์ค‘, ์›น ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž 1๋ช…, ์•ฑ,์›น ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž 1๋ช…, ๊ทธ๋ฆฌ๊ณ  ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž 1๋ช…์ธ ํšŒ์‚ฌ์˜€๊ณ , ๊ธฐ์กด์— ๊ณ„์‹œ๋˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ถ„์ด ๋‚˜๊ฐ€๊ฒŒ ๋˜๋ฉด์„œ ๋‚ด๊ฐ€ ๊ทธ์ž๋ฆฌ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜์—ˆ๋‹ค.

9๊ฐœ์›”๊ฐ„ ์ฒ˜์Œ html, javasciprt๋ฅผ ์ ‘ํ•˜๋ฉด์„œ ์‹ ๋…„์šด์„ธ ์›นํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ํ•ด๋ณด๊ณ , ์ž‘๊ฒŒ๋‚˜๋งˆ ๋ช‡๋ช‡์˜ ์‚ฌ๋žŒ๋“ค๋ผ๋ฆฌ ๋ชจ์—ฌ ์–ดํ”Œ์„ ์ถœ์‹œํ•ด๋ณด๋Š” ๊ฒฝํ—˜์„ ํ•ด๋ณด์•˜์ง€๋งŒ, ํ˜ผ์ž์„œ ๋””๋น„์„ค๊ณ„, ์„œ๋ฒ„๊ฐœ๋ฐœ, ๋ฐฐํฌ๊นŒ์ง€ ๋ชจ๋“  ๋ถ€๋ถ„์„ ๋„๋งก์•„ ํ•ด๋ณธ์ ์€ ์—†์—ˆ๋‹ค. ๋˜ํ•œ mongoose๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒฝํ—˜๋“ค์ด ๋Œ€๋ถ€๋ถ„์ด์—ˆ๊ธฐ์—, mysql์„ ๋‹ค๋ค„๋ณธ ๊ฒฝํ—˜๋„ ๋งค์šฐ ์ ์—ˆ๋‹ค. ๋ฌผ๋ก  ์–ดํ”Œ์„ ์ถœ์‹œํ•  ๋•Œ, ๊ฐ™์ด ํ–ˆ๋˜ ๊ฐœ๋ฐœ์ž๋ถ„์ด ์ž‘์„ฑํ–ˆ๋˜ ๋ฐฐํฌ๊ณผ์ •์ด๋‚˜, ์ฝ”๋“œ๋“ค์„ ๋ณด๋ฉด์„œ ํ˜ผ์ž ๊ณต๋ถ€ํ•ด๋ณด๊ธด ํ–ˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ํ˜ผ์ž์„œ ํ•˜๊ฒŒ๋œ๋‹ค๋Š”๊ฑด ์ƒ๊ฐ์ง€ ๋ชปํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ํฐ ๊ฒฝํ—˜์ด ๋  ๊ฒƒ ๊ฐ™์•˜๊ณ , ๋ฌด์—‡๋ณด๋‹ค ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๊ฐ€๊ณ  ์‹ถ์—ˆ๋‹ค.

์ฝ”๋“œ ๋ฆฌ๋ทฐ

์ž…์‚ฌ๋‹น์‹œ ์ž ์‹œ ๋ช‡์‹œ๊ฐ„ ๋™์•ˆ ๊ณ„์…จ๋˜ ์„œ๋ฒ„๊ฐœ๋ฐœ์ž๋ถ„์—๊ฒŒ ๋ช‡๊ฐ€์ง€ ์ธ์ˆ˜์ธ๊ณ„๋ฅผ ๋ฐ›๊ธด ํ–ˆ์ง€๋งŒ, ์ •๋ง ์งง์€ ์‹œ๊ฐ„์ด์—ˆ๊ณ , ๋„ˆ๋ฌด ๊ธด์žฅํ–ˆ๋˜ํ„ฐ๋ผ ๊ท€์— ์ž˜ ๋“ค์–ด์˜ค์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ธ์ˆ˜์ธ๊ณ„๊ฐ€ ๋๋‚˜๊ณ , ์ผ๋‹จ์€ ๊ฐ€์žฅ๋จผ์ € ์ฝ”๋“œ๋ฅผ ํ›‘์–ด๋ดค์—ˆ๋‹ค.

์ธ์ˆ˜์ธ๊ณ„ ๋ฐ›์„ ๋•Œ, ๋ฐฐํฌ์ผ์ •์ด ๊ธ‰ํ–ˆ๋˜ ํ„ฐ๋ผ ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๋‚œ์žกํ•˜๋‹ค๊ณ  ํ•˜๊ธดํ–ˆ์—ˆ์ง€๋งŒ, ์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๋‹นํ™ฉํ–ˆ๋˜ ์ ์€ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ํ•œ๊ณณ์— ๋ชจ์—ฌ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ๊ณผ http๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ์ „ ์‹ค์ œ ์šด์˜๋˜๋Š” ์„œ๋น„์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๊ฐ€ ์งœ์—ฌ์งˆ๊นŒ ๋งŽ์€ ๊ธฐ๋Œ€๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ, ๊ธฐ๋Œ€๋Š” ์‚ฐ์‚ฐ์กฐ๊ฐ๋‚ฌ๋‹ค.๐Ÿ˜ญ

์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๋ฌถ์—ฌ์žˆ์—ˆ๊ธด ํ•˜์ง€๋งŒ, ํ† ํฐ ์ธ์ฆ๋ถ€ํ„ฐ ์—๋Ÿฌํ•ธ๋“ค๋ง๊นŒ์ง€ ์ „๋ถ€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์—ˆ๊ณ , ์‹ฌ์ง€์–ด ์ธ์ฆ์ด๋‚˜ validation์ด ์—†๋Š” API๋“ค์ด ๋Œ€๋ถ€๋ถ„์ด์—ˆ๋‹ค. (๋˜ ์ฟผ๋ฆฌ๋นŒ๋”๋‚˜ orm์ด ์•„๋‹Œ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ๋‹น์‹œ์— mongoose๋งŒ ์‚ฌ์šฉํ•ด๋ณด์•˜๊ธฐ์— orm, ์ฟผ๋ฆฌ๋นŒ๋”, raw query์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†์–ด์„œ ๋ณ„ ์ƒ๊ฐ์—†์ด ์ง€๋‚˜๊ฐ”์—ˆ๋‹ค. ๊ทธ ๋ฐ–์˜ ๋“ฑ๋“ฑ.. ๋ฌธ์ œ๋“ค์ด ๋งŽ์ด ์žˆ์—ˆ๋‹ค.)

## ์ด๋Ÿฐ ๋Š๋‚Œ + ๋ชจ๋“  ์„œ๋น„์Šค ๋งˆ๋‹ค try catch....
router.post('/', (req,res) => {
	try {
		if(...){
        	...๋กœ์ง
           res.status(403).json({...})
        } else if(...){
        	...๋กœ์ง
            res.status(200).json({...})
        }
    } catch(e){
		res.status(500).json({message:'...'})    
    }
})

๋‹น์‹œ์—๋Š” ๋ญ”๊ฐ€ ๋ถˆ๋งŒ์ด ๋งŽ๊ธดํ–ˆ์ง€๋งŒ, ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ํ•œ๋‹ฌ๋งŒ์— ๋””๋น„ ์„ค๊ณ„๋ถ€ํ„ฐ ๋ช‡์‹ญ๊ฐœ์˜ API, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ์ด๋™๊นŒ์ง€ ํ•˜๋ ค๋ฉด... ์˜คํžˆ๋ ค ๋Œ€๋‹จํ•˜๋‹จ ์ƒ๊ฐ์ด ๋“ ๋‹ค.๐Ÿ‘๐Ÿป


๊ฐœ์„ 

์ฝ”๋“œ๋ฆฌ๋ทฐ ์ดํ›„, ๋“ค์–ด์˜ค๋Š” ์ˆ˜์ •์‚ฌํ•ญ๋“ค ์ด์™ธ์—๋Š” ์ „๋ถ€ ์ฝ”๋“œ ์ •๋ฆฌ์— ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค ๋ถ„ํ• , ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด, validator, ์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ ์ œ์ž‘ ๋“ฑ ๊ธ‰ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋ถ€๋ถ„๋“ค์„ ์ˆ˜์ •ํ•ด๋‚˜๊ฐ”๋‹ค. nginx์™€ docker๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, nginx์— ๋Œ€ํ•ด ์ž˜ ๋ชฐ๋ผ ๊ธ‰ํ•œ๋Œ€๋กœ ๊ทธ๋‚˜๋งˆ ์ต์ˆ™ํ–ˆ๋˜ aws ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•ด https๋ฅผ ์ ์šฉํ–ˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์šด์˜์ค‘์ธ ์„œ๋น„์Šค์ด๋‹ค ๋ณด๋‹ˆ, ๋งˆ์Œ๋Œ€๋กœ ์ˆ˜์ •์„ ํ•ด๋‚˜๊ฐˆ ์ˆ˜ ์—†์—ˆ๊ณ , ๊ธฐ์กด api๋“ค์„ regacy๋กœ ๋‘๊ณ  ์ƒˆ๋กœ์šด API๋ฒ„์ „์„ ์ œ์ž‘ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ด๋•Œ์„œ์•ผ raw query์˜ ๋ถˆํŽธํ•จ์„ ๋„ˆ๋ฌด ์ ˆ์‹คํžˆ ๋Š๊ผˆ๋‹ค. ์ˆ˜์ •ํ•˜๋ฉด์„œ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผํ•˜๊ณ  ์˜คํƒ€๋กœ ์ธํ•ด ์—๋Ÿฌ๋‚˜๋Š”์ผ์€ ๋น„์ผ๋น„์žฌํ–ˆ๋‹ค. ์ด ๋•Œ์„œ์•ผ, orm๊ณผ query builder์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ์„ฑ๋Šฅ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค, ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์žˆ๋‹ค ๋ผ๋Š” ์–˜๊ธฐ๋ฅผ ๋“ฃ๊ณ  query builder๋ฅผ ์„ ํƒํ–ˆ๋‹ค. ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋‹น์—ฐํžˆ orm์„ ์„ ํƒํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์™œ๋ƒ๋ฉด query builder ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ๋„ ํ•˜๊ณ , ๋ฌด์—‡๋ณด๋‹ค ํŽธํ•˜๋‹ค.

๊ทผ๋ฐ, ๋‹น์‹œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด orm์„ ์„ ํƒํ–ˆ์„ ๋•Œ, orm์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š๋ผ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ด ๋Šฆ์–ด์ง€์ง€ ์•Š์•˜์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  query builder๋ฅผ ๊ฒฝํ—˜ํ•œ ํ›„, orm์„ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋ผ๋Š” ๊ฒฐ์ •์„ ํ–ˆ์œผ๋‹ˆ ์–ด์ฉŒ๋ฉด ์ž˜ํ•œ ์„ ํƒ์ผ์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.

profile
์ฃผ๋‹ˆ์–ด ๋ฐฑ์—”๋“œ ๐Ÿถ๐Ÿฆถ๐Ÿป๐Ÿ“

0๊ฐœ์˜ ๋Œ“๊ธ€