상추의 IT저장소

JS) node.js 개념 이해 본문

Javascript

JS) node.js 개념 이해

구너상추 2022. 11. 21. 16:18

Node.js란??

- Node.js를 사용하려면 Javascript를 먼저 배워야한다. JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램이기 때문이다.

- JavaScript 엔진 위에서 동작하는 자바스크립트 런타임이다.

- JavaScript는 프로그래밍 언어이지만, 독립적인 컴파일 언어와는 다른 스크립트 언어이다. 스크립트 언어는 특정한 프로그램 안에서 동작하기 때문에 웹 브라우저 프로그램 안에서만 동작한다. 여기서 node.js가 탄생하여 웹 브라우저와 무관한 프로그램을 만들 수 있게 되었다.

- 웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어졌다.

- JavaScript를 활용하며, Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있는 것이 특징이다. 

- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하다.

 

자바스크립트 런타임

- 런타임이란 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻한다.

- 따라서 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 하는 자바스크립트 실행기이다.

- 노드는 이벤트 기반, Non-blocking I/O 모델을 구현하고 있다. 이벤트 기반이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미한다. 즉 이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두고, 이를 이벤트 리스너에 콜백함수를 등록한다. 이후 이벤트가 발생하면 리스너에 등록해둔 콜백함수를 호출하며, 이벤트가 끝난 후 노드는 다음 이벤트가 발생할 때까지 대기한다.

 

이벤트 루프

- 이벤트 루프는 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백함수를 호출 할지를 이벤트 루프가 판단한다.

-  자바스크립트는 싱글 스레드로 동작하기 때문에 하나의 태스크만 처리할 수 있는데, 브라우저가 동작하는 것을 살펴보면 많은 태스크가 동시에 처리되는 것처럼 느껴진다. 이러한 자바스크립트의 동시성을 지원하는 것이 이벤트 루프다.

 

 

 

 

'Javascript' 카테고리의 다른 글

JS) 실행컨텍스트  (0) 2022.11.23
JS) 이벤트 핸들러  (0) 2022.11.21
JS) Promise, async/await  (0) 2022.11.20
JS)Array.filter() Array.reduce()  (0) 2022.11.18
JS) 자주쓰는 Math 메소드  (0) 2022.11.18