Junyung 2024. 3. 8. 12:17

μš”μ¦˜ νŠΈλžœλ“œλ₯Ό λΆ„μ„ν•˜κΈ° μœ„ν•΄ 곡고λ₯Ό 보닀가  λ°±μ—”λ“œ 개발자의 ν•„μˆ˜ μŠ€ν‚¬ 쀑 "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의 λͺ¨λ“ˆ μ‹œμŠ€ν…œμ€ μ½”λ“œμ˜ 가독성과 

μœ μ§€ λ³΄μˆ˜μ„±μ„ λ†’μ—¬ μ£ΌκΈ° λ•Œλ¬Έμ— λŒ€ν˜• ν”„λ‘œμ νŠΈλ₯Ό 관리할 λ•Œ 이상적인 도ꡬ이닀.