์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[Node.js] 15์žฅ AWS์™€ GCP๋กœ ๋ฐฐํฌํ•˜๊ธฐ

22-23/22-23 Node.js

by dev otcroz 2023. 1. 5. 10:01

๋ณธ๋ฌธ

728x90

๐Ÿ” ์„œ๋น„์Šค ์šด์˜์„ ์œ„ํ•œ ํŒจํ‚ค์ง€

๐Ÿ“Œ morgan๊ณผ express-session

โœ… process.env.NODE_ENV

๋ฐฐํฌ ํ™˜๊ฒฝ์ธ์ง€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ธ์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‹ค.

์ฃผ๋กœ ๋ฐฐํฌ ํ™˜๊ฒฝ์ผ ๋•Œ๋Š” morgan์„ combined ๋ชจ๋“œ๋กœ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ผ ๋•Œ๋Š” dev ๋ชจ๋“œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ“Œ ์‹œํ€„๋ผ์ด์ฆˆ

์‹œํ€„๋ผ์ด์ฆˆ์—์„œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ•˜๋“œ ์ฝ”๋”ฉ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฉฐ, JSON ํŒŒ์ผ์ด๋ฏ€๋กœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์‹œํ€„๋ผ์ด์ฆˆ๋Š” JSON ๋Œ€์‹  JS ํŒŒ์ผ์„ ์„ค์ • ํŒŒ์ผ๋กœ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ์ง€์›ํ•œ๋‹ค.

 

๐Ÿ“Œ cross-env

cross-env ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ ์œผ๋กœ process.env(ํ™˜๊ฒฝ ๋ณ€์ˆ˜)๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ์šด์˜์ฒด์ œ์—์„œ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

npm start์‹œ์— ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด ์•ž์— NODE_ENV=production PORT=80์ด ๋ถ™์–ด ์žˆ๋Š”๋ฐ, ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋Œ€ process.env๋ฅผ ๋™์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์œˆ๋„์—์„œ๋Š” process.env๋ฅผ ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์•ž์— cross-env๋ฅผ ๋ถ™์ธ๋‹ค.

 

๐Ÿ“Œ sanitize-html, csurf

sanitize-html๊ณผ csurf ํŒจํ‚ค์ง€๋Š” ๊ฐ๊ฐ XSS(Cross Site Scripting), CSRF(Cross Site Request For gery) ๊ณต๊ฒฉ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€๋‹ค.

 

โœ… XSS

์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€์„ ์—…๋กœ๋“œํ•  ๋•Œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•ด์„œ, ์กด์žฌํ•œ๋‹ค๋ฉด ์ œ๊ฑฐํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ HTML์„ sanitize-html ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ๋ฉด ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ํƒœ๊ทธ๋‚˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ œ๊ฑฐ๋œ๋‹ค.

 

โœ… CSRF

์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ–‰๋™์„ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ์ด๋‹ค. ์ด ๊ณต๊ฒฉ์„ ๋ง‰์œผ๋ ค๋ฉด ๋‚ด๊ฐ€ ํ•œ ํ–‰๋™์ด ๋งž๋‹ค๋Š” ์ ์„ ์ธ์ •ํ•ด์•ผ ๋˜๋Š”๋ฐ ์ด๋•Œ CSRF ํ† ํฐ์ด ์‚ฌ์šฉ๋˜๊ณ , csurf ํŒจํ‚ค์ง€๋Š” ์ด ํ† ํฐ์„ ์‰ฝ๊ฒŒ ๋ฐœ๊ธ‰ํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค.

 

๐Ÿ“Œ pm2

์›ํ™œํ•œ ์„œ๋ฒ„ ์šด์˜์„ ์œ„ํ•œ ํŒจํ‚ค์ง€๋‹ค. ๊ฐ€์žฅ ํฐ ๊ธฐ๋Šฅ์€ ์„œ๋ฒ„๊ฐ€ ์—๋Ÿฌ๋กœ ์ธํ•ด ๊บผ์กŒ์„ ๋•Œ ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์ผœ์ค€๋‹ค.

๋˜ ํ•˜๋‚˜์˜ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ์ด๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ์„ ์ง€์›ํ•˜์—ฌ ๋…ธ๋“œ ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜๋ฅผ ํ•œ ๊ฐœ ์ด์ƒ์œผ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ›๋Š” ๋ถ€ํ•˜๊ฐ€ ์ ์–ด์ง€๋ฏ€๋กœ ์„œ๋น„์Šค๋ฅผ ๋” ์›ํ™œํ•˜๊ฒŒ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ ์€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์ด ์•„๋‹ˆ๋ฏ€๋กœ ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ™์€ ์ž์›์„ ๊ณต์œ ํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉค์บ์‹œ๋“œ๋‚˜ ๋ ˆ๋””์Šค ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ“Œ winston

์‹ค์ œ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•  ๋•Œ console.log์™€ console.error๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ด๋‹ค.

 

๐Ÿ“Œ helmet, hpp

์„œ๋ฒ„์˜ ๊ฐ์ข… ์ทจ์•ฝ์ ์„ ๋ณด์™„ํ•ด์ฃผ๋Š” ํŒจํ‚ค์ง€๋“ค์ด๋ฉฐ, ์ต์Šคํ”„๋ ˆ์Šค ๋ฏธ๋“ค์›จ์–ด๋กœ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํŒจํ‚ค์ง€๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋“  ์ทจ์•ฝ์ ์„ ๋ฐฉ์–ดํ•ด์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•  ๋•Œ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์ทจ์•ฝ์ ์„ ์ ๊ฒ€ํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ“Œ connect-redis

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์„ธ์…˜ ๊ณต์œ ๋ฅผ ์œ„ํ•ด ๋ ˆ๋””์Šค์™€ ์ต์Šคํ”„๋ ˆ์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ํŒจํ‚ค์ง€๋‹ค.

 

๐Ÿ“Œ nvm, n

๋…ธ๋“œ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€๋‹ค.

 

 

๐Ÿ” ๊นƒ๊ณผ ๊นƒํ—ˆ๋ธŒ

๐Ÿ“Œ ๊นƒ(Git)

๋ถ„์‚ฐํ˜• ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ํ˜‘์—…, ์ฝ”๋“œ ๋กค๋ฐฑ, ๋ฐฐํฌ ์ž๋™ํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ“Œ ๊นƒํ—ˆ๋ธŒ(GitHub)

๊นƒ์œผ๋กœ๋ถ€ํ„ฐ ์—…๋กœ๋“œํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ๋‹ค. ๊นƒ์€ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—์„œ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๊นƒํ—ˆ๋ธŒ์— ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์ฝ”๋“œ๋ฅผ ๊ณต๋™ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๐Ÿ” AWS

ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ์ค‘ ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๋‹ค.

 

 

๐Ÿ” GCP

๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์ด๋‹ค.

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ