노드 특징
- 자바스크립트 런타임
- 이벤트기반, 비동기 논블로킹 I/O 모델
- V8 엔진, libuv 라이브러리 위에서 동작
- 싱글쓰레드 - 쓰레드 에러나면 바로 서버꺼짐. (실제론 멀티쓰레드지만, 사용자 제어는 1개)
- 1 core 만 사용가능. 적은 리소스 인스턴스에 적절함. CPU 작업이 많은 상황에는 부적절
- 싱글 쓰레드 논블로킹이므로, 외부 I/O (네트워크, DB) 요청에 적절함.
- 비동기, 리스너 Callback 등록으로 처리하는 것이 일반적. Promise 적극 활용. async / await
- 호출 스택, 백그라운드, 태스크 큐, 마이크로태스크 큐, 이벤트 루프 로 비동기 처리.
- pm2 를 활용한 멀티프로세싱. 메모리 자원 공유 X. 세션은 db 저장.