Node.js ν΅μ¬κ°λ
β’
μ±κΈ μ€λ λ (Single-Threaded)
β’
λ
ΌλΈλ‘νΉ I/O (Non-Blocking I/O)
β’
μ΄λ²€νΈ κΈ°λ° (Event-Driven)
β’
npm (Node Package Manager)
β’
V8 μμ§
μ±κΈ μ€λ λ (Single-Threaded)
β’
Node.jsλ κΈ°λ³Έμ μΌλ‘ μ±κΈ μ€λ λ λͺ¨λΈμ μ±ννκ³ μμ΅λλ€. μ΄λ νλμ μ£Όμ μ€λ λμμ μ΄λ²€νΈ 루νλ₯Ό ν΅ν΄ λͺ¨λ μμ
μ μ²λ¦¬νλ€λ κ²μ μλ―Έν©λλ€.
β’
μ΄λ κ°λ¨ν ꡬ쑰λ₯Ό κ°μ§κ³ μμ΄ κ°λ°μκ° λ³΅μ‘ν λκΈ°ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μ½κ² λ§λλλ€.
μ€λ λ(Thread) λ?
μ€λ λλ μ»΄ν¨ν° νλ‘μΈμ€ λ΄μμ μ€νλλ μ΅μ μ€ν λ¨μμ
λλ€. νλ‘μΈμ€λ νλ μ΄μμ μ€λ λλ‘ κ΅¬μ±λ μ μμΌλ©°, κ° μ€λ λλ νλ‘μΈμ€μ μμμ 곡μ νλ©΄μ λ³λ ¬λ‘ μ€νλ μ μμ΅λλ€.
νλ‘μΈμ€ (Process)
: μ΄μ체μ λ‘λΆν° μμμ ν λΉλ°λΒ μμ
μ λ¨μ
μ€λ λ (Thread)
: νλ‘μΈμ€ λ΄μ ν λΉ λ°μ μμμ μ΄μ©νλΒ μ€ν λ¨μ
λ ΌλΈλ‘νΉ I/O (Non-Blocking I/O)
β’
Node.jsλ λΉλκΈ° λ° λ
ΌλΈλ‘νΉ I/Oλ₯Ό μ±ννκ³ μμ΅λλ€. μ΄λ I/O μμ
μ΄ μλ£λ λκΉμ§ κΈ°λ€λ¦¬μ§ μκ³ λ€μ μμ
μ κ³μ μνν μ μμμ μλ―Έν©λλ€.
β’
μ΄λ¬ν μ κ·Ό λ°©μμ λ§μ λμ μ°κ²°μ λ€λ£° λ ν¨μ¨μ μ΄λ©°, λμ©λ λ°μ΄ν°λ₯Ό λ€λ£° λ λΉ λ₯Έ μλ΅μ±μ μ 곡ν©λλ€.
λΈλ‘νΉ vs λ
ΌλΈλ‘νΉ
λΈλ‘νΉκ³Ό λ
ΌλΈλ‘νΉμ ν¨μκ° λ°λ‘ return λλμ§ μ¬λΆμ λ°λΌ μ ν΄μ§λ€.
λΈλ‘νΉ : μμ
μ΄ μλ£λ λ return
λ
ΌλΈλ‘νΉ : λ°λ‘ return
λκΈ° vs λΉλκΈ°
λ°±κ·ΈλΌμ΄λ μμ
μλ£ μ¬λΆλ₯Ό νμΈνλμ§ λ°λΌ μ ν΄μ§λ€.
λκΈ° : μμ
μλ£ νμΈ
λΉλκΈ°: μμ
μλ£ νμΈ
μ΄λ²€νΈ κΈ°λ° (Event-Driven)
β’
Node.jsλ μ΄λ²€νΈ κΈ°λ° μν€ν
μ²λ₯Ό μ¬μ©ν©λλ€. μ΄λ²€νΈκ° λ°μν λλ§λ€ μ½λ°± ν¨μλ₯Ό νΈμΆνμ¬ λΉλκΈ°μ μΌλ‘ μμ
μ μ²λ¦¬ν©λλ€.
β’
μ΄λ¬ν λͺ¨λΈμ μ΄λ²€νΈμ λ°μνκ³ λΉ λ₯΄κ² μ²λ¦¬ν μ μλλ‘ λμμ€λλ€.
λͺ¨λ μμ€ν
β’
Node.jsλ λͺ¨λ μμ€ν
μ κΈ°λ³Έμ μΌλ‘ μ 곡νμ¬ μ½λλ₯Ό λͺ¨λννκ³ μ¬μ¬μ© κ°λ₯ν λΆνμΌλ‘ λλ μ μλλ‘ λμμ€λλ€.
β’
CommonJS μ€νμΌμ λͺ¨λ μμ€ν
μ μ±ννμ¬ μ½λλ₯Ό ꡬμ±νκ³ λͺ¨λ κ°μ μμ‘΄μ±μ κ΄λ¦¬ν μ μμ΅λλ€.
npm (Node Package Manager)
β’
Node.jsμ ν¨ν€μ§ κ΄λ¦¬μμΈ npmμ μλ§μ μ€ν μμ€ ν¨ν€μ§λ₯Ό μ 곡νλ©°, κ°λ°μλ€μ΄ ν¨ν€μ§λ₯Ό μ½κ² 곡μ νκ³ μ¬μ¬μ©ν μ μλλ‘ ν©λλ€.
V8 μμ§
β’
Node.jsλ Google Chrome λΈλΌμ°μ μμ μ¬μ©λλ V8 JavaScript μμ§μ κΈ°λ°μΌλ‘ ν©λλ€. μ΄ μμ§μ λΉ λ₯Έ μλμ λμ μ±λ₯μ μ 곡ν©λλ€.
Node.jsμ μ΄λ¬ν νΉμ§λ€μ νΉν μΉ μλ² λ° λ€νΈμν¬ μμ© νλ‘κ·Έλ¨ κ°λ°μ μ ν©νκ² λ§λ€μ΄μ Έ μμ΅λλ€. λΉλκΈ°μ μ΄κ³ λ
ΌλΈλ‘νΉ I/Oλ λμμ±μ μ§μνκ³ , μ±κΈ μ€λ λ λͺ¨λΈμ κ°λ¨νκ³ ν¨μ¨μ μΈ μ½λλ₯Ό μμ±ν μ μλλ‘ λμμ€λλ€.