본문 바로가기

개발/Node.js

[Node.js] base

728x90
반응형

🍎 Node.js란 무엇인가?

Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임

네트워크 애플리케이션(특히 서버) 개발에 사용되는 소프트웨어 플랫폼으로 js를 활용하며, Non-blocking I/O 와 단일 스레드, 이벤트 루프를 통한 높은 처리 성능을 가지고 있는 프로그램(개발환경) 이다.

🍏 특징

  • 내부 HTTP(HyperText Transfer Protocol: w3상에서 정보를 주고 받을 수 있는 프로토콜) 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하다.
  • 단일쓰레드 기반 비동기 방식이다. (Non blocking)

    -> Bloking [ 쓰레드 기반 동기방식 ] :
    • 하나의 쓰레드가 request를 받으면 모든 처리가 완료될때까지 정지후 처리결과가 완료되면 다시 응답한다.
    • 기존 업무 처리가 완료되기전 다른 request가 들어오면 새로운 쓰레드가 업무 시작.
    • 동시 request가 많은 경우 쓰레드의 수요가 점점 많아지면서 서버 과부하

      -> Non-blocking I/O [ 단일쓰레드 이벤트 루프 기반 비동기방식 ] :
      • 하나의 쓰레드가 request를 받으면 바로 다음 처리에 요청을 보내놓고 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아 보낸다.
      • 동시 request가 와도 처리가 완료될때까지 기다리지 않기에 서버 부하가 적다.

동기->블로킹 : 함수 호출시 당장 실행
비동기 -> 논블로킹 : 함수 호출 시 어느 곳에 쌓아놓고 동시에 요청처리, 요청이 완료된 순서대로(stack) 처리

- 프로토콜 : 컴퓨터 내부, 컴퓨터 간 데이터의 교환 방식을 정의하는 규칙 체계의 집합

🍐 Event Loop

여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백함수를 호출할지를 판단하는 작업.
노드는 이벤트가 종료될 때가지 이벤트 처리를 위한 작업을 반복하므로 loop라고 부른다.

🍊 Event-driven

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식.
특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두고, 이를 이벤트 리스너에 콜백함수로 등록하다.
콜백함수 호출후 이벤트가 끝난 노드는 다음 이벤트가 발생할 때까지 대기한다.

🍋 thread

프로세스 내에서 실행되는 흐름의 단위이자 프로세스 내에서 실제로 작업을 수행하는 주체
JavaScript 코드는 동시에 실행될 수 없는데 그 이유는 node가 싱글 thread 기반이기 때문.(Node가 js를 위해 만들어짐)
혼자 일을 처리하지만, 들어오는 요청 순서가 아닌 none blocking 방식으로 이전 작업이 완료될 때까지 대기하지 않고, 다음 작업을 수행하게 됨.
-> CPU 과부하

728x90
반응형


Calendar
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Visits
Today
Yesterday