물음표 살인마

Node란 > 쉽게 설명하는 노드JS 특징과 장단점 본문

개발지식/Node.js

Node란 > 쉽게 설명하는 노드JS 특징과 장단점

응지권 2023. 5. 24. 11:18

 

1. Node.js란?

자바스크립트는 정적이던 html 페이지를 동적으로 만들기 위해 만들어졌다.

즉 html을 위한, html에 종속된 언어였다.

 

그리고 자바스크립트 해석은 웹브라우저가 담당하는데,

그렇기 때문에 브라우저 안에 자바스크립트 해석 엔진이 내재되어 있다.

(크롬-v8, 파이어폭스-spider monkey, 익플-chakra 등)

 

여기서 크롬이 자바스크립트 해석 엔진인 v8만 똑 떼서 출시한 게 node.js다.

node.js는 브라우저말고 로컬pc에서도 자바스크립트를 실행할 수 있게 도와준다.

즉, node.js는 자바스크립트 실행환경(=런타임) 이다.

 

* 런타임: 프로그래밍 언어는 주로 고급 언어로, 기계가 바로 이해할 수 없기 때문에 고급 언어로 작성된 소스 코드를 기계어로 변환하는 과정을 런타임이라고 한다.

 

node.js덕분에 자바스크립트를 일반 프로그래밍 언어처럼 사용하기 시작했다.

 

2. Node.js의 특징

(1) 장점

- non-blocking I/O

Node.js는 application 자체에서는 단일 스레드로 실행되지만 Background에서 thread pool을 구성해 작업을 수행한다.

요청이 많거나 오래걸려도 멈추거나 대기하지 않는다.

한 번에 많은 요청을 감당할 수 있다.

SNS, 채팅서비스 웹에 유리

일반 서버의 경우 많은 요청을 처리하는 경우 Scaling, CPU 멀티쓰레딩, non-blocking 스타일로 코드 작성

 

- 코드가 짧고 쉽다

빠르고 쉽게 프로토타입 만들기 좋다.

자바스크립트 문법만으로 프론트, 백엔드까지 전부 가능하다.

피보팅에 유리

 

-별도의 소프트웨어 없이 http 서버 라이브러리를 포함하여 웹 서버 동작이 가능하다.

(대표적으로 express를 사용)

 

(2) 단점

- 연산 속도가 느리다.

- 수학연산이나 이미지처리 같은 라이브러리가 부족하다.

- non-blocking 처리방식은 다른 언어에서도 비슷하게 구현 가능.

- node.js의 api는 비동기 처리 기반이라, 콜백함수의 늪에 빠질 수 있다.

- 코드를 수행해야 오류 확인이 가능하며 오류가 날 경우 프로세스 자체가 내려갈 수 있다.

- 단일쓰레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스에는 어울리지 않는다.

가벼운 I/O가 많은 웹서비스에 적합.

 

공식 api 문서

https://nodejs.org/api/

 

Index | Node.js v20.2.0 Documentation

 

nodejs.org

 

Comments