node.js 공부 | 1. node.js란?

1. node.js란?

특징
  • back-end javascript based platform
  • event-driven
  • non-blocking I/O
  • 그 자체가 서버이며, 실행 환경을 제공
javascript?
- 웹 브라우저에서 실행되는 스크립트 언어.
- C, java의 구문과 비슷한 구문.
- 해석형 언어(interpreted language)이며, 컴파일할 필요 없음. (이는 대규모 프로젝트의 생산성에 도움이 됨.
event-driven?
- 발생하는 함수의 인자로 call-back 함수를 선언해, 이벤트가 종료된 뒤 어떻게 처리할 것인지 결과를 구현하는 것.
non-blocking?
- blocking되지 않는 것. 즉, 막히지 않는 것. 요청 해놓고 준비가 될 때까지 간섭받지 않고 다른 일을 할 수 있는 것.

구조 및 동작
  • user가 event를 발생.
  • eventQueue에 event가 저장되며, user는 non block.
  • eventHandler(single-thread)에서 threadpool(non-blocking worker)에 일을 줌.
  • worker(multi-thread)가 일을 마치고 응답을 eventHandler에게 줌
  • eventHandler가 user에게 callback을 함.
event-driven에서 event를 관리하는 eventHandler가 존재.
eventHandler는 single thread로 실행되며, 어떤 event에도 방해받지 않고 임무를 수행.
따라서 프로그래머가 동기화, 메모리, 쓰레딩 관련부분을 신경쓰지 않아도 됨.

활용방향
  • 대량의 트랜젝션에서 user가 원하는 데이터를 넣고 빠르고 안정적으로 응답 받을 필요가 있는 환경.
  • 제한적인 물리적 리소스에서 지속적으로 많은 처리가 필요한 환경
  • 복잡하지 않은 개발 환경
  • 서비스 중단에 대한 걱정이 있는 경우 손쉽게 수정 가능.
하지만, 대량의 데이터 조회나 CPU 사용, 긴 처리 시간을 요구하는 경우엔 부적합하다.
다수의 외국계 IT 기업들이 사용하고 있다.
Previous
Next Post »