2009년 Ryan Dahl이 처음 개발했으며, 오픈소스 Javascript 엔진인 크롬 v8에 비동기 이벤트 처리 라이브러리인 libuv를 결합한 플랫폼이다.
javascript로 브라우저 밖에서 서버를 구축하는 등의 코드를 실행할 수 있게 해주는 런타임 환경이다.
빈번한 I/o 처리에 있어서의 우수한 성능, 서버 확장의 용이성, 무엇보다도 javascript라는 프론트엔드 필수 언어로 백엔드까지 작성할 수 있다는 엄청난 장점 때문에 출시 이후로 빠르게 점유율을 높여가고 있다. 특히 넷플릭스 처럼 엄청나게 많은 양의 인풋 아웃풋 데이터를 처리해야 하는 서비스에 있어서 강점이 두드러진다.
NodeJs 특징
- 자바스크립트를 활용하여 논 블럭킹(Non Blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리성능을 가지고 있다. -> 함수가 호출 시 당장 실행하지 않고 다른곳에 쌓아두고 동시에 요청을 처리하고 처리가 완료된 순서대로 처리한다.
- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별동의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹서버의 동작에 있어 더 많은 통제를 가능케 한다.
- javascript로 서버를 구동할 수 있다.
- nodeJS 는 싱글 스레드, 논 블럭킹 모델로 싱글스레드가 혼자서 일을 처리하지만 들어오는 요청 순서가 아닌 논 블럭킹 방식으로 이전작업이 완료가 되지 않아도 대기하지 않고 다음작업을 수행한다.
반응형
'Cs' 카테고리의 다른 글
28. Node Js - React JS(리액트 특징) (0) | 2022.06.21 |
---|---|
27. NodeJS - express js 받기 (0) | 2022.06.20 |
25. async, await - Promise 2탄 (0) | 2022.06.08 |
24. javascript - Promise (feat.콜백지옥) (0) | 2022.05.26 |
23. PHP - date_diff(날짜 차이 계산), D-day계산 (0) | 2022.05.17 |