노드제이에스(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 |