-
Node.js - 노드 : 특징IT&개발/node.js 2015. 9. 1. 23:16728x90반응형
노드란?
node.js의 등장배격은 2008년 구글에서 크롬브라우저의 소스코드를 공개하였고,
브라우저를 분석을 하니 V8 엔진 위에서 javascript 코드를 실행시켜주는 이벤트 처리 I/O 프레임워크가 존재하였는데 이것이 node.js 였다.
node.js는
노드의 특징 4가지
1. Chrome JavaScript Engine V8 기반의 서버 플랫폼
- V8은 Google에 의해서 C++로 개발된 오픈 소스 자바스크립트 엔진
- JavaScript를 compile하여 native machine code 변경 후 runtime시 다시 최적화하여 실행하는 구조.
[스크립트 언어]
(컴파일 과정이 없다.)
javascript code -> native machine code
- Garbage Collection을 통한 메모리의 효율적인 관리. ( memory leak는 개선의 여지가 있음 )
- Standalone 고성능 JavaScript 엔진으로 사용가능.
2. 빠르고 확장 가능한 Network 프로그램 개발에 특화
- TCP , UDP 관련 프로그램 개발 가능
- 하지만, 거의 대부분 Web Application 작성에 활용
3. Single Thread 기반의 Non-Blocking I/O model 사용
노드를 사용하는 가장 중요한 이유중 하나는 비동기형 방식이다.
동기형과 비동기형의 차이를 알아보자.
<동기형>
첫번째 코드는 동기형일 경우이다.
코드를 보면 query를 날리는 구문이 있다.
var sum = result + 100; 이 실행되려면 query()의 결과값이 나와야 실행이 된다.
동기형이 친숙한 사람들은 이것이 당연하다고 생각하실 수도 있다.
하지만 비동기형 코드를 보자.
<비동기형>
비동기형의 경우 query를 던져놓고 바로 console.log("first")를 실행한다.
그리고 결과 값이 나오면 function(result){console.log("second")}가 실행이 된다.
그렇다면 비동기형식과 동기형식중에 무엇이 더 낳을까?
이것은 상황에 따라 다르다. 비동기형식은 I/O 작업이 많을 경우 빠른 속도를 보인다.
그리고 Single Thread 기반이란 multi Thread 기반과 비교하면서 이야기해보자
다음의 그림을 참조하면 된다.
<Multi Thread>
-동시에 Service할 수 있는 Client의 수는 Thread Pool안에 있는 가용한 Thread의 수와 동일
-일반적으로 Thread Pool안의 Thread는 500~2000. ( 2000을 넘는 경우는 거의 없다. )
-할당된 Thread가 IO작업( Network, File, DB )을 하게 되면 blocking 방식으로 처리되어 해당 Thread가 CPU를 사용하지 않는 상태(wait 상태)로 변환.
-즉, IO시간만큼 Thread는 blocking.
<Single Thread>
Node.js 는 Single Thread로 구성되어 있다. 내부적으로는 Thread Pool 로 구성되어 있다.
4. Event Driven Programming Model
이것은 간단히 말하면 node는 non-blocking 기반이기 때문에 항상 이벤트가 발생하며 이벤트에 해당하는 작업이 실행된다.
노드에서 이벤트 처리를 하는 것은 다음 링크를 참조하자
http://posnopi13.tistory.com/9
반응형'IT&개발 > node.js' 카테고리의 다른 글
node.js를 이용하여 mysql에 접속하기 (1) 2015.08.13 5. node.js - express를 이용한 MVC모델 구축[간단한 웹서버] -시리즈3:form tag post (0) 2015.08.13 4. node.js - express를 이용한 MVC모델 구축[간단한 웹서버] -시리즈2:QueryString (3) 2015.08.12 3. node.js - express를 이용한 MVC모델 구축[간단한 웹서버] -시리즈1 (2) 2015.08.12 3. node 파일시스템 모듈 fs 사용하기. (0) 2015.08.12