노드: 자바스크립트 실행기
노드의 특성
- 이벤트 기반:
이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
예 : 클릭, 네트워크 요청, 타이머
이벤트 리스너: 이벤트를 등록하는 함수
- 논블로킹 : 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오오래 걸리는 함수
동기: 코드가 순서대로 실행
비동기: 코드가 순서대로 실행되지 않는다.
블로킹: 코드가 순서대로실행된다.
논블로킹: 코드가 순서대로 실행되지 않을수도있다. 살짝다름
- 싱글스레드
주어진 일을 하나밖에 처리하지 못함
프로세스: 운영체제에서 할당하는 작업의 단위, 프로세스간 자원 공유 X
스레드: 프로세스 내에세 실행되는 작업의 단위, 부모 프로세스 자원공유
프로그램을 실행하면 프로세스는 하나뜬다.
쉽게 예를 들자면 크롬창을 띄워 이게 프로세스 탭들이 스레드라 생각하면 됨
서버로서의 노드
서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
클라이언트 : 서버에 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 모바일 앱)
예시
브라우저(클라이언트, 요청)가 네이버 웹사이트(서버, 응답)에 접속 하는경우
장단점
장점
- 멀티 스레드 방식에 비해 컴퓨터 자우너을 적게 사용함
- I/O 작업이 많은 서버로 적합
- 멀티 스레드 방식보다 쉬움
- 웹서버가 내장
- 자바스크립트를 사용
- JSON형식과 호환하기 쉬움
단점
- 싱글 스레드라서 CPU 코어를 하ㅏ만 사용
- CPU 작업이 많은 서버로는 부적합
- 하나뿐인 스레드가 멈추지 않도록 관리해야함
- 서버 규모가 커졌을 때 서버를 관리하기 어려움
- 어중간한 성능
서버 외의 노드
자바스크립트 런타임이기 때문에 용도가 서버에만 한정되지않음