IT/Node.js

Node.js 의 개념과 Non-blocking I/O, Node.js 공부 (1)

Millennials 2021. 8. 8. 20:28

내가 뭔가 만들고 싶고 하고싶은 프로젝트가 있으면, 늘 사용한는 언어들이 다르다.

그런 언어들을 만날때마다 머리가 멈추게 된다. 지금 하고있는것도 벅찬데 새로운 언어라니..

그 중에 하나가 Node.js 언어이다. 하지만 요즘 느끼는건데 결국 언어들은 크게 다르지 않...을 것이다. 

Node.js 과감하게 도전 배워보자


- Nods.js가 무엇인가

일단 Node.js가 무엇인가부터 알아야 이걸 왜 공부하는가를 알 수 있겠다.

V8 (자바스크립트 엔진)으로 빌드된 이벤트 기반 자바스크립트 런타임이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다. - 위키

일단 웹페이지를 구성하는 언어가 'HTML'이고,

웹페이지를 다이나믹하게 만들어주는 조작할 수 있게 만드는 언어가 'JavaScript'라고 할 수있다.

 

JavaScript는 각 브라우저에서 그 언어들이 해석되어서, 클라이언트의 웹 화면에 표현되는데,

V8은 크롬 브라우저에서 사용하는 자바스크립트 해석하는 엔진이다.

Node.js는 그 V8 자바스크립트 해석 엔진을 가져와서 개발언어로써 사용하는 것이다.

Node.js를 통해 브라우저가 아니라 컴퓨터 cmd 등의 런타임에서도 자바스크립트 언어를 통해서 개발할 수 있다.

 

Node.js를 많이 쓰는 이유는 웹서버를 쉽게 만들수 있기 때문이다.

이는 Node.js 서버가 가지는 Non-blocking I/O 특성 때문이다.

 

- 'Non-blocking I/O' 특성

 어떤 프로세스에 처리 요청(Input)이 들어왔을 때, 프로세스가 처리되는 동안에 보통 서버는 시스템 응답대기(blocking)가 된 후 처리 결과를 보여준다(Output). Non-blocking은 많은 요청이 동시에 들어왔을 때 Input/Output 사이에 응답대기 상태가 없는 것이다.

좌 : 일반적인 Input/Output, 우: Non-blocking I/O 출처 : https://bcho.tistory.com/tag/Non%20blocking [조대협 블로그]

이 때 프로세스가 블로킹 상태가 아니기 때문에 CPU 를 다른 프로세스에서 사용함으로서 I/O 대기시간을 줄이거나 활용할 수 있다. 빠른 응답이 필요한 채팅과 SNS 프로그램에 자주 쓰이게 된다.

반응형