Node.js

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
Node.js
Node.js logo.svg
원저자 Ryan Lienhart Dahl
개발자 Node.js 개발자
최근 버전 10.12.0 / 2018년 10월 10일 (2달 전)(2018-10-10)
개발 상태 개발 중
프로그래밍 언어 C++, 자바스크립트
운영 체제 OS X, 리눅스, 솔라리스, FreeBSD, OpenBSD, 윈도 (시그윈), webOS
종류 네트워크 애플리케이션 프레임워크
라이선스 MIT 허가서
웹사이트 http://nodejs.org/

Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

개요[편집]

V8 (자바스크립트 엔진) 위에서 동작하는 이벤트 처리 I/O 프레임워크이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.

파이썬으로 만든 트위스티드, 로 만든 펄 객체 환경, 루비로 만든 이벤트머신과 그 용도가 비슷하다. 대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, 서버 측에서 실행된다. 일부 CommonJS 명세[1]를 구현하고 있으며, 쌍방향 테스트를 위해 REPL 환경을 포함하고 있다.

역사[편집]

2009년 Ryan Dahl은 플리커의 파일 업로드 진행 표시줄을 보았을 때, 파일이 얼마나 업로드되었는지 알기 위해서는 서버에 쿼리를 전송해야 한다는 점을 보고 조금 더 쉬운 방법을 찾다가 고안해 내었으며,[2] 그가 일하던 Joyent라는 회사에서 개발 및 운영을 담당하고 있다.[3]

최초 버전은 2009년 리눅스 기반으로 출시되었고, Inangural JSConf EU conference에서 Ryan Dahl의 발표[4] 직후 국제적인 관심을 끌기 시작했다.[5] 패키지 매니저인 npm은 2011년에 처음 소개되었다.

2011년 6월 마이크로소프트는 Joyent와 파트너십을 맺고[6] 같은 해 7월 윈도용 최초 버전을 출시했다.

출시[편집]

릴리스 코드명 출시일 LTS 상태 활동적인 LTS 시작일 유지보수 시작일 유지보수 종료일
v0.10 2013-03-11 수명 종료 - 2015-10-01 2016-10-31
v0.12 2015-02-06 수명 종료 - 2016-04-01 2016-12-31
v4 Argon[7] 2015-09-08 수명 종료 2015-10-01 2017-04-01 2018-04-01
v5 2015-10-29 LTS 없음 N/A 2016-06-30
v6 Boron[7] 2016-04-26 활동 중 2016-10-18 2018-04-18 2019-04-18
v7 2016-10-25 LTS 없음 N/A 2017-06-30
v8 Carbon[7] 2017-05-30 활동 중 2017-10-31 2019-04-01 2019-12 예정
v9 2017-10-01 LTS 없음 N/A 2018-06-30
v10 Dubnium[7] 2018-04-24 활동 중 2018-10-30 2020-04 예정 2021-04 예정

예제[편집]

Hello world HTTP 서버:

var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://localhost:8000/');

다른 예제, 7000번 포트를 여는 간단한 TCP Echo 서버:

var net = require('net');

net.createServer(function (stream) {
    stream.write('hello\r\n');

    stream.on('end', function () {
        stream.end('goodbye\r\n');
    });

    stream.pipe(stream);
}).listen(7000);

같이 보기[편집]

각주[편집]

  1. http://wiki.commonjs.org/wiki/Implementations/node.js
  2. Harris, Amber (2012년 4월 1일). “The Birth of Node: Where Did it Come From? Creator Ryan Dahl Shares the History”. Devops Angle. 2013년 10월 26일에 확인함. [깨진 링크(과거 내용 찾기)]
  3. Alex Handy (2011년 6월 24일). “Node.js pushes JavaScript to the server-side”. SDTimes. 2011년 9월 4일에 확인함. 
  4. “Ryan Dahl at JSConf EU 2009”. 
  5. “Ryan Dahl at JSConf EU 2009 Video”. 
  6. “Porting Node to Windows”. 2014년 8월 2일에 확인함. 
  7. “nodejs/Release”. 2018년 12월 10일에 확인함. 

외부 링크[편집]