Node.js

5o_hyun·2022년 4월 20일
0
post-thumbnail

Node.js란?

공식문서에는 이렇게 나와있다.

Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임입니다.

이는 늘 그렇듯 번지르르한 말뿐인것 찰떡같이 이해가 되진 않는다.
Node.js는 서버가 아니다.
Node.js는 Chrome의 V8엔진을 이용하여 javascript로 브라우저가 아니라 서버를 구축하고, 서버에서 JavaScript가 작동되도록 해주는 런타임 환경(플랫폼)이라고 이해하면 될 것 같다.

따라서, Node.js를 설치한다고 해서 웹서버가 실행되는 것은 아니고, Node.js에 포함된 라이브러리 및 http모듈을 이용하여 서버를 생성해야 한다.

Node.js 특징

1. 자바스크립트사용

자바스크립트는 스크립트 언어로 웹 브라우저 스크립트 엔진에서 구동된다.
기존엔 javascript를 동작시키려면 웹 브라우저가 필요했다.
Node.js는 이 스크립트 엔진과 환경을 독립시킴으로써 웹브라우저 없이 구동이 가능하다.
내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하다.

또한 뷰단에서는 javascript 백엔드는 java등의 언어를 따로 사용했다면 Node.js는 자바스크립트를 사용하기때문에 프론트엔드와 백엔드 서버 프로그래밍 둘다 구현이 가능하여 한가지 스크립트 언어로 웹 앱을 구현할 수 있다는 것이 강점이다.

2. Node 모듈 시스템

기존에 프론트엔드에서 javascript 모듈을 참조하기 위해선 script 태그를 통해 CDN으로 전송받아 사용했다. 특정 모듈만 사용하고 싶은 경우도 파일내에 들어있는 모든 콘텐츠를 다 참조해야하는 불합리함이 있었다. Node에서는 필요한 모듈을 npm이나 yarn으로 설치하고 설치된 모듈 내 특정 콘텐츠만 필요한 곳에 꺼내어 쓸 수있다.

3. 빠른속도

구글에서 개발한 자바스크립트 엔진을 사용하기 때문에 빠른 속도를 자랑한다.

4. 이벤트 기반 비동기 방식 (Non-Blocking)

Node.js에서는 모든 API가 비동기 방식이므로, 호출 후 응답을 기다지리 않고 다른 API를 호출한다. 이전에 호출했던 API의 응답이 오면 이벤트 루프가 확인하여 처리한다.

5. 단일쓰레드

스레드 : 스레드는 프로세스 내에서 실행되는 흐름의 단위이다. 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리할 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있다.

Node.js는 싱글스레드, 논 블로킹 모델로 싱글 스레드가 혼자서 일을 처리하지만 들어오는 요청 순서가 아닌 논 블로킹 방식으로 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다.


결론적으로 노드의 장점
1. 멀티 스레드 방식에 비해 적은 컴퓨터 자원을 사용한다.
2. I/O 작업이 많은 서버로 적합하다.
3. 웹 서버가 내장되어 있어 별도의 웹서버를 설치할 필요가 없다.
4. 자바스크립트를 사용하기 때문에 JSON 형식과 쉽게 호환된다.

profile
학생 점심 좀 차려

0개의 댓글