본문 바로가기
Study/Node.js

[Node.js] node.js 관련 개념

by seoyamin 2022. 6. 29.
[출처]  Node.js 교과서 (조현영)

 

1. 서버란 ?

네트워크를 이용하여 클라이언트에게 데이터나 서비스를 제공하는 컴퓨터나 프로그램

= 클라이언트(브라우저, 모바일 어플, 서버 등)의 요청에 응답

 

 


 

2. Node.js의 특성

2-1. JavaScript RunTime

Node.js는 공식 문서에  자바스크립트 런타임이라고 소개되고 있다. 이때, Runtime은 어떤 언어로 작성된 프로그램이 실행될 수 있는 환경을 의미한다. 즉, node.js는 자바스크립트 실행기라고 이해하면 된다.

▷ RunTime : 특정 언어로 만든 프로그램을 실행할 수 있는 환경

 

 

2-2. 이벤트 기반  event-driven

 이벤트 기반 : 어떤 이벤트가 발생하면, 사전에 지정해둔 작업을 실행하는 방식

 이벤트 루프 (loop)  : 이벤트 발생 시 호출할 콜백 함수들 관리 & 호출된 콜백 함수들 실행 순서 결정

 

 

2-3. Non-Blocking I/O

Node.js의 기반인 JavaScript 코드는 동시 실행이 불가능하다.
반면, JS상에서 이루어지지 않는 I/O 작업은 동시에 처리될 수 있다.

 Non-Blocking : 이전 작업 완료될 때까지 대기 X, 다음 작업 수행

 Blocking : 이전 작업 완료될 때까지 대기

 

 

2-4. 싱글 스레드

Node.js는 싱글 스레드이다.
사실 node가 실행되면 하나의 프로세스가 생성되고, 그 프로세스에 여러개의 스레드가 생성될 수 있다.
다만, node는 여러 개의 스레드 중 직접 제어할 수 있는 것은 하나 뿐이므로 싱글 스레드로 불린다.

 

프로세스 스레드
OS에서 할당하는 작업의 단위
브라우저와 같은 프로그램들은 개별적인 프로세스
프로세스 간의 자원공유는 이루어지지 않음 (메모리 등)
프로세스 내부에서 실행되는 흐름의 단위
한 프로세스는 내부에 여러 스레드를 생성하여 여러개의 작업을 동시에 처리할 수 있음