본문 바로가기
카테고리 없음

TIL

by Node.js 주니어 개발자 귤 2022. 12. 13.

Node.js란?

Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임.
Node.js란 Javascript를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경을 의미.

Node.js를 굳이 사용해야 하는 이유가 있을까요?

  • Node.js는 논 블로킹(Non-blocking) I/O, 싱글 스레드(Single Thread), 이벤트 루프(Event Loop)의 특성이 있습니다.
    • 기존의 블로킹(Blocking) I/O는 프로그램 내부에서 함수를 호출하면 호출된 함수가 작업을 마칠 때까지 대기하는 방식이었지만, 논 블로킹(Non-blocking) I/O는 함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있는 장점이 있습니다.
    • 싱글 스레드(Single Thread)는 스레드 하나를 사용하는 것이며, 동시에 하나의 작업만을 처리할 수 있습니다.
      → 여기서 스레드(Thread)란 프로그램이 동작할 때, CPU 또는 프로세서를 사용하는 단위입니다.
    • 일반적으로 1개의 프로그램 1개의 스레드를 사용할 수 있습니다. 하지만 1개의 프로그램에서 여러개의 스레드를 사용할 수 있다면 연산할 수 있는 시간을 단축 시킬 수 있겠죠?
      (Node.js는 차라리 새로운 프로세스를 생성해 확장을 도모합니다. 프로세스는 여러개라도 서로에 대해 스레드에 비해 독립적이므로 하나의 프로세스가 문제를 일으키더라도 다른 프로세스까지 모두 종료될 확률은 상대적으로 낮습니다.
      이러한 특징때문에 연결 요청의 부하에 따른 서버 확장이 매우 자유롭습니다. 즉, Node.js는 특히 웹 서버에 특화된 철학이 녹아있는 언어입니다.)
    • 이벤트 루프(Event Loop)는 Javascript가 가지고 있던 싱글 스레드의 약점을 극복하기 위해 효율적으로 작업을 처리할 수 있는 특성입니다.