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함수가 실행된다.
'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 |