잊혀진 나날보다 추억할 날들이 많아지길.

어제는 기억에 머무른 오늘인 듯 싶습니다. 다시오지 않을 오늘을 누리시길 바라겠습니다.

취미 생활

[유용한 정보] Node.js 프로그래밍

Dave Seong 2022. 11. 21. 10:10

Node.js

 
위키백과, 우리 모두의 백과사전.
 
라이언 라인하트 달(Ryan Lienhart Dahl)
Node.js 개발자
2009년 5월 27일(13년 전)[1]
19.1.0[2]  / 2022년 11월 14일(2일 전)
C++, 자바스크립트
macOS, 리눅스, 솔라리스, FreeBSD, OpenBSD, 윈도우 (시그윈), webOS
런타임 환경
MIT 허가서
개발 중
nodejs.org 

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

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

개요

V8으로 빌드된 이벤트 기반 자바스크립트 런타임이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.

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

역사

 
Ryan Dahl: Node.js의 개발자 (2010년)

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

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

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

2014년 12월, Fedor Indutny는 Node.js의 포크인 io.js를 시작했다.

2015년 9월, Node.js v0.12와 io.js v3.3은 병합되어 Node v4.0으로 합쳐졌다.[10]

2019년 4월, Node.js v12부터 ECMA스크립트의 공식 모듈 시스템 사용을 실험적으로 지원하기 시작했다. (그 이전까지는 서드파티인 CommonJS 모듈만을 사용해오고 있었다.)

출시

Node.js의 버전별 출시 및 관리는 규칙적인 주기를 가지고 이루어지고 있으며, v4 이후로 약 6개월 주기로 새로운 버전을 출시하고 있다. 이 중 짝수버전의 경우 장기지원 버전(LTS) 이라고 하여 별도의 코드명을 부여받으며, 약 3년간 유지보수 대상이 된다.

Node.js를 운영하는 재단의 한국어 웹페이지에서는 버전별 출시 및 유지보수 일정을 명시해두고 있다.

0.10.x 수명 종료   2013-03-11 2016-10-31
0.12.x 수명 종료   2015-02-06 2016-12-31
4.x 수명 종료 Argon[11] 2015-09-08 2018-04-30
5.x 수명 종료   2015-10-29 2016-06-30
6.x 수명 종료 Boron[11] 2016-04-26 2019-04-30
7.x 수명 종료   2016-10-25 2017-06-30
8.x 수명 종료 Carbon[11] 2017-05-30 2019-12-31
9.x 수명 종료   2017-10-01 2018-06-30
10.x 수명 종료 Dubnium[11] 2018-04-24 2021-04-30
11.x 수명 종료   2018-10-23 2019-06-01
0.12.x 수명 종료   2015-02-06 2016-12-31
4.x 수명 종료 Argon[11] 2015-09-08 2018-04-30
5.x 수명 종료   2015-10-29 2016-06-30
6.x 수명 종료 Boron[11] 2016-04-26 2019-04-30
7.x 수명 종료   2016-10-25 2017-06-30
8.x 수명 종료 Carbon[11] 2017-05-30 2019-12-31
9.x 수명 종료   2017-10-01 2018-06-30
10.x 수명 종료 Dubnium[11] 2018-04-24 2021-04-30
11.x 수명 종료   2018-10-23 2019-06-01
12.x 수명 종료 Erbium[11] 2019-04-23 2022-04-30
13.x 수명 종료   2019-10-22 2020-06-01
14.x 유지보수 LTS Fermium[11] 2020-04-21 2023-04-30
15.x 수명 종료   2020-10-20 2021-06-01
16.x 유지보수 LTS Gallium[11] 2021-04-20 2023-09-11[12]
17.x 수명 종료   2021-10-19 2022-06-01
18.x 지원 중인 LTS Hydrogen[11] 2022-04-19 2025-04-30
19.x 현재   2022-10-18 2023-06-01
20.x 보류 중   2023-04-18 2026-04-30
범례:
오래된 버전
오래된 버전, 지원 중
최신 버전
배포 예정
 

릴리스 상태 코드명 출시일 유지보수 종료일

예제

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);

같이 보기

각주

 

 

 

외부 링크

  위키미디어 공용에 관련된
미디어 분류가 있습니다.