본문 바로가기
프로그래밍/Node.js

[1] node.js 란 무엇인가 (+ node.js 장단점 / 논블로킹 모델 / runtime?)

by 제이스톨 2023. 6. 12.
728x90

node.js 로고

Node.js 정의

: node.js는 Chrome V8 Javascript 엔진으로 빌드된 자바스크립트 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다.

( 출처 : Node.js 공식 사이트 )

https://nodejs.org/ko

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

"한마디로 정리하자면.. 자바스크립트를 컴퓨터에서 브라우저없이 실행하게 도와주는 환경을 node.js라고 부릅니다"

"자바스크립트는 Async(비동기) + Non-blocking Model을 채용하여, 현재 실행중인 코드의 실행이 끝나지 않아도 다음 코드를 호출할 수 있어요."

 


Node.js 장단점 정리

장점 단점
멀티 스레드 방식에 비해 적은 컴퓨터 자원 사용 기본적으로 싱글스레드라 CPU 코어을 하나만 씀
I/O 작업이 많은 서버로 적합 CPU 작업이 많은 서버로 부적합
웹 서버가 내장되어 있음 스레드가 하나 뿐이므로 더 주의가 필요. 이 스레드가 죽으면 모든게 끝난다..ㅠ
자바스크립트를 사용 서버 규모가 커졌을 때, 서버를 관리하기가 어려움
JSON 형식과 쉽게 호환됨  

< 주요 용어 정리 >

- 블로킹 모델 ( blocking ) :

코드의 실행이 끝나기 전까지 실행 제어권을 다른 곳에 넘기지 않아 다른 작업을 하지 못하고 대기하는 것을 말한다. 비동기 처리 불가능!

예. Java, C언어

// 블로킹 예시
const jt = require('jt');
const data = jt.readFileSync('/file.md'); // 파일을 읽을 때까지 여기서 블로킹됨
console.log(data);
moreWork(); // moreWork는 console.log(data)가 실행되고나서 실행

 

- 논 블로킹 I/O 모( non-blocking ) :

코드의 실행이 끝나지 않아도 실행 제어권을 다른 곳에 넘겨 다음 코드가 실행될 수 있는 것을 말한다. 비동기 처리가 가능!

예. 자바스크립트

// 논블로킹 예시
const jt = require('jt');
jt.readFile('/file.md', (err, data) =>{
	if(err) throw err;
    console.log(data);
});
moreWork(); // moreWork는 console.log 이전에 실행될 것입니다.

 

- Runtime : 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. Javacript는 기존 웹 브라우저에 종속되어 실행되었고 이를 브라우저 밖에서는 사용을 할 수가 없었다.

 


 

 

 

728x90