본문 바로가기

개발

[Node.js] Node.js 기초

Node.js

= Chrome V8 엔진으로 빌드된 JavaScript 런타임

이전에는 브라우저가 html을 읽으며 자바스크립스트를 읽고 실행 했으나

node가 생기며 브라우저나 html 없이도 실행이 가능해졌다. (명령어 ‘node 파일명’로 실행 가능)

+) 자바스크립트 런타임=자바스크립트로 만든 프로그램을 실행 해주는 것

 

⚠ 노드는 서버가 아닌 자바스크립트 런타임!! 하지만 서버 소스 코드를 실행시켜 서버를 구동할 수는 있다.

+) 서버 실행에 필요한 http/https/http2 모듈도 제공

 

특징

1. 이벤트 기반

= 이벤트가 발생하면 이벤트 리스너가 등록한 콜백 함수를 실행하여 원하는 작업 수행.

+) 콜백 함수 : 이벤트 발생시 실행되는 함수

+) 이벤트 리스너 : 이벤트 발생 시 콜백 함수 등록 함수

2. 논블로킹

= 비동기 작업을 처리 해준다.

시간이 오래 걸리는 작업은 백그라운드로 보내고 다른 코드가 먼저 실행되게 한다.

이후에 오래 걸리는 작업을 실행.

+) 블로킹:순서대로 실행 / 논블로킹:순서대로 실행되지 않을 수도 있다.

3. 싱글 스레드

= 스레드가 하나이다. 일을 한번에 하나만 처리할 수 있다. 

사실 Node내부적으로는 멀티 스레드 이지만, 개발자가 직접 다룰 수 있는 스레드는 하나라 싱글 스레드.

+) 프로세스:운영체제에서 할당하는 작업 단위 / 스레드:프로세스 내에서 실행되는 작업 단위

+) 하지만 최근에는 멀티 스레드 사용 가능

장단점

장점
단점
멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용
싱글스레드라 CPU 코어를 하나만 사용
I/O 작업 많은 서버에 적합
CPU작업 많은 서버로는 부적합 (작업 하나가 무거울 경우)
멀티 스레드 방식보다 쉬움
스레드가 멈추지 않게 관리 필요 (싱글 스레드 이니까)
내장 서버 모듈로 서버 구현 쉬움
서버 규모 커지면 관리 힘듦
자바스크립트 사용, json형식과 호환 용이
성능이 어중간.. (ML, 게임 서버 등은 어려움)

 

'개발' 카테고리의 다른 글

[Redis] node.js에서 Redis 캐싱  (0) 2025.04.19
[Redis] Window에 Reids 설치  (0) 2025.04.19
FastAPI  (0) 2025.03.21
AWS Athena를 통해 S3 parquet 데이터 조회 (C#)  (0) 2025.03.21
S3에 Parquet 파일 올리고 Athena로 조회  (0) 2025.03.21