Node.js

Nodejs에 대한 오해

pangyoelon 2023. 2. 17. 15:35

1. Nodejs는 서버(?)다

노드 공식사이트에는 노드를 아래와 같이 설명하고있다

Nodejs는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임이다

풀어서 말하면

Nodejs는 브라우저에서만 실행되었던 JavaScript 해석기를 브라우저 바깥에서도 실행시킬 수 있게 하는 실행기(런타임)이다

그 실행기로 서버를 만드는 것

 

2. Nodejs는 싱글스레드다

노드를 실행시킨 다음 작업관리자로 살펴보면 스레드가 여러개로 뜨는 것을 볼 수 있다

노드의 스레드는 여러개지만 사용자가 컨트롤 할 수 있는 스레드는 하나로 고정되어있기 때문에 싱글스레드라고 표현했던 것

이 처럼 노드는 원래부터 멀티스레드였고, 노드14버전 부터는 멀티스레드를 직접 사용자가 다룰 수 있게 되었다고 한다 (하지만 잘 사용하지 않는 듯)

 

이쯤되서, 진작에 멀티스레딩을 하지 않은 이유에 대해 궁금할 수 있다

그 이유는 멀티스레딩이 사람의 사고로 쉽게 구현하기 어려울 수 있기 때문이다

그렇기에 노드는 멀티스레딩을 못한 것이 아니라, 프로그래밍의 편의성을 위해 멀티스레딩을 하지 않은 것이다

 

하긴 정말 싱글스레드만 가능했다면 비동기, 이벤트루프와 같은 개념도 없었을 것이다

 

 

+) 노드는 C와 C++로 이루어져있다

출저 : https://www.youtube.com/watch?v=TKBGiqj3yRE&list=PLcqDmjxt30RsGIPBBKX7xl05VuqJeCTFn&index=3