Node.js: Difference between revisions

From CS Wiki
No edit summary
No edit summary
Line 6: Line 6:
* 싱글스레드: 멀티스레드 모델을 배제하고 싱글스레드 모델로 스레드 레벨의 Context Switching의 자원 효율적 사용
* 싱글스레드: 멀티스레드 모델을 배제하고 싱글스레드 모델로 스레드 레벨의 Context Switching의 자원 효율적 사용
* Event Loop: Callback 함수를 통한 Event Loop로 사용자의 요구사항을 처리하는 구조
* Event Loop: Callback 함수를 통한 Event Loop로 사용자의 요구사항을 처리하는 구조
== 장단점 ==
{| class="wikitable"
! 구분
! 장단점
! 내용
|-
| rowspan="4" | 장점
| NPM 지원
| 확장 기능을 제공하는 모듈 수십만 개
|-
| 비동기 I/O
| 작업이 기다릴때 까지 기다리지 않아 응답속도 빠름
|-
| 싱글 스레드
| 이벤트 기반 싱글 스레드로 Context change 오버헤드 없음
|-
| 간결한 코드
| 자바 대비 코드량 33% 감소
|-
| rowspan="3" | 단점
| OS 필요
| 리눅스와 같은 OS가 필요하여 임베디드로 활용 어려움
|-
| 콜백 Hell 발생
| Callback이 중첩될 경우 가독성, 구현성 크게 떨어짐
|-
| 싱글 스레드
| 하나의 작업 지연으로 시스템 성능 저하, 멀티코어 머신 최적화 어려움
|}
|}


== 구성 요소 ==
== 구성 요소 ==

Revision as of 06:21, 14 October 2019

V8(자바스크립트 엔진) 위에서 동작하는 이벤트 처리 I/O 프레임워크

특징

  • 비동기: 비동기 I/O를 구현하여 고속의 서버기능 구현가능
  • 싱글스레드: 멀티스레드 모델을 배제하고 싱글스레드 모델로 스레드 레벨의 Context Switching의 자원 효율적 사용
  • Event Loop: Callback 함수를 통한 Event Loop로 사용자의 요구사항을 처리하는 구조

장단점

구분 장단점 내용
장점 NPM 지원 확장 기능을 제공하는 모듈 수십만 개
비동기 I/O 작업이 기다릴때 까지 기다리지 않아 응답속도 빠름
싱글 스레드 이벤트 기반 싱글 스레드로 Context change 오버헤드 없음
간결한 코드 자바 대비 코드량 33% 감소
단점 OS 필요 리눅스와 같은 OS가 필요하여 임베디드로 활용 어려움
콜백 Hell 발생 Callback이 중첩될 경우 가독성, 구현성 크게 떨어짐
싱글 스레드 하나의 작업 지연으로 시스템 성능 저하, 멀티코어 머신 최적화 어려움

|}

구성 요소

  • V8 : 자바스크립트 실행
  • libeio : 이벤트 기반의 모든 게 비동기로 동작하는 C언어용 I/O
  • libev : 다양한 기능을 가진 고성능 이벤트 루프 라이브러리
  • Node binding : C와 자바스크립트 바인딩 처리
  • Node standard library : 자바스크립트로 이루어진 기본 라이브러리 영역