Nodejs 정의
V8 (자바스크립트 엔진) 위에서 동작하는 이벤트 처리 I/O 프레임워크이다.
Nodejs 특징 3가지
- Single Thread
- Non-blocking
- Javascript 사용
Single Thread
자바스크립트의 경우에는 멀티 쓰레드의 개념이 없다. 서버 프로그램에서 쓰레드간의 동기화 처리등이 중요하고 또한 복잡한점 중의 하나인데, 이러한 문제 자체를 제거 함으로써 서버 프로그래밍 자체를 매우 단순하게 만들어 버린 것이다. 단, 하나의 작업만을 처리하기 때문에 하나의 작업이 길어지면 전체 시스템이 성능이 크게 저하된다.
Non-blocking(비동기)
blocking I/O(동기식 I/O)는 쓰기/읽기 이벤트가 발생하면 이벤트가 끝날때까지 해당 모듈을 점유하게 됩니다. 즉 다른 일을 못하게 된다. 또한 메모리버퍼에 데이터를 차지하게 되므로 메모리도 소비하게 됩니다. 하지만 non-blocking I/O(비동기식 I/O)의 경우 쓰기/읽기 이벤트가 시작하자마자 모듈을 반환시켜 다른 작업을 하도록 준비상태로 됩니다. 속도가 동기식보다 빠르고 메모리도 덜 차지하게 됩니다.