๐Ÿ’ป Programming

[ Node.js In Action ] 1์žฅ ์š”์•ฝ

1์žฅ์€ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ๋…ธ๋“œ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.


Node.js ๋Š” asynchronousํ•˜๊ณ  event-driven์ด๋‹ค.


asynchronous๋Š” ๋น„๋™๊ธฐ์‹์ด๋ผ๋Š” ๋ง์ด๊ณ  ๋น„๋™๊ธฐ์‹์ด๋ผ ํ•จ์€ ์–ด๋–ค ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๋…€์„์„ ํ˜ธ์ถœํ•˜๊ณ  ๊ทธ ๋…€์„์ด ์ผ์„ ๋๋‚ด๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚˜๋Š” ๋˜ ๋‹ค๋ฅธ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ๋ง์ด๋‹ค.

Event-driven์ด๋ผ๋Š” ๊ฒƒ์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์–ด๋–ค ์ผ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ด๋ฒคํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” ๊ฒƒ์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ , ์Šคํฌ๋กค๋ฐ”๊ฐ€ ์ œ์ผ ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ”๋‹ค๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ํŠน์ • ์˜์—ญ์— ์˜ฌ๋ ค๋†“๋Š”๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ๋“ฑ์˜ ๋™์ž‘์„ ๋งํ•œ๋‹ค.


Node.js๋Š” DIRTy ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํ”Œ๋žซํผ์ด๋‹ค. ( ํ”„๋ ˆ์ž„์›์ด ์•„๋‹ˆ๋‹ค )


์—ฌ๊ธฐ์„œ DIRTy๋ผ ํ•จ์€ Data-Intense Real-Time ์„ ๋งํ•œ๋‹ค. 


๋์— y๋Š” ์™œ ๋ถ™์˜€์„๊นŒ? ๊ถ๊ธˆํ•ด์กŒ๋‹ค.  

"DIRT์• ํ”Œ๋ฆฌ์ผ€์ด์…˜"๊ณผ "DIRTy์• ํ”Œ๋ฆฌ์ผ€์ด์…˜"์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด, dirt๋ผ๋Š” ๋‹จ์–ด๋Š” ๋จผ์ง€, ๋–ผ, ์ง„ํ™ ๋“ฑ์„ ์˜๋ฏธํ•˜๋Š” ๋ช…์‚ฌ์ด๊ณ  dirty๋Š” dirt์˜ ํ˜•์šฉ์‚ฌ๋กœ์„œ ๋”๋Ÿฌ์šด, ์ง€์ €๋ถ„ํ•œ ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค. ๋ญ๊ฐ€ ๋” ๋“ฃ๊ธฐ ์ข‹์€์ง€ ํ•œ๊ตญ๋ง๋กœ ๋น„๊ตํ•ด๋ณด์ž. "๋จผ์ง€ ์–ดํ”Œ", "์ง„ํ™ ์–ดํ”Œ", "๋–ผ ์–ดํ”Œ"์ด๋ผ๋Š” ๋ง๊ณผ "๋”๋Ÿฌ์šด ์–ดํ”Œ", "์ง€์ €๋ถ„ํ•œ ์–ดํ”Œ"์ด๋ผ๋Š” ๋ง, ์–ด๋–ค ์ด๋ฆ„์ด ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€? ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งŽ์€ ์–ดํ”Œ์„ ์–˜๊ธฐํ•  ๋•Œ "๋จผ์ง€ ์–ดํ”Œ"๊ณผ "์ง€์ €๋ถ„ํ•œ ์–ดํ”Œ", ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค๋ฉด ๋‹น์—ฐํžˆ ์ง€์ €๋ถ„ํ•œ ์–ดํ”Œ์„ ์„ ํƒํ•˜๋Š”๊ฒŒ ์‚ฌ๋žŒ๋“ค์ด ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฝ๋‹ค. ๊ทธ๋ž˜์„œ ๋์— y๋ฅผ ๋ถ™์—ฌ์„œ ๋Š๋‚Œ์„ ์‚ด๋ฆฐ๊ฑฐ๋‹ค.

๋ญ ์ด๊ฑด ์–ด๋””๊นŒ์ง€๋‚˜ ๋‚˜์˜ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์ด๋‹ค.


์ € ๋‘ ๊ฐ€์ง€ ๋‚ด์šฉ์ด 1์žฅ์—์„œ ์–˜๊ธฐํ•˜๋Š” ๋‚ด์šฉ์ด๋‹ค.


๊ทธ๋Ÿผ 2์žฅ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ณผ๊นŒ?