(Node.js) Node.js란?

Su Bak
3 min readJun 7, 2019

--

요즘 백엔드 개발에 Node.js를 활용하는 곳이 점차 늘어나고 있습니다. Node.js란 무엇일까요?

Node.js 사이트로 접속하면 Node.js를 ‘ Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.’ 라고 소개하고 있습니다. (저는 처음에 이 말이 전혀 이해되지 않았습니다. 혹시 저와 같은 분이 계신다면 저의 설명이 도움이 되셨으면 좋겠습니다.)

웹애플리케이션을 개발할 때 JavaScript를 사용하게 되는데요. 모든 브라우저가 JavaScript 코드를 해석하기 위해 JavaScript Engine을 내장하고 있습니다. Chrome은 V8, Firefox는 SpiderMonkey, Safari는 Webkit … 등등.

Node.js는 Chrome의 V8엔진을 이용하여 브라우저에서 JavaScript를 해석하듯이 서버에서 JavaScript를 동작할 수 있도록 하는 환경(플랫폼) 이라고 생각하시면 이해가 조금 더 빠르게 되지 않을까 생각합니다.

말그대로 환경(플랫폼)이기 때문에 Node.js 자체로는 아무것도 못합니다. 서버도 직접 구현해 주어야 하는데요. Node.js 자체 모듈인 http모듈을 import하여 서버를 생성해 주어야 합니다. 아래는 w3schools에 있는 http server를 만드는 예제 코드입니다.

var http = require(‘http’);

//create a server object:
http.createServer(function (req, res) {
res.write(‘Hello World!’); //write a response to the client
res.end(); //end the response
}).listen(8080); //the server object listens on port 8080

그렇다면 왜 Node.js를 사용하는 걸까요?

Node.js 라이브러리 내의 API는 모두 비동기식입니다. None-Blocking 즉, 멈추지 않는다는 것인데요. API를 실행하고 완료되기까지 기다리지않고 바로 다음 API를 실행합니다. 그리고 예전에 실행한 API가 값을 반환하면 이벤트 루프가 이를 확인하고 값을 받아옵니다. 단일 쓰레드 모델을 사용하고, 이벤트 메커니즘을 통해 서버가 멈추지 않고 반응할 수 있어 확장성을 키워줍니다.

그리고 Chrome의 V8 JavaScript 엔진을 사용하여 빠른 코드 실행을 제공하며, 버퍼링이 없습니다.

위와 같은 특징을 가지고 있어 데이터를 실시간으로 다루는 애플리케이션이나 싱글페이지 애플리케이션(SPA), 입출력이 잦은 애플리케이션을 개발할 때 뛰어난 효율성을 발휘합니다.

단, 싱글 쓰레드 모델이기 때문에 하나의 작업 자체가 시간이 많이 걸리면 전체 시스템의 성능이 아주 급격하게 나빠지므로 CPU 사용률이 높은 애플리케이션에선 Node.js 사용을 권장하지 않습니다.

오늘은 Node.js에 대해서 간단하게 소개드렸습니다. 여러분의 개발 공부에 조금이지만 도움이 되었기를 바랍니다.

부족한 글을 읽어주셔서 감사합니다.

--

--

Su Bak

Backend Developer. Mainly use JavaScript but try not to have language constraints. Always trying to acquire new knowledge