공부하자/알면 유용한정보

노드제이에스(Node.js) 란?

YoBot 2017. 5. 19. 18:34

노드제이에스(Node.js) 란?

 확장성 있는 네트워크 어플리케이션 개발에 사용되는 소프트웨어 플랫폼으로 자바스크립트(Javascript)를 활용하여, Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있는 특징을 가지고 있습니다.

내장 HTTP 서버 라이브러리르 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하며, 이를 통한 웹 서버의 동작에 있어 더 많은 통제에서 벗어나 여러가지 기능을 가능하게 합니다.



Node.js 를 통해 웹어플리케이션은 정적인 홈페이지 뿐만 아니라 쇼핑몰, 티켓 예메사이트, 블로그 등 data가 변하는 사이트를 만들 수 있게 되었다.




Node.js의 장점


1. V8 Engine

구글이 망하지 않는 한 이 엔진은 끈임없이 개선되고 발전할 것이며, 지금도 충분한 성능을 보이고 있지만 추후 더 훌륭한 퍼포먼스를 보일 것으로 예상된다.


2. Event - driven 방식

사용자가 이벤트를 발생시켰을 경우 입력장치로 데이터를 전송했을 때'에만' 작동하는 방식이다.

발생한 이벤트에 대해서만 웹서버가 '연결'을 해주기 때문에 자원을 최소화할 수 있다.

(대부분의 웹 서버는 사용자가 이벤트를 발생하기까지를 기다리면서 '자원'(대기시간 / 메모리)을 계속 소비하게 된다.)


3. non - blocking 패러다임

우선 Blocking I/O 방식을 말하자면 Blockign I/O 방식(동기식 I/O )은 Read/Write 이벤트가 발생하면 이벤트가 끝날때까지 해당 모듈을 점유하게 된다. 즉 다른일을 못하게 된다. 또한 메모리 버퍼에 데이터를 차지하게 되므로 메모리도 소비하게 되는 단점이있다.


요청한 I/O(DB,File,Network)가 완료될 때까지 해당 Thread를 '대기 모드'로 전환 시켰다가 요청한 I/O 완료 후 유저코드를 실행시킨다.


이런 Blocking 방식의 비효율성을 극복하고자 만들어진 것이 Non-Blocking 방식이다.

I/O작업을 진행하는 동안 유저 프로세스의 작업을 중단시키지 않는다.


non-Blocking I/O(비동기식 I/O)의 경우 Read/Write 이벤트가 시작하자마자 모듈을 변환시켜 다른 작업을 하도록 준비상태가 된다. 그래서 속도가 동기식보다 빠르고 메모리도 덜 차지하게 된다.

적합한 경우에는 굉장히 빠른 퍼포먼스를 보이고 적재적소에 이 방식을 사용하면 퍼포먼스가 크게 향상할 수 있다.







'공부하자 > 알면 유용한정보' 카테고리의 다른 글

TCP와 UDP 차이  (0) 2017.07.18
컴포넌트란  (0) 2017.05.19
서버 환경 확인 방법  (0) 2017.05.19
웹 크롤링(Web Scraping) 이란?  (0) 2017.05.19
컴파일러 정리  (0) 2017.05.17