개발
[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 형식과 호환하기 쉬움 |