Node.js
Web Browser에서 작동하는 Javascript와 Node.js의 차이
javascript
- 언어로서의 자바스크립트, Run time(언어가 작동하는 환경)으로의 자바스크립트
- 프로그래밍 언어로 web browser를 제어하거나 server를 제어
- 자바스크립트라는 언어가 web에서 어떻게 쓰이는지, server에서 어떻게 쓰이는지 알아야 한다.
- web과 node.js는 서로 협력적인 관계
Node.js의 장점
클라이언트와 서버에서의 언어가 동일
v8 engine
event-driven 방식 : 사용자가 이벤트를 발생시켰을 때, 즉, 입력장치로 데이터를 전송했을 때에만 작동하는 방식. 발생한 이벤트에 대해서만 웹서버가 연결을 해주기 때문에 자원을 최소화. 대부분의 웹 서버는 사용자가 이벤트를 발생시키기까지를 기다리면서 자원(대기시간/메모리)를 계속 소비
non-blocking 패러다임 :
Blocking I/O 방식(동기식 Input/Ouput)
: Read/write 이벤트가 발생하면 이벤트가 끝날때까지 해당 모듈을 점유. 다른 일을 못함. 메모리 버퍼에 데이터를 차지하게 되므로 메모리도 소비. 요청한 I/O(db, file, network)가 완료될때까지 해당 쓰레드를 ‘대기모드’로 전환시켰다가 요청한 I/O 완료 후 유저코드를 실행.Non-Blocking I/O
:
Blocking 방식의 비효율성을 극복하고자 만들어진 방식. I/O작업을 진행하는 동안 유저 프로세스의 작업을 중단시키지 않음. Read/Write 이벤트가 시작하자마자 모듈을 변환시켜 다른 작업을 하도록 준비상태. 따라서 속도도 blocking 방식보다 빠르고 메모리도 덜 차지.single thread : 적은양의 자원으로 일을 처리하는 것이 가능하다는 장점. 하지만 어느 한 곳에 예외상황 및 에러가 발생한다면 어플리케이션 전체에 영향.