What is Node.js ?
-
서버 (Server)
- 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
-
클라이언트 (Client)
- 요청을 보내는 주체 (브라우저, 프로그램, 모바일 앱 등)
-
런타임 (Runtime)
- 특정 언어로 만든 프로그램들을 실행할 수 있는 환경
- 쉽게 말해 노드 = 자바스크립트 실행기
libuv library
-
이벤트 기반 (event-driven)
- 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
- 이벤트 발생 시 이벤트 리스너에 등록해둔 콜백 함수 호출
-
논 블로킹 I/O
- 이전 작업이 완료될 때까지 대기하지 않고 다음 작업 수행
- 같은 작업을 더 짧은 시간에 처리 가능
- setTimeout(CALLBACK, 0)
-
싱글 스레드
- 스레드가 하나뿐인 것
- 자바스크립트 코드가 동시에 실행될 수 없는 이유
프로세스 vs 스레드
-
프로세스 (process)
- 운영체제에서 할당하는 작업의 단위
- 프로세스 간 자원 공유 X
-
스레드 (thread)
- 프로세스 내에서 실행되는 흐름의 단위
- 프로세스는 스레드를 여러 개 생성해 작업을 동시에 처리
- 자원 공유 가능
참고 : 「Node.js 교과서」