본문 바로가기
IT

Node.Js에 대하여

by 동양동꿀주먹 2022. 12. 28.

Node.Js란

Nodje.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임입니다. 자바스크립트는 프로그래밍 언어이며, 자바스크립트 런타임이란 자바스크립트가 구동되는 환경을 말합니다. 자바스크립트 런타임의 종류로는 웹 브라우저 프로그램과 Node.js라는 프로그램이 있습니다. Node.js는 확장성 있는 네트워크 애플리케이션을 위해 설계되었다고 합니다. 이전에는 자바스크립트 런타임은 브라우저밖에 존재하지 않았습니다. 자바스크립트 언어는 브라우저에만 사용할 수 있었다는 것입니다. 그래서 이러한 한계를 극복하고자 Node.js가 나왔으며, Node.js는 비동기 이벤트 주도 자바스크립트 런타임으로써 확장성 있는 자바스크립트 네트워크 애플리케이션을 만들 수 있도록 설계되었다고 합니다.

 

Node.js의 특징

Node.js는 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 별도의 소프트웨어 없이 동작하는 것이 가능하며, REPL(Read, Eval, Print, Loop)을 통해서 런타임을 제공합니다. REPL이란 사용자의 입력값을 받아서 메모리에 저장하고 입력값을 평가 및 실행하고 해당 결과를 출력한 다음 해당 과정을 반복하는 것을 말합니다. 그리고 Node.js는 Chrome V8 javascript 엔진과 더불어 libuv라는 라이브러리를 사용합니다. libuv 라이브러리를 통해서 이벤트 기반, 논 블로킹 I/O 모델을 구현할 수 있습니다. 이벤트 기반(Event driven)이란 이벤트가 발생하였을 때 미리 사전에 정의해둔 작업을 수행하는 것을 말합니다. Node.js는 특정 이벤트가 발생하였을 때 어떤 작업을 수행할 것인지 만들어두고 이벤트 리스터에 이를 실행할 수 있는 콜백함수를 등록해둡니다. 그리고 이벤트가 발생하면 이벤트 리스너에 등록해둔 콜백 함수를 실행하는 방식으로 동작합니다. 논 블로킹 I/O를 수행하기 위해서는 이벤트 루프라는 것을 사용합니다. 이벤트 루프(event loop)는 여러 이벤트가 여러개가 동시에 발생하였을 때 어떤 순서로 콜백 함수를 호출할 것인지에 대하여 판단하는 역할을 합니다. Node.js는 여러 요청이 동시에 왔을 때 Input과 output에 관련된 작업(http, file system, database)과 같은 블로킹 작업을 백그라운드에 수행할 수 있는 비동기 콜백함수를 이벤트 루프에 전달합니다. 그리고 Node.js는 싱글 스레드로 동작합니다. 하나의 스레드를 통해서만 여러 요청을 받을 수 있으며, 이러한 요청들은 백그라운드에서 모두 비동기적으로 각각 처리하고 이것에 대한 결과나 응답은 요청 받을 때처럼 하나의 스레드를 통해서만 전달됩니다.

'IT' 카테고리의 다른 글

MongoDB에 대하여  (0) 2022.12.31
자바스크립트에 대하여  (0) 2022.12.30
운영체제에 대하여  (0) 2022.12.28
인증(Authentication)과 인가(Authorization)에 대하여  (0) 2022.12.27
클라우드 컴퓨팅의 정의와 종류  (0) 2022.12.16

댓글