프로그래밍⚡️/node

node.js가 정확히 무슨 일을 하는거죠?

Kwangkki 2023. 2. 10. 10:01

부트캠프 초부터 node.js, next.js, react 등 여러 가지 설치와 세팅을 거쳤는데 node.js는 어떤 역할을 하는 것인지 그동안 몰랐다. 어느 정도 익숙해진 지금 node.js가 무슨 역할을 하는지 알아야겠다 싶어 정리해 봤다.

node.js

👉 node.js를 간략하게 말하면 JavaScript로 크롬, 인터넷익스플로어와 같은 브라우저가 아닌 PC OS에 접근하거나 서버를 구축할 수 있도록 런타임 환경을 제공하는 것이다. 

위 문장을 이해하고자 얼마나 많은 자료를 찾고 질문을 했던지.. 내가 이해한 것은 아래와 같다. 

 

우선 자바스크립트가 작동하기 위해서는 우리가 영어로 작성한 코드를 컴퓨터가 이해할 수 있는 0101101과 같은 byteCode로 바꾸는 과정이 필요하다. 이 역할을 크롬 브라우저는 V8이라는 엔진이 해주고 있다. 익스플로어, 파이어폭스 등 다른 브라우저도 이런 엔진을 각각 보유하고 있다. 근데 우리의 컴퓨터는? 기본적으로 컴퓨터 운영체제(OS)는 자바스크립트를 읽을 수가 없다. 그런 와중에 크롬에서 V8이라는 뛰어난 성능의 엔진을 출시했고, 엄청난 빠르기로 자바스크립트를 읽고 해석할 수 있게 되었다(단순 읽고 해석하는 것이 빨라진 것은 아니겠지만). 이 엔진이면 자바스크립트로도 충분히 외부 작업을 할 수 있겠다는 생각과 함께 만들어진 것이 node.js라고 볼 수 있다. 참고로 node.js를 개발한 라이언 달(Ryan Dahl)이라는 개발자는 "Node.js에 관해 후회하는 10가지"라는 강연에서 Deno라는 새로운 자바스크립트 런타임 플랫폼을 발표하기도 했다. 그렇다면 Deno는 Node.js의 10가지 단점을 보완한 새로운 플랫폼이라는 뜻일까? 여튼 안주하지 않고 도전하는 멋진 개발자인 것 같다. 

다시 돌아와 node.js를 정리하자면 자바스크립트로 웹 브라우저만 컨트롤 하는 것이 아닌 컴퓨터도 제어할 수 있도록 도와주는 녀석인 것 같다. 덕분에 자바스크립트를 더 넓은 영역으로 확장하여 사용할 수 있게 되었고 서버나 웹 애플리케이션도 제작할 수 있게 되었다.

현재 나는 node.js를 어떻게 이용하고 있나?

현재 내가 배우고 있는 리액트는 node 서버에서 작동하고 있다. 리렌더링을 위해서는 서버가 필요하다고 한다. 그리고 npm을 통해 다양한 라이브러리를 활용하고 있다. 

npm?

node.js를 설치하면 npm도 함께 설치된다. npm은 또 어떤 역할을 하는지 궁금해서 찾아봤다. npm은 라이브러리와 패키지를 관리하는 저장소이다. 누군가 npm에 등록한 라이브러리를 설치하면 package.json이라는 파일에 생성된다. 참고로 npm은 Node Package Manager의 줄임말이다. 

 

node.js 장점

node.js는 여러가지 특징과 그로인한 장점을 가지고 있다고 한다. 

 

1.

node.js는 단일 스레드 non-blocking I/O 이벤트 기반 비동기 방식이다. 이 구절은 node.js를 설명하는 거의 모든 블로그에 기재되어 있는 내용이다. 깊게는 이해하지 못했지만 비동기로 데이터를 처리할 수 있기 때문에 동시에 많은 이용자가 이용하는 서비스에 적합하다고 한다. 넷플릭스나 멜론 같은 스트리밍 서비스가 해당된다.

 

2.

npm을 통해 라이브러리를 사용할 수 있기 때문에 이미 만들어진 기능을 금방금방 적용해서 빠르게 작업물을 만들 수 있다.

 

 

node.js를 이해하려고 자바스크립트를 구동하는 엔진과 런타임 환경에 대해 공부했고, node.js 탄생 배경을 조사했고, 라이언 달의 근황까지 찾아봤다. 돌아돌아 정리한 내용을 글로 적었더니 별게 없는 것 같지만 블로그를 작성하면서 머릿속에 담긴 지식은.. 많을 거다... 

--

 

2024.01.25 - 1년이 지나고 이 글을 다시 보니 몇몇 부끄러운 내용도 있다. 성장의 지표로 삼기 위해 남겨두지만 ㅠ

 

 


참고 자료

https://namu.wiki/w/Node.js?from=Nodejs#fn-1

https://perfectacle.github.io/2017/06/18/what-is-node-js/

https://anywaydevlog.tistory.com/60

https://ko.wikipedia.org/wiki/%EB%94%94%EB%85%B8_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)