본문 바로가기

Node.js

Node.js 개요



1. Node.js 란?

Node.js는 2009년 라이언 달(Ryan Dahl)이 개발한 서버 개발 환경이다.

크롬 웹 브라우저에 탑재된 V8 자바스크립트 엔진(C++로 개발) 기반으로 자바스크립트로 애플리케이션을 개발할 수 있게 한다.

기존의 자바스크립트는 속도가 느려서 서버 개발 환경에 부적합하였으나 C++로 개발된 V8 자바스크립트 엔진으로 인하여 속도가 빨라졌다.

V8 자바스크립트 엔진은 자바스크립트로 머신 코드를 생성하여 실행하므로 속도가 빠르다.


2. Node.js 목적

브라우저가 아닌 서버 환경에서 자바스크립트를 사용하고자 만들었다. (서버 환경에서 자바스크립트로 애플리케이션을 개발)


3. 기존 애플리케이션과 Node.js의 차이점

기존 웹 서버는 대부분 스레드를 기반으로 하는 동기 방식으로 네트워크 입출력을 처리.

Node.js는 이벤트를 기반으로 비동기 방식으로 네트워크 입출력을 처리.


4. 이벤트 기반 비동기 방식

Node.js는 이벤트 기반 비동기 방식으로 작동하므로 대규모 네트워크 프로그램 개발에 적합하다.

기존 네트워크 프로그램의 방식은 동기 방식으로 일을 처리하는 대신 스레드를 여러 개 만들어 동시에 일을 처리한다. 좋은 방법이지만 일이 많아질수록 스레드를 더 많이 만들어야 하므로 메모리 사용량이 폭발적으로 증가하는 단점이 있다.

반면 Node.js는 이벤트 기반 비동기 방식이다. 스레드는 하나만 사용하며 이벤트가 발생시 동작한다. 일이 아무리 많아도 스레드는 하나이므로 메모리 사용량의 변화는 없으므로 대규모 네트워크 프로그램을 개발하기 적합한 형태이다. 단점으로는 스레드가 하나이므로 스레드가 뻗는 순간 프로그램 전체에 문제가 발생한다.


5. Node.js 장점과 단점

5.1 장점

1) 자바스크립트를 사용한다.

PHP, JSP, ASP 등 어떠한 웹 개발자라도 자바스크립트를 사용할 수 있다. 모든 웹 개발자가 쉽게 접근할 수 있다.

2) 구글이 만든 자바스크립트 엔진 V8을 사용한다.

V8 자바스크립트 엔진은 속도가 빠르다.

3) C++를 사용하여 기능을 확장할 수 있다.

V8 자바스크립트 엔진이 C++로 개발되었기 때문이다.

5.2 단점

1) 자바스크립트를 사용한다.

장점이자 단점이다. V8 자바스크립트 엔진이 아무리 빨라도 C언어나 C++ 언어로 개발된 서버보다는 느리다.

하지만 속도가 비슷한 다른 스크립트 언어를 사용해서도 웹 개발이 많이 이루어지고 있으므로 특별히 문제가 있다고 할 순 없다.

2) Node.js는 아직 정식버전이 아니다.

버전 1.0 조차도 공개하지 못한 상태이다. 따라서 다른 프로그래밍 언어나 개발 환경에 비해 안정도가 부족하다.

필자가 글을 쓰는 시점의 Node.js 최신 버전은 v0.10.28 이다.

하지만 버전 1.0 도 아닌데 이렇게 개발자들 사이에서 큰 관심과 많은 곳에서 개발에 적용하는 것을 보면 Node.js는 꼭 배워둬야 할 부분이라 생각한다.


6. Node.js를 사용하는 애플리케이션

  • Ebay / Linked IN : 이베이와 링크드인에서는 웹 API를 Node.js를 사용하여 배포한다. 또한 링크드인은 자사의 모든 서버를 Node.js를 사용하여 구성했다.
  • Yammer : 프록시 서버를 Node.js로 개발했다. 과거 Ruby로 작성했던 프록시 서버를 Node.js로 교체해 동시에 여러 요청을 빠른 속도로 처리할 수 있게 되었다.
  • Windows Azure : 2011년 12월부터 Node.js SDK를 배포하고 있다.
  • NHN : Node.js를 사용하여 애플리케이션 구축.


'Node.js' 카테고리의 다른 글

Node.js http 모듈  (0) 2014.11.05
Node.js 이벤트  (0) 2014.07.06
Node.js 기본 내장 모듈  (2) 2014.06.29
Node.js 전역 객체  (0) 2014.06.25
맥에서 Node.js 설치하기  (0) 2014.06.23