Node.js란

꼬디바아 ㅣ 2024. 2. 19. 22:18

728x90

🖥️ Node.js란?

공식 홈페이지에서 정의한 Node.js란 "V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임"이다. JavaScript는 과거 웹 브라우저에서만 동작하는 프로그래밍 언어로, 프론트엔드 분야에서 주로 사용되었다.

 

하지만 Node.js의 등장은 JavaScript를 웹 브라우저로부터 독립시켜 서버 구현을 가능케 했다. 여기서 런타임이란, 특정 언어가 구동되는 환경을 뜻한다. 과거 JavaScript의 런타임 웹 브라우저였다면 Node.js로 인해 서버 구현까지 가능한 새로운 런타임이 생기게 된 것이다.

 

⌨️ Node.js의 특징

Node.js의 큰 특징은 총 다섯 가지로 나누어 설명할 수 있다.

  1. 비동기 이벤트 기반 환경
    첫 번째, "비동기 이벤트 기반 환경"이다. Node.js는 비동기 이벤트 기반의 환경을 제공한다. 이벤트 기반의 비동기 처리는 입출력 작업을 기다리는 동안 다른 작업을 수행할 수 있기 때문에 cpu 자원을 효율적으로 활용할 수 있다.
  2. 단일 언어 사용
    두 번째, "단일 언어 사용"이다. Node.js는 JavaScript를 기반하여 프론트엔드와 백엔드 모두에서 동일한 언어를 사용할 수 있다. 이는 개발자들의 생산성을 향상시키는 주요한 특징이다.

  3. 경량화
    세 번째, "경량화"이다. Node.js의 환경은 매우 가벼우며 코드 구조가 모듈화 되어있기 때문에 병렬 작업과 대용량 데이터를 처리하는데 높은 성능을 보장한다. 특히 다양한 라이브러리와 패키지를 지원하기 때문에 사용이 매우 용이하다.
  4. 확장성
    네 번째, "확장성"이다. Node.js는 새로운 모듈을 추가하거나 업데이트하는 과정이 무척 간단하다. 특히 프로젝트를 생성하고 확장하는 과정이 매우 쉬워 초보자들도 쉽게 사용할 수 있다.

  5. 커뮤니티와 생태계의 다양성
    다섯 번째, "커뮤니티와 생태계의 다양성"이다. Node.js는 거대하고 활발한 커뮤니티 생태계를 보유하고 있어 다양한 모듈과 패키지가 지속적으로 발전하고 있다. 따라서 지속적인 혁신과 개선이 이루어질 수 있다.

⌨️ Node.js를 사용했을 때 이점

기존의 웹 서버를 대부분은 스레드 기반으로 입출력을 처리하였지만 Node.js는 대규모 네트워크 서비스를 개발하기 위해 고안되었기 때문에 이벤트 기반으로 처리된다.

 

가령 스레드 기반 작업은 각각의 작업에 대한 스레드를 생성해 동시에 실행된다. 하지만 이벤트 기반에서는 각각의 작업을 준비하다가 첫  번째 작업의 이벤트가 발생하면 첫 번째 작업을 시작하고 두 번째 작업의 이벤트가 발생하면 두 번째 작업을 시작한다.

 

첫 번째 작업 도중 두 번째 작업을 처리해야 한다면 두 번째 작업 이벤트를 발생시켜 첫 번째 작업을 잠시 멈추고 두 번째 작업을 실행한다. 이러한 상황을 바로 이벤트 기반의 비동기 처리라고 할 수 있다.

 

스레드 기반 작업은 요청마다 스레드를 생산하기 때문에 메모리의 소모가 크며 스레드들이 동시에 똑같은 자원을 필요로 하는 경우 해당 자원에 대한 병목현상이 일어날 수 있다. 하지만 이벤트 기반의 Node.js는 비동기를 구현할 수 있으며 이 덕문에 Non-Blocking을 하나의 스레드로 수행할 수 있다.

 

📍 Blocking? Non-Blocking?
Blocking : Node.js 프로세스에서 한 작업의 실행을 위해 다른 작업이 완료될 때까지 기다려야 하는 방식
Non-Blocking : A라는 작업 중 B작업을 실행시켜야 할 때 A작업이 끝나지 않더라도 기다리지 않고 B작업이 실행돨 수 있도록 하는 방식
728x90

'👨‍💻 node.js' 카테고리의 다른 글

회원인증 방법론 (session-based, JWT, OAuth)  (0) 2024.02.22
Not Found 구현  (1) 2024.02.22
Query String  (2) 2024.02.20
URL의 이해  (4) 2024.02.19
Node.js 설치  (0) 2024.02.19