왜 Node.js 를 사용해야 하는가

김세주·2021년 6월 15일

nodejs

목록 보기
2/2

Node.js

정의 : Java 언어가 모든 OS 운영체제 Virtual Machine 환경 안에서 Runtime이 구동 되듯이 Node.js 는 웹브라우저에 종속적인 자바스크립트에서 외부에서 실행할 수 있는 runtime 환경을 chrome V8 엔진을 제공하여 여러 os 환경에서 실행할 수 있는 환경을 제공

  • 개발 생산성
  • 성능
  • 개발자 커뮤니티

개발 생산성

javascript를 기반으로 하기 때문에 Node.js 는 풀스택 개발, JSON사용, 비동기 프로그래밍을 가능하게 해 개발 생산성을 높일 수 있다.

  • 코드의 양을 줄이는 JSON 지원
    JAVASCRIPT가 JSON을 지원하므로 Node.js는 코드의 양이 비교적 적다. JSON은 데이터 표현을 위한 실질적인 표준이다.

데이터 저장소로 MongoDB를 사용하면 데이터의 저장부터 노출까지 모든 레이어에 걸쳐 JSON형식으로 데이터 표현이 통일된다.

app.get('/user', function(req, res) {  
  // Return all the users to a client
  User.find({}, function(err, result) {
    if (err) throw err
    res.json(result)
  });
});

이렇게 간단하게 /user 구현 가능

손쉬운 비동기 프로그래밍

콜백 지옥에 빠질 경우 너무나 코드가 복잡했다.

  • async/await 함수는 비동기 프로그래밍 코드를 동기 프로그래밍 코드처럼 작성할 수 있게 한다.
let RP = require("request-promise");  
let sites = await Promise.all([  
  RP("http://www.naver.com"),
  RP("http://www.google.com"),
  RP("http://www.yahoo.com")
])
console.log(sites)  

성능과 안전성

Node.js의 성능과 안정성은 걱정하지 않아도 된다. PayPal, Netflix, LinkedIn, Groupon 등 전 세계적인 서비스에서 이미 Node.js를 사용한다. 네이버도 Node.js를 사용해서 초당 5천 건가량의 질의를 24-코어 서버 4대로 처리한다.

내부 실험에서는 Node.js가 Apache보다 좋은 성능을 보였다. 비동기 I/O가 멀티스레드보다 좋은 성능을 보이는 것은 당연하다. PayPal의 실험에서는 요청 처리 속도와 응답 시간에서 Node.js가 Java보다 좋은 성능을 보였다.

Node.js가 특별히 원인을 알 수 없는 이유로 종료된 경우는 없었다. Node.js가 갑자기 종료된 원인은 모두 예외 처리를 하지 않는 등 개발자 실수였다.

Node.js의 또 다른 장점은 빠른 실행이다. 프로세스가 종료돼도 1~2초면 프로세스를 다시 실행시킬 수 있다.

Node.js의 단점으로 타입이 없는 JavaScript 언어의 특성을 이야기하곤 한다. 타입이 있다면 컴파일 시점에 오류를 어느 정도 걸러 낼 수 있다. 그래서 Node.js 서버는 Java 서버에 비해 안정성이 떨어진다고 이야기한다. 맞는 이야기일 수 있다. 그러나 Node.js를 사용해서 DBMS나 검색 엔진과 같은 복잡한 소프트웨어를 개발하지는 않는다. 대부분의 응용 서버는 API와 비즈니스 로직을 제공할 뿐이다. 이런 기능은 JavaScript 정도로 충분하다고 생각한다.

Node.js

profile
시간은 내 편이다.

0개의 댓글