Node.js 입문기1 - Node.js의 개념과 특징

전클로네·2021년 1월 1일
0

Node.js

목록 보기
1/9

Node.js란?


Node.js는 chrome V8 javascript 엔진으로 빌드된 자바스크립트 런타임입니다.

런타임이란?
특정언어로 만든 프로그램들을 실행할 수 있는 환경

노드를 통하여 다양한 자바스크립트 어플리케이션을 실행할 수 있으며, 주로 서버 어플리케이션을 사용하는데 많이 사용합니다.

노드의 구조는 내부 구조는 다음과 같습니다.

Node.js Core Library
Node.js Bindings
V8(오픈소스 자바스크립트 엔진)libuv(비동기 I/O)

libuv 라이브러리는 노드의 특성인 이벤트 기반, 논 블로킹 I/O 모델을 구현하고 있습니다.

지금부터 Node.js의 특징을 살펴보도록 하겠습니다.

Node.js의 특징


1. 이벤트 기반

지정해둔 이벤트가 발생될때 작업을 수행하는 방식을 이벤트 기반이라고 얘기합니다.

이벤트 기반 시스템에서는 특정 이벤트가 발생될때 무엇을 할 지 미리 등록을 해두어야 합니다.
그것을 이벤트리스너에 콜백함수를 등록한다고 표현합니다.

Nodejs는 이벤트 리스너에 등록해둔 콜백함수를 호출하고 이벤트를 실행한뒤, 호출할 이벤트가 없거나 전부 처리한 경우 다음 이벤트가 발생할때까지 대기 하게 됩니다.

이벤트 기반 모델에서는 이벤트 루프라는 개념이 있습니다.
이벤트 루프는 이벤트 리스너에 등록된 콜백함수를 어떤 순서로 호출할지 결정합니다. 노드가 종료될때까지 이벤트 처리를 반복하므로 루프 라고 부릅니다.

2. 논블로킹 I/O

I/O란 input(입력)/output(출력)의 약자로 파일 읽기, 쓰기, 폴더 만들기 등과 같은 네트워크를 통한 요청 작업을 의미합니다.
논 블로킹이란 이전 작업이 완료 될때까지 기다리지 않고 다음작업을 수행하는 것을 말합니다.
Nodejs가 아닌 다른 언어의 경우 블로킹 방식을 사용하여 순차적으로 작업을 진행하게 되는데 이와 비교했을때 Nodejs는 작업속도가 빠르고 효율적이라는 것을 알 수 있습니다.

3. 싱글 스레드

하나의 프로세스안에 여러개의 스레드가 존재하는데, 그 중 하나의 스레드만을 사용하여 작업을 처리하는 방식을 싱글 스레드라고 합니다.
Nodejs의 경우에는 싱글 스레드, 논 블로킹 I/O방식을 주로 사용하게 되는데 이것은 하나의 스레드가 작업 완료 속도가 빠른 것들을 먼저 실행하고 오래 걸리는 것들은 나중에 처리하는 것을 말합니다.



참고문서
Node.js 교과서

profile
안녕하세요. 노드로 개발하는 마운틴러버 개발자 입니다.

0개의 댓글