ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

1. ๋…ธ๋“œ์˜ ์ •์˜

- ๋…ธ๋“œ๋Š” ์„œ๋ฒ„๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„

- ์‹คํ–‰๊ธฐ. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰

 

์„œ๋ฒ„

- ๋…ธ๋“œ๋Š” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์ œ์ผ ๋งŽ์ด ์‚ฌ์šฉ

- ์„œ๋ฒ„ : ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ •๋ณด๋‚˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•จ

- ํด๋ผ์ด์–ธํŠธ : ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ฃผ์ฒด

- ex) ์ฃผ์†Œ์ฐฝ์— ์›น ์‚ฌ์ดํŠธ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅ(์š”์ฒญ)ํ•˜๋ฉด ๊ทธ ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” ์ปดํ“จํ„ฐ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์›น ์‚ฌ์ดํŠธ ํŽ˜์ด์ง€๋ฅผ ๋ฐ›์•„์™€์„œ ์š”์ฒญ์ž์˜ ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)์— ๋„์šด๋‹ค(์‘๋‹ต)

- ex) ๋ชจ๋ฐ”์ผ ์•ฑ ์„ค์น˜ โžก ์•ฑ์Šคํ† ์–ด์—์„œ ์›ํ•˜๋Š” ์•ฑ์„ ๊ณ ๋ฅธ ํ›„ ์„ค์น˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด(์š”์ฒญ) ๋‚ด๋ ค๋ฐ›๊ธฐ(์‘๋‹ต)์ด ์‹œ์ž‘

- ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ์‘๋‹ต์„ ํ•œ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„

- ๋…ธ๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„. 

- ๋Ÿฐํƒ€์ž„ : ํŠน์ • ์–ธ์–ด๋กœ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋œปํ•จ

- ๋…ธ๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰๊ธฐ)

 

- ๊ตฌ๊ธ€์ด V8 ์—”์ง„์„ ์‚ฌ์šฉํ•ด ํฌ๋กฌ์„ ์ถœ์‹œ, V8 ์—”์ง„์€ ๋งค์šฐ ๋นจ๋ž์Œ

- ๋…ธ๋“œ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (V8, libuv)๋Š” C์™€ C++๋กœ ๊ตฌํ˜„

- libuv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋…ธ๋“œ์˜ ํŠน์„ฑ์ธ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜, ๋…ผ ๋ธ”๋กœํ‚น I/O ๋ชจ๋ธ์„ ๊ตฌํ˜„

 

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜

- ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜(event-driven) : ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด๋‘” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹ ์˜๋ฏธ

- ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฌด์—‡์„ ํ• ์ง€ ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•ด๋‘์–ด์•ผ ํ•จ โฌ… ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(event listner)์— callback ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•œ๋‹ค๊ณ  ํ‘œํ˜„

- ๋…ธ๋“œ๋„ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹ โžก ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ๋“ฑ๋กํ•ด๋‘” ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ํ˜ธ์ถœ, ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค ์ฒ˜๋ฆฌํ•˜๋ฉด ๋…ธ๋“œ๋Š” ๋‹ค์Œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ

- ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์—์„œ๋Š” event loop ๋ผ๋Š” ๊ฐœ๋… ๋“ฑ์žฅ โžก ์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ• ์ง€๋ฅผ ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ํŒ๋‹จ

function first() {
  second();
  console.log('์ฒซ ๋ฒˆ์งธ');
}
function second() {
  third();
  console.log('๋‘ ๋ฒˆ์งธ');
}
function third() {
  console.log('์„ธ ๋ฒˆ์งธ');
}
first();

- ๋…ธ๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์˜ ๋งจ ์œ„๋ถ€ํ„ฐ ํ•œ์ค„์”ฉ ์‹คํ–‰, ํ•จ์ˆ˜ ๋ถ€๋ถ„์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ํ˜ธ์ถœ ํ•จ์ˆ˜๋ฅผ call stack์— ๋„ฃ์Œ

- ์œ„ ์ฝ”๋“œ๋Š” first -> second -> third ์ˆœ์œผ๋กœ ํ˜ธ์ถœ์ด ๋˜๊ณ , ์‹คํ–‰์€ ๋ฐ˜๋Œ€๋กœ ๋œ๋‹ค

- anonymous ํ•จ์ˆ˜๋Š” ์‹คํ–‰ ์‹œ์˜ global context๋ฅผ ์˜๋ฏธ โฌ… ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์ƒ์„ฑ๋˜๋Š” ํ™˜๊ฒฝ

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ฝ”๋“œ๋Š” ์‹คํ–‰ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ „์—ญ ์ปจํ…์ŠคํŠธ ์•ˆ์—์„œ ๋Œ์•„๊ฐ„๋‹ค.

- ์ถœ๋ ฅ ๊ฒฐ๊ณผ : ์„ธ๋ฒˆ์งธ ๋‘๋ฒˆ์งธ ์ฒซ๋ฒˆ์งธ

 

function run() {
  console.log('3์ดˆ ํ›„ ์‹คํ–‰');
}
console.log('์‹œ์ž‘');
setTimeout(run, 3000);
console.log('๋');

- ์ถœ๋ ฅ ๊ฒฐ๊ณผ : ์‹œ์ž‘ ๋ 3์ดˆ ํ›„ ์‹คํ–‰

- 3์ดˆ ๋’ค์— run ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ

 

์ด๋ฒคํŠธ ๋ฃจํ”„ : ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ํ˜ธ์ถœํ•  ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ , ํ˜ธ์ถœ๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ•  ๋‹ด๋‹น. ๋…ธ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋ฏ€๋กœ ๋ฃจํ”„๋ผ๊ณ  ๋ถ€๋ฆ„

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

ํƒœ์Šคํฌ ํ : ์ด๋ฒคํŠธ ๋ฐœ์ƒ ํ›„, ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ๋Š” ํƒœ์Šคํฌ ํ๋กœ ํƒ€์ด๋จธ๋‚˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ณด๋ƒ„. ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ์ฝœ๋ฐฑ๋“ค์ด ์ค„์„ ์„œ ์žˆ์œผ๋ฏ€๋กœ ์ฝœ๋ฐฑ ํ๋ผ๊ณ  ๋ถ€๋ฆ„. ์ฝœ๋ฐฑ๋“ค์€ ๋ณดํ†ต ์™„๋ฃŒ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ค„์„ ์„œ ์žˆ์ง€๋งŒ ํŠน์ •ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๊ธฐ๋„ ํ•จ

 

- annonymous, setTimeout ์ˆœ์œผ๋กœ ํ˜ธ์ถœ ์Šคํƒ์— ๋“ค์–ด๊ฐ

- ๋“ค์–ด๊ฐ„ ์ˆœ์„œ์™€ ๋ฐ˜๋Œ€๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ, setTimeout ์‹คํ–‰. ํƒ€์ด๋จธ์™€ ํ•จ๊ป˜ run ์ฝœ๋ฐฑ์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋ณด๋‚ด๊ณ  setTimeout์€ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ๋น ์ง. ๋‹ค์Œ์œผ๋กœ anonymous๊ฐ€ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ๋น ์ง. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ๋Š” 3์ดˆ ์ดํ›„ run ํ•จ์ˆ˜๋ฅผ ํƒœ์Šคํฌ ํ๋กœ ๋ณด๋ƒ„. 

- ํƒœ์Šคํฌ ํ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ๋กœ ์ด๋ฃจ์–ด์ง. ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ์ •ํ•ด์ง„ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋“ค์„ ํ˜ธ์ถœ ์Šคํƒ์œผ๋กœ ๋ถ€๋ฆ„

 

- ํ˜ธ์ถœ ์Šคํƒ์—์„œ anonymous๊นŒ์ง€ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜์–ด ํ˜ธ์ถœ ์Šคํƒ์ด ๋น„์–ด ์žˆ๋Š” ์ƒํ™ฉ

- ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ํ˜ธ์ถœ ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด ํƒœ์Šคํฌ ํ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€ ํ˜ธ์ถœ ์Šคํƒ์— ๋„ฃ๊ณ  ์‹คํ–‰

 

- ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ run ์ฝœ๋ฐฑ์„ ํƒœ์Šคํฌ ํ์—์„œ ๊บผ๋‚ด ํ˜ธ์ถœ ์Šคํƒ์œผ๋กœ ์˜ฌ๋ฆฐ ์ƒํ™ฉ

- ํ˜ธ์ถœ ์Šคํƒ์œผ๋กœ ์˜ฌ๋ ค์ง„ run์€ ์‹คํ–‰๋˜๊ณ  ์‹คํ–‰ ์™„๋ฃŒ ํ›„ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ๋น„์›Œ์ง

- ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ํƒœ์Šคํฌ ํ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด์˜ฌ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋Œ€๊ธฐ

 

๋…ผ ๋ธ”๋กœํ‚น I/O

- ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

- ์ž‘์—…์—๋Š” ๋‘๊ฐ€์ง€ ์ข…๋ฅ˜ โžก ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅ, ๋™์‹œ์— ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅ

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋Š” ๋™์‹œ์— ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ I/O ์ž‘์—…์€ ๋™์‹œ์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

- I/O : Input/Output ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ์ด๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ์š”์ฒญ ๋“ฑ

- ๋ธ”๋กœํ‚น : ์ด์ „ ์ž‘์—…์ด ๋๋‚˜์•ผ๋งŒ ๋‹ค๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

- ๋…ผ๋ธ”๋กœํ‚น : ์ด์ „ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ž‘์—… ์ˆ˜ํ–‰

 

- ์ž‘์—… ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง

 

function longRunningTask() {
  // ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…
  console.log('์ž‘์—… ๋');
}

console.log('์‹œ์ž‘');
longRunningTask();
console.log('๋‹ค์Œ ์ž‘์—…')

- ๋ธ”๋กœํ‚น ๋ฐฉ์‹์˜ ์ฝ”๋“œ

- ์‹คํ–‰ ๊ฒฐ๊ณผ : ์‹œ์ž‘ | ์ž‘์—… ๋ | ๋‹ค์Œ ์ž‘์—…

 

function longRunningTask() {
  // ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…
  console.log('์ž‘์—… ๋');
}
console.log('์‹œ์ž‘');
setTimeout(longRunningTask, 0);
console.log('๋‹ค์Œ ์ž‘์—…')

- setTimeout ์ด์šฉํ•ด ์ฝ”๋“œ ๋ณ€๊ฒฝ

- ์‹คํ–‰๊ฒฐ๊ณผ : ์‹œ์ž‘ | ๋‹ค์Œ ์ž‘์—… | ์ž‘์—… ๋

- setTimeout(์ฝœ๋ฐฑ, 0)์€ ์ฝ”๋“œ๋ฅผ ๋…ผ ๋ธ”๋กœํ‚น์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜

- setTimeout์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜์ธ longRunnigTask๊ฐ€ ํƒœ์Šคํฌ ํ๋กœ ๋ณด๋‚ด์ง€๋ฏ€๋กœ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

- ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋Š” ๋™์‹œ์— ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์‹คํ–‰ ์ˆœ์„œ๋งŒ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์†Œ์š” ์‹œ๊ฐ„์ด ์งง์•„์ง€์ง€ ์•Š๋Š”๋‹ค.

- ๋…ผ๋ธ”๋กœํ‚น๊ณผ ๋™์‹œ๋Š” ๊ฐ™์ง€ ์•Š๋‹ค

 

์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ

- ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ : ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๋ฟ์„ ์˜๋ฏธ

- ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ์—์„œ ํ• ๋‹นํ•˜๋Š” ์ž‘์—… ๋‹จ์œ„ ์˜๋ฏธ. ๋…ธ๋“œ๋‚˜ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐœ๋ณ„์ ์ธ ํ”„๋กœ์„ธ์Šค. (์ž์› ๊ณต์œ  X)

- ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„. ํ”„๋กœ์„ธ์Šค๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ์ž‘์—… ๋™์‹œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ. ์Šค๋ ˆ๋“œ๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ์ž์› ๊ณต์œ  ๊ฐ€๋Šฅ

- ๋…ธ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋จผ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์ƒ์„ฑ. ๊ทธ ํ”„๋กœ์„ธ์Šค์—์„œ ์Šค๋ ˆ๋“œ๋“ค ์ƒ์„ฑํ•˜๋Š”๋ฐ ๋‚ด๋ถ€์ ์œผ๋กœ ์Šค๋ ˆ๋“œ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ

- ๊ทธ์ค‘์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋Š” ํ•˜๋‚˜๋ผ์„œ ๋…ธ๋“œ๊ฐ€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ์—ฌ๊ฒจ์ง

 

- ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ(์ ์›), ๋ธ”๋กœํ‚น ๋ชจ๋ธ โžก ๋งค์šฐ ๋น„ํšจ์œจ์ 

- ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ, ๋…ผ ๋ธ”๋กœํ‚น ๋ชจ๋ธ โžก ๋…ธ๋“œ ์ฑ„ํƒ

 

- ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ, ๋ธ”๋กœํ‚น : ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

- ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋…ผ ๋ธ”๋กœํ‚น ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ? โžก ๊ทธ๋ ‡์ง€๋งŒ, ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ์–ด๋ ค์šฐ๋ฏ€๋กœ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ ๋ฐฉ์‹์„ ๋Œ€์‹  ์‚ฌ์šฉ

- I/O ์š”์ฒญ์—๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ์ด ๋” ํšจ์œจ์ 

 

์„œ๋ฒ„๋กœ์„œ์˜ ๋…ธ๋“œ

- ๋…ธ๋“œ : ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ, ๋…ผ ๋ธ”๋กœํ‚น ๋ชจ๋ธ(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ํŠน์„ฑ)

- I/O ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Œ

- CPU ๋ถ€ํ•˜๊ฐ€ ํฐ ์ž‘์—…์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ

 

- ๋…ธ๋“œ์—๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ์ž…๋ฌธ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํš๊ธฐ์ ์œผ๋กœ ๋†’์ž„

 

์„œ๋ฒ„ ์™ธ์˜ ๋…ธ๋“œ

- React, Vue, Angular

 

- npm ์˜ค๋ฅ˜

 

 

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. ํ•ด๊ฒฐ

npm install -g n ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋‹ค๊ฐ€ ๋ธ”๋กœ๊ทธ์— ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์„ ๋”ฐ๋ผํ–ˆ๋‹ค.๊ทธ ํ›„๋กœ๋ถ€ํ„ฐ npm WARN config global '--global', '--local' are deprecated. Use '--location=global'๋ผ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋–ด๋‹ค.npm

velog.io

- ์œ„ ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ํ•ด๊ฒฐ

Comments