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 |