Software Development/Web

[Node.js]1. 개념

huiyu 2015. 5. 21. 22:17

1. 자바스크립트

  - 웹 브라우저에서 실행되는 스크립트 언어, HTML로 작성된 웹 페이지에 함수 형태로 작성되는 언어

  - 해석형 언어 : 컴파일할 필요 없이 소스 코드 자체가 실행 시에 인터프리터에 의해 해석되어지는 언어


2. V8 자바스크립트 엔진

 - 구글에 의해 C++로 개발된 오픈 소스 자바스크립트 엔진, 크롬에 내장되어 공개

 - V8은 기존의 컴파일된 바이트코드를 실행시키거나 인터프리터로 해석하는 대신, 자바스크립트를 컴파일하여 네이티브 머신 코드로 변경한 후에 실행할 수 있게 해줌.

 - Garbage collection 이용 : 필요 없는 객체는 수집하여 버려 V8의 고성능에 이바지

 - 독립적으로 실행 가능

 - 이를 개발 가능하게 한 플랫폼이 Node.js


3. Node.js

 - 이벤트 주도논블록킹 I/O 모델 사용

 - 비동기 IO, Single Thread기반으로 동작

출처 : https://strongloop.com/strongblog/node-js-performance-event-loop-monitoring/

  - 클라이언트의 요청을 비동기로 처리하기 위해 이벤트가 발생하며 서버 내부에 메시지 형태로 전달.

  - 서버 내부에서 메시지를 Event Loop가 처리

  - Event Loop가 처리하는 동안 제어권은 다음 요청으로 넘어가고 처리가 완료되면 Callback을 호출하여 처리 완료 전달

   - 요청 처리는 하나의 Thread안에서 처리된다는 의미, 처리작업 자체가 오래걸린다면 전체 서버 처리에 영향을 준다.


   - 동기와 비동기

  • 동기적 해결 : 하나의 요청을 한번에 처리하기. 장점: 단순하다. 단점: 어떤 요청이 끝나기를 다른 요청은 기다려야만 한다.
  • 비동기적 해결 : 하나의 요청을 할 때 요청이 끝나면 실행될 함수(callback)를 같이 넘긴다. 요청만 하고 바로 다음 코드를 진행하고 요청이 끝나면 callback함수가 실행된다.



728x90

'Software Development > Web' 카테고리의 다른 글

[Node.js]5.HTTP  (0) 2015.05.23
[Node.js]4.자바스크립트 기본  (0) 2015.05.23
[Node.js]3.IDE설치  (0) 2015.05.21
[Node.js]2.설치  (0) 2015.05.21
1. 웹프로그래밍 기초  (2) 2014.03.11