개발

[Node.js] Node.js 기초

yun000 2025. 3. 7. 17:03

Node.js

= 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임

브라우저가 html를 읽으면서 자바스크립트를 읽는다.

그래서 html없으면 자바스크립트를 실행 못함

근데 node가 생기면서 브라우저나 html없어도 실행 할 수 있게 되었다.

 

런타임

= 특정 언어로 만든 프로그램을 실행 하는 것

ex) 자바스크립트 런타임= 자바스크립트를 실행하는 것

 

 

 

노드의 특징

1️⃣ 이벤트 기반

=이벤트가 발생하면 지정해둔 작업을 수행

ex) click, network 요청, timer 등..

 

2️⃣ 논블로킹

= 오래걸리는 함수를 백그라운드에 보내서 코드가 먼저 실행하게 하고, 이후에 오래걸리는 함수 실행

블로킹은 순서대로 실행. 논블로킹은 순서대로 실행되지 않는다.

 

3️⃣ 싱글 스레드

= 스레드가 하나.

= 일을 하나만 처리할 수 있다.

 

프로세스에서 스레드가 여러개지만(멀티 스레드)

직접 다룰 수 있는 스레드는 하나라서 싱글스레드라고 함.

노드 14v부터는 멀티 스레드 사용 가능

 

프로세스=운영체제에서 할당하는 작업 단위

스레드=프로세스 내에서 실행되는 작업 단위.

 

 

 

서버, 노드

서버 = 네트워크로 클라이언트에 정보 제공하는 컴퓨터

클라이언트 = 서버에 요청 보내는 주체

 

ex) 브라우저가(클라이언트) 네이버(서버)에 접속

핸드폰(클라이언트)로 앱스토어(서버)에서 앱 다운로드

 

노드

= 노드 자체는 서버가 아니다!!

서버 소스코드를 실행시켜서 서버 구동을 할 뿐 서버는 아니다

하지만 서버를 구성할 수 있게 하는 모듈을 제공한다

 

 

노드로 만든 서버의 장단점

장점 단점
멀티 스레드 방식에 비해 컴퓨터 자원 적게 사용 싱글스레드. CPU코어 하나만 사용
I/O작업 많은 서버로 적합 CPU작업 많은 서버로는 부적합
멀티 스레드 방식보다 쉬움 스레드가 멈추지 않게 관리 필요
웹서버 내장 서버 규모 커지면 관리 힘듦
자바스크립트 사용 성능 어중간
JSON 형식과 호환하기 쉬움