[Node.js] 🤷♂️ Node.js란 무엇인가?
Node.js란 무엇인가?
Node.js
는 구글 크롬의 자바 크롬의 JavaScript 엔진(V8 Engine)으로 빌드 된 JavaScript 런타임입니다.
👉 JavaScript 엔진과 JavaScript 런타임의 차이?
JavaScript는 일반적으로 크롬(Chrome)과 같은 브라우저에 내장되어있습니다. 그래서 그 동안 JavaScript는 브라우저에 종속되어 있었습니다. 이는 콘솔에서 JavaScript 명령어를 쳐보시면 확인 할 수 있습니다.
JavaScript를 크롬(Chrome)같은 브라우저에서만 쓰는 것이 아닌 브라우저 밖. 즉, 내 컴퓨터에서 다양한 용도로 확장하기 위해 만들어진 것이 바로 Node.js입니다. Node.js를 이용하면 Python과 같이 내 컴퓨터에서 File System를 이용할 수 있고, 서버를 만들 수도 있고 크롤링도 할 수 있습니다. JavaScript도 Python과 같은 프로그래밍 언어이기 때문입니다.
Node.js를 이용하여 Express
같은 라이브러리를 이용해서 서버를 만들곤하지만, Node.js 자체는 웹서버가 아닙니다. 위에 말씀드렸다싶이 Node.js는 자바스크립트 런타임(JavaScript Runtime)으로 Node.js는 웹 서버를 만들 수 있는 하나의 방법에 불과합니다.
Node.js의 특징
- 비동기 I/O 처리: Node.js 라이브러리의 모든 API는 비동기식(async)입니다, 멈추지 않는다는거죠 (Non-blocking). Node.js 기반 서버는 API가 실행되었을때, 데이터를 반환할때까지 기다리지 않고 다음 API 를 실행합니다. 그리고 이전에 실행했던 API가 결과값을 반환할 시, Node.js의 이벤트 알림 메커니즘을 통해 결과값을 받아옵니다.
- 빠른 속도: 구글 크롬(Google Chrome)의 V8 자바스크립트 엔진(JavaScript Engine)을 사용하여 빠른 코드 실행을 제공합니다.
- 단일 쓰레드와 뛰어난 확장성: Node.js는 이벤트 루프와 함께 단일 쓰레드 모델을 사용합니다. 이벤트 메커니즘은 서버가 멈추지않고 반응하도록 해주어 서버의 확장성을 키워줍니다. 반면, 아파치(Apache)같은 일반적인 웹서버는 요청을 처리하기 위하여 제한된 쓰레드를 생성합니다. Node.js 는 쓰레드를 한개만 사용하고 아파치(Apache)같은 웹서버보다 훨씬 많은 요청을 처리할 수 있습니다.
- 버퍼링이 없다: Node.js 어플리케이션엔 데이터 버퍼링이 없고, 데이터를 chunk로 출력합니다.
- 라이센스: Node.js 는 MIT License가 적용되어있습니다.
Node.js를 쓰기 적합한 곳
다음과 같은 경우에 Node.js를 사용할 경우 좋은 효율성을 발휘할 수 있습니다.
- 알림이나 실시간 대화같이 같이 데이터의 실시간 처리가 필요한 애플리케이션
- 사용자의 입력과 출력이 잦은 애플리케이션
- 데이터 스트리밍 애플리케이션
- JSON API기반의 애플리케이션
- 단일 페이지 기반의 애플리케이션
Node.js를 사용하는 회사
Node.js는 넷플릭스나 우버같은 실시간 처리가 중요한 애플리케이션이나, 많은 양의 데이터 입출력이 있는 곳에서 사용하고 있습니다.
Node.js를 쓰기 적합하지 않은 곳
Data Science같이 복잡한 데이터를 처리하기 위해 메모리, 램, CPU 등 하드웨어를 사용해야 하는 곳에는 적합하지 않습니다.
즉, 하드코어한 처리를 위한 목적으로는 적합하지 않습니다. 이런 곳에는 Python의 Django가 적합합니다.
참고 자료
'Web > JavaScript' 카테고리의 다른 글
[Node.js] 🤷♂️ npm(Node Package Manager)이 뭐길래? (0) | 2019.02.14 |
---|---|
[JavaScript] 변수의 범위(variable scope) (0) | 2019.02.11 |
자바스크립트 엔진(JavaScript Engine)과 자바스크립트 런타임(Javascript Runtime)의 차이 (0) | 2019.02.10 |
웹 사이트(website)와 웹 애플리케이션(webapplication) 뭐가 다를까? (0) | 2019.02.10 |
[JavaScript] 🤳 JavaScript로 정규표현식을 이용한 검색창 구현하기 (0) | 2019.02.10 |
댓글
이 글 공유하기
다른 글
-
[Node.js] 🤷♂️ npm(Node Package Manager)이 뭐길래?
[Node.js] 🤷♂️ npm(Node Package Manager)이 뭐길래?
2019.02.14 -
[JavaScript] 변수의 범위(variable scope)
[JavaScript] 변수의 범위(variable scope)
2019.02.11 -
자바스크립트 엔진(JavaScript Engine)과 자바스크립트 런타임(Javascript Runtime)의 차이
자바스크립트 엔진(JavaScript Engine)과 자바스크립트 런타임(Javascript Runtime)의 차이
2019.02.10 -
웹 사이트(website)와 웹 애플리케이션(webapplication) 뭐가 다를까?
웹 사이트(website)와 웹 애플리케이션(webapplication) 뭐가 다를까?
2019.02.10