본문으로 이동

Node.js

Node.js는 자바스크립트를 웹 브라우저 밖에서 실행하는 오픈 소스 크로스 플랫폼 런타임 환경으로, 라이언 달(Ryan Dahl)이 만들어 2009년에 소개했다.

위키베이스 항목 수정하기

특징

Node.js는 오픈 소스 크로스 플랫폼 자바스크립트 런타임 환경이다.[1] Node.js는 크롬의 핵심인 V8 자바스크립트 엔진을 브라우저 밖에서 실행한다.[1] Node.js 앱은 요청마다 새 스레드를 만들지 않고 하나의 프로세스에서 실행된다.[1] 표준 라이브러리는 코드가 막히지 않도록 하는 비동기 입출력 기능을 제공하며, 라이브러리도 대체로 막히지 않는 방식으로 쓰여 있다.[1] 네트워크나 데이터베이스, 파일 시스템에서 입출력을 할 때 스레드를 붙잡고 기다리지 않고 응답이 돌아오면 작업을 이어 간다.[1] Node.js는 이런 방식으로 서버 하나가 스레드 동시성을 직접 관리하지 않고도 수천 개의 동시 연결을 처리할 수 있다고 공식 문서는 설명한다.[1] 브라우저용 자바스크립트를 쓰는 프런트엔드 개발자가 다른 언어를 배우지 않고 서버 쪽 코드도 쓸 수 있다는 점을 공식 문서는 장점으로 든다.[1]

Node.js 공식 사이트는 Node.js가 비동기 이벤트 기반 자바스크립트 런타임으로서 확장 가능한 네트워크 애플리케이션을 만들도록 설계되었다고 소개한다.[2] Node.js에는 이벤트 루프(event loop)를 시작하는 호출이 따로 없다.[2] 입력된 스크립트를 실행한 뒤 이벤트 루프에 들어가고, 처리할 콜백이 더 없으면 빠져나온다.[2] 공식 사이트는 Node.js에 락(lock)이 없으므로 프로세스가 교착 상태에 빠질 걱정이 없다고 설명한다.[2] 공식 사이트는 Node.js에서 HTTP가 스트리밍과 낮은 지연을 염두에 두고 일급으로 다뤄지므로, Node.js가 웹 라이브러리나 프레임워크의 기반으로 알맞다고 설명한다.[2]

역사

Node.js를 만든 라이언 달은 2009년 JSConf.eu에서 Node.js를 발표했다.[3] 사이먼 윌리슨(Simon Willison)은 2009년 11월 이 발표를 소개하면서, 웹 애플리케이션의 입출력은 데이터베이스 호출이든 파일 시스템 접근이든 모두 비동기여야 한다는 것이 핵심 철학이라고 요약했다.[3] 윌리슨은 자바스크립트가 문서 객체 모델(DOM) 덕분에 콜백 중심의 API 문화를 갖추고 있어 비동기 프레임워크를 만들기에 알맞다고 설명했다.[3] Node.js 문서는 2009년에 V8이 Node.js의 엔진으로 선택되었다고 적는다.[4]

2015년 6월 Node.js와 io.js 개발자 공동체는 두 코드베이스를 합치고, 리눅스 재단이 운영하는 Node.js 재단(Node.js Foundation)에서 작업을 이어 가기로 했다고 발표했다.[5] 재단 설립 의사는 그해 초에 발표되었으며, 플래티넘 회원으로 페이머스(Famous), IBM, 인텔, 조이언트(Joyent), 마이크로소프트, 페이팔이 이름을 올렸다.[5] 재단은 기술 결정을 이끄는 기술운영위원회(TSC, Technical Steering Committee)를 둔 개방형 기술 거버넌스를 확정했다고 밝혔다.[5] 2015년 9월 8일에는 두 프로젝트의 코드가 한 코드베이스로 합쳐진 4.0.0 버전이 나왔다.[6][7] 4.0.0을 낼 당시 프로젝트는 협업자 44명이 운영하며 그중 15명이 기술운영위원회를 이룬다고 밝혔다.[7] 4.0.0은 크롬에 실리던 것과 같은 V8 4.5를 담아 클래스, 프라미스, 화살표 함수 같은 ES6 기능(ECMAScript)을 기본으로 켰고, 장기 지원(LTS, Long Term Support) 계획과 정기 릴리스 주기를 함께 내놓았다.[7] 릴리스 번호는 시맨틱 버저닝(SemVer)을 따르게 되었다.[7]

2019년 3월 12일 Node.js 재단과 JS 재단(JS Foundation)은 합쳐 OpenJS 재단(OpenJS Foundation)을 만든다고 발표했다.[8] OpenJS 재단은 발표 때 Appium, Dojo, jQuery, Node.js, webpack을 포함해 31개의 오픈 소스 자바스크립트 프로젝트로 이루어졌다.[8] Node.js 저장소의 README는 OpenJS 재단이 프로젝트를 지원한다고 적는다.[9]

운영

Node.js 프로젝트는 합의를 구하는(Consensus Seeking) 방식으로 결정한다.[10] 핵심 저장소는 기존 협업자(Collaborator)의 추천을 받은 협업자들이 관리하고, 의미 있는 기여를 한 사람이 협업자가 되어 커밋 권한을 얻는다.[10] 프로젝트 전체의 큰 방향은 기술운영위원회가 맡으며, 위원은 활동 중인 협업자 가운데 기존 위원의 추천을 받은 사람이다.[10]

릴리스

Node.js는 새 주 버전을 먼저 6개월 동안 현재(Current) 상태로 두어 라이브러리 제작자가 지원을 더할 시간을 준다.[6] Node.js 26까지는 홀수 버전이 6개월 뒤 지원이 끝나고 짝수 버전이 장기 지원 상태로 넘어갔으며, 장기 지원 릴리스는 중대한 버그를 대체로 30개월 동안 고치는 것을 보장한다.[6] 공식 사이트는 실제 서비스에는 활성 장기 지원이나 유지보수 장기 지원 릴리스만 쓰라고 안내한다.[6] Node.js 27부터는 릴리스 주기가 해마다 한 번으로 바뀌어, 모든 주 버전이 알파 단계와 6개월의 현재 단계를 거쳐 장기 지원 상태가 된다.[6][9] README는 알파 릴리스가 매년 10월에 시작되어 6개월 뒤 4월에 현재 릴리스가 되고, 현재 릴리스가 6개월 뒤 10월에 장기 지원으로 바뀐다고 적는다.[9]

2026년 10월 28일 Node.js 26(코드명 '리튬', Lithium)이 장기 지원으로 넘어갔다.[11] 26.x는 2029년 4월 말까지 업데이트를 받는다.[11] Node.js 26은 2026년 5월 5일에 처음 나왔고, Node.js 27 알파는 2026년 10월 29일에 나왔다.[6]

npm과 모듈

npm은 Node.js의 표준 패키지 관리자로, 프로젝트가 의존하는 패키지를 내려받아 관리한다.[12] 처음에는 Node.js 패키지의 의존성을 내려받고 관리하는 방법으로 시작했지만 프런트엔드 자바스크립트에서도 쓰인다.[12] 2022년 9월 npm 레지스트리에는 210만 개가 넘는 패키지가 올라 있었다고 Node.js 문서는 적는다.[12] Yarn과 pnpm은 npm의 대안으로 소개된다.[12]

Node.js 22.5.0에서 SQLite 데이터베이스를 다루는 node:sqlite 모듈이 더해졌고, 이 모듈은 node: 접두어로만 불러올 수 있다.[13] Node.js 25.7.0부터 node:sqlite의 안정성 단계는 릴리스 후보(release candidate)다.[13]

라이선스

Node.js는 MIT 라이선스로 공개된다.[9]

출처

  1. ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 “Introduction to Node.js”. 《Node.js》 (영어). 2026년 11월 9일에 확인함. 
  2. ↑ 2.0 2.1 2.2 2.3 2.4 “About Node.js®”. 《Node.js》 (영어). 2026년 11월 9일에 확인함. 
  3. ↑ 3.0 3.1 3.2 “node.js at JSConf.eu (PDF)”. 《Simon Willison's Weblog》 (영어). 2009년 11월 17일. 2026년 11월 9일에 확인함. 
  4. ↑ “The V8 JavaScript Engine”. 《Node.js》 (영어). 2026년 11월 9일에 확인함. 
  5. ↑ 5.0 5.1 5.2 “Node.js Foundation Advances Community Collaboration, Announces New Members and Ratified Technical Governance”. 《Linux Foundation》 (영어). 2015년 6월 15일. 2026년 11월 9일에 확인함. 
  6. ↑ 6.0 6.1 6.2 6.3 6.4 6.5 “Node.js Releases”. 《Node.js》 (영어). 2026년 11월 9일에 확인함. 
  7. ↑ 7.0 7.1 7.2 7.3 “Node.js 4.0.0 (Current)”. 《Node.js》 (영어). 2026년 11월 9일에 확인함. 
  8. ↑ 8.0 8.1 “Node.js Foundation and JS Foundation Merge to Form OpenJS Foundation”. 《Linux Foundation》 (영어). 2019년 3월 12일. 2026년 11월 9일에 확인함. 
  9. ↑ 9.0 9.1 9.2 9.3 “README.md”. 《GitHub》 (영어). 2026년 11월 9일에 확인함. 
  10. ↑ 10.0 10.1 10.2 “Project Governance”. 《Node.js》 (영어). 2026년 11월 9일에 확인함. 
  11. ↑ 11.0 11.1 “Node.js 26.13.0 (LTS)”. 《Node.js》 (영어). 2026년 10월 28일. 2026년 11월 9일에 확인함. 
  12. ↑ 12.0 12.1 12.2 12.3 “An introduction to the npm package manager”. 《Node.js》 (영어). 2026년 11월 9일에 확인함. 
  13. ↑ 13.0 13.1 “SQLite”. 《Node.js v26.13.0 Documentation》 (영어). 2026년 11월 9일에 확인함.