Node.js

김철회·2022년 11월 2일
0

Node.js

Node.js를 바탕으로 프로덕트를 제작해 왔지만, 정확하게 모르는 것 같아서 정리하고자 공부하였다.

노드 공식 사이트에서는 Node.js를 다음과 같이 정의하고 있다.

Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임입니다.

Node.js를 쓰는 이유?

자바스크립트는 말 그대로 스크립트 언어이다. 독립적인 언어가 아닌 스크립트 언어는 특정한 프로그램 안에서 동작한다. 그렇기 때문에 자바스크립트로 만든 프로그램은 웹 브라우저에 종속한다. 즉, 스스로 실행이 어려우며 웹 브라우저를 이용하여 실행할 수 있다는 의미이다.

하지만, Node.js를 사용하면 웹 브라우저에 종속하지 않고 자바스크립트로 만든 프로그램을 실행할 수 있게 된다. 또한 Node.js를 통해 서버를 만들 수도 있다.

이에 따라, Node.js를 이용하면 서버와 웹에 표시되는 부분을 모두 한 가지 언어로 구현할 수 있게 되었다. (이전에는 웹에 표시되는 부분은 자바스크립트로 서버는 Java 등 다른 언어를 써야 했었음)

Node.js의 특징

1. 자바스크립트를 사용한다.

  • 자바스크립트를 사용하기 때문에 자바스크립트에 대한 이해가 있다면 러닝커브가 낮으며 자바스크립트로 백엔드 로직까지 구현이 가능하다.

2. 이벤트 기반

  • 이벤트 기반은 이벤트가 발생하면 미리 지정해둔 작업을 수행하는 방식을 말한다. 이벤트 리스너에 콜백함수를 등록하고 이벤트가 일어나면 콜백함수가 호출된다. 이때 노드는 다음 이벤트가 발생할 떄까지 기다린다.

3. 싱글 쓰레드 기반의 논 블로킹 I/O(input output)

  • 노드는 싱글 쓰레드 기반의 논 블로킹 I/O 방식을 가진다. 자바스크립트는 기본적으로 동시에 실행되지 않는다. 노드가 싱글 쓰레드 기반이기 때문이다. 이에 따라, 노드는 싱글 쓰레드로 한 번에 하나의 일만 처리하지만, 들어오는 요청 순서가 아닌 논 블로킹 방식으로 비동기 처리도 할 수 있다.

Node.js의 장점과 단점 알아보기

장점

  • 싱글 쓰레드이기 때문에 멀티 쓰레드에 비해 메모리 차지가 적다.
  • 논 블로킹으로 처리하기 때문에 I/O 작업이 많은 때에 적합하다.
  • NPM(Node Package Manager)을 활용하여 다양한 모듈을 제공한다. 필요한 라이브러리와 패키지를 검색하여 빠르게 설치하고 사용할 수 있다.

단점

  • 싱글 쓰레드 기반이기 때문에 한 작업 자체에 시간이 많이 걸리는 웹서비스에 유용하지 않다.
  • 코드가 실행되어야 에러가 있는지 알 수 있기 때문에 테스트가 매우 중요하다.

Node.js가 유용한 환경은?

  • 사용자의 입력과 출력이 잦은 애플리케이션
  • SPA 기반의 애플리케이션
  • 데이터의 실시간 처리가 필요한 애플리케이션
profile
안녕하세요!

0개의 댓글