[๊ธฐ๋ณธ ์ง€์‹] Node.js๋ž€?

    ์š”์ฆ˜ ํŠธ๋žœ๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ณ ๋ฅผ ๋ณด๋‹ค๊ฐ€  ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์˜ ํ•„์ˆ˜ ์Šคํ‚ฌ ์ค‘ "Node.js" ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋งŽ์ด ๋ดค๋‹ค.

     

    ๊ทธ๋ž˜์„œ, Node.js ๊ฐ€ ๋„๋Œ€์ฒด ๋ญ”๋ฐ? ํ•˜๊ณ  ๋„ˆ๋ฌด ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ดค๋‹ค. 

     


    Node.js์˜ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ ์— ๋”ฐ๋ฅด๋ฉด, 

    Node.js๋Š” Chrome V8 JavaScript ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ JavaScript ๋Ÿฐํƒ€์ž„์ด๋‹ค.

    ๋ผ๊ณ  ์ •์˜ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์‚ฌ์‹ค ๋ญ” ๋œป์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค...

     

    ์ •์˜๋Š” ๋’ค๋กœํ•˜๊ณ , Node.js๋กœ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š”๋ฐ 

    ์™œ ? Node.js๋กœ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š”์ง€์— ๋Œ€ํ•ด ๋ถ„์„ํ•˜๋ฉฐ, ์กฐ๊ธˆ ์ด Node.js ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. 


    ์™œ ? Node.js๋กœ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊นŒ? 

    ์šฐ๋ฆฌ๋Š” ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ์ž์ฃผ ๊ฒฝํ—˜ํ•˜๊ฒŒ ๋œ๋‹ค. 

    ์ˆ˜๋งŽ์€ ๊ณ ๊ฐ์˜ ์š”์ฒญ์„ ํ•œ ๋ฒˆ์— ๋ฐ›์•„ ๊ฑฐ์˜ ๋™์‹œ์—, ์ฆ‰ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. 

    ์ด๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Node.js์˜ ํŠน์ง•์ด ๋ฐ”๋กœ Non-Blocking I/O ๋‹ค.
    ์ฆ‰, ๋ง ๊ทธ๋Œ€๋กœ ํ•ด์„ํ•ด๋ณด๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ง‰์ง€ ์•Š๋Š” ์ž…์ถœ๋ ฅ์„ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

     

    Node.js์˜ ์žฅ์ 

    ๋”๋ณด๊ธฐ

    1. ์‹ค์‹œ๊ฐ„ ์š”์ฒญ ์„œ๋น„์Šค์˜ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

    2. ์ฝ”๋“œ๊ฐ€ ์‰ฝ๊ณ  ๋งค์šฐ ์งง๋‹ค

    3. ์•ˆ์ „์„ฑ, ๋ณด์™„์„ฑ์ด ์ข‹๋‹ค

    Node.js๋Š” SNS๋‚˜ ์ฑ„ํŒ… ์„œ๋น„์Šค์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. 

    ์ด๋Ÿฐ ์„œ๋น„์Šค๋“ค์€ ์œ„์—์„œ ๋งํ–ˆ๋‹ค์‹ถ์ด ์š”์ฒญ์ด ์•„์ฃผ ๋งŽ์€ ์„œ๋น„์Šค์ด๋‹ค. 

    ์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด์„œ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด ์š”์ฒญ์ด ์•„์ฃผ ๋งŽ๊ฑฐ๋‚˜, ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์š”์ฒญ์„ ๋ฐ›์•˜์„ ๋•Œ ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ๋Œ€๊ธฐ์‹œ๊ฐ„ 

    ์ฆ‰, ๋กœ๋”ฉ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค. 

     

    ์ด๋•Œ, Node.js ์„œ๋ฒ„๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด Non-blocking ๋•๋ถ„์— ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ์š”์ฒญ ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. 

    ๋˜ํ•œ, Node.js๋Š” ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ์งง๊ณ  ์‰ฌ์›Œ์„œ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

    ๊ฐœ์ˆ˜๋Š” ๋งŽ์ง€๋งŒ, ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š”๋ฐ ์ ํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—
    ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•˜๋Š”๋…ธ๋“œ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. 

     

    Node.js์˜ ๋‹จ์ 

    ๋”๋ณด๊ธฐ

    ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ ์•ˆ์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

    ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์žฅ์ ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด, ๋‹จ์ ๋„ ์กด์žฌํ•œ๋‹ค. 

    Node.js๋Š” ๋ชจ๋‘ ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ ์•ˆ์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค. 

    ์ฝ”๋“œ๊ฐ€ CPU์—ฐ์‚ฐ์„ ๋งŽ์ด ์š”๊ตฌํ•˜๊ฒŒ ๋˜๋ฉด ์“ฐ๋ ˆ๋“œ ํ•˜๋‚˜๊ฐ€ ๊ฐ๋‹นํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค. 

    ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด, ์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค ๋˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฐ™์ด CPU๋ฅผ ๊ต‰์žฅํžˆ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ž‘์—…์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.


    ์™œ Node.js์˜ ์ˆ˜์š”๊ฐ€ ๋งŽ์•„์ง€๋Š”๊ฐ€?

    ๊ธฐ๋ณธ ์ •์˜์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค์‹ถ์ด Node.js๋Š” JavaScript๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

    ์ฆ‰, Node.js๋ฅผ ํ•™์Šตํ•œ๋‹ค๋Š” ๊ฒƒ์€ JavaScript๋ฅผ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ค„ ์•ˆ๋‹ค๋Š” ๊ฑด๋ฐ,

    ๊ทธ๋ ‡๋‹ค๋Š”๊ฑด ์„œ๋ฒ„(=๋ฐฑ์—”๋“œ) ๋ฟ ์•„๋‹ˆ๋ผ ํ”„๋ก ํŠธ์—”๋“œ ์˜์—ญ๋„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์„ฑ์žฅ์ด ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

     

    Node.js์™€ ํ•จ๊ป˜ ํ•™์Šตํ•˜๋ฉด ์ข‹์€ ์–ธ์–ด ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ

    1. Express.js 

    ๋”๋ณด๊ธฐ

    Express ๋Š” Node.js์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜๋‹ค. 
    ์‰ฝ๊ฒŒ ๋งํ•ด Node.js๋กœ ์‰ฝ๊ฒŒ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํด๋ž˜์Šค์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ชจ์•„๋†“์€ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. 

    ๊ฐ„๋‹จํ•œ ์›น ์„œ๋น„์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

    2. TypeScript 

    ๋”๋ณด๊ธฐ

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

    3. Next.js

    ๋”๋ณด๊ธฐ

    Next.js๋Š” TypeScript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. 

    Node.js ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ์ ์ด๊ณ  ๋ชจ๋“ˆํ™”๋œ ๋ฐฉ์‹์œผ๋กœ์˜ ๊ฐœ๋ฐœ์„ ๋„์™€์ค€๋‹ค. Next.js์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ 

    ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์—ฌ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์ด์ƒ์ ์ธ ๋„๊ตฌ์ด๋‹ค. 

    ๋Œ“๊ธ€