본문 바로가기
카테고리 없음

NODE.JS 란? NODE.JS의 개념과 장단점

by cook_code 2023. 7. 11.
반응형

안녕하세요.
오늘은 Node.js에 대한 정보를 가져왔어요.
좋은 기회가 생겨 Node.js를 같이 학습할 스터디원을 구했거든요.
아직 js도 익숙하지 않은데 Node.js를 배우려니 막막하긴 하네요.
그래도 배워놓으면 좋으니 열심히 공부해봐야겠어요.
이번 포스팅에서는 Node.js의 개념과 장단점에 대해 정리해보겠습니다. 

 

Node.js의 개념

 
Node.js의 뜻
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이자 서버 사이드 플랫폼입니다. 
2009년에 Ryan Dahi에 의해 개발되었습니다.
 
Node.js의 등장배경
Node.js 등장 전 Javascript는 웹에서만 동작한다는 한계가 있었습니다.  
Node.js는 Javascript를 웹 브라우저 뿐만 아니라
서버 환경에서도 사용할 수 있도록 고안된 런타임입니다. 
Aphache나 WebServer에서는 HTML 파일 경로를 지정해주고 서버를 통해 프로그램을 실행합니다. 
하지만 Node.js는 HTTP 라이브러리를 내장하고 있으며,
다양한 외부 라이브러리를 보유해 따로 웹서버를 띄우지 않아도 작동이 가능합니다.
따라서 Node.js를 웹서버 자체가 아니라 웹서버를 만들 수 있는 환경이라고 할 수 있습니다.
※ 웹서버: 클라이언트로부터 HTTP 요청을 받아들이고, 정적 문서를 반환하는 프로그램 (Aphach, Nginx)로 일반적으로 동적인 처리를 해주는 WAS 앞단에 배치된다. 
 
Node.js의 주요 특징
1. 쓰레드 기반 동기 방식 (Blocking I/O)
- 하나의 쓰레드가 request를 받으면
모든 처리가 완료될 때까지 기다리다가
처리 결과가 완료되면 다시 응답을 보냅니다. (동기)
- 기존 업무 처리가 완료되기 전에
또 다른 request가 있으면
새로운 쓰레드가 업무를 처리합니다.
- 동시 request가 많은 경우 많은 쓰레드가 필요하게 되어 서버 과부하가 일어날 수 있습니다.
- 동시에 같은 자원을 필요로 하는 경우 해당 자원에 대한 충돌이 일어날 수 있습니다. (병목현상)

※ 쓰레드: 프로세스 내 어떤 실행의 흐름 

 
2. 단일 쓰레드 이벤트 루프 기반 비동기 방식 (Non-Blocking I/O)
- 하나의 쓰레드가 request를 받으면 바로 다음 처리에 요청을 보내놓고 다른 작업을 처리하다가
먼저 요청한 작업이 끝나면 이벤트를 받아서 응답을 보냅니다. 
- 동시 request가 오더라도 처리가 완료될 때까지 기다리지 않기 때문에 서버 부하가 적습니다. 
- 단일 스레드이므로 동시에 똑같은 자원을 필요로 하는 경우가 업고
많은 요청이 들어오는 환경에서 효율적으로 동작합니다.
 

※ 이벤트 기반: 특정 이벤트가 발생할 때까지 대기했다가, 
발생하면 지정된 작업을 수행하는 방식입니다. 
이벤트를 대기하는 함수 > 이벤트 리스너 > 동기 
지정된 작업과 관련된 함수 > 콜백 함수 > 비동기

 
3. 노 버퍼링
Node.js 는 데이터 버퍼링이 없고 데이터를 그대로 출력합니다. 
 

Node.js의 사용

 
Node.js는 사용하면 좋은 경우
- 이벤트로 처리되는 작업의 시간이 짧고 이벤트 처리 요청이 많이 들어오는 시스템
- JSON API 기반 애플리케이션
(간단한 텍스트, 이미지, 동영상 데이터를 실시간으로 주고받는 채팅 프로그램 / 실시간 주식 차트 프로그램...)
- 입출력이 잦은 애플리케이션
- 데이터 스트리밍 애플리케이션
- 데이터를 실시간으로 다루는 애플리케이션
- 싱글 페이지 애플리케이션
 
Node.js는 사용하면 좋지 않은 경우
- CPU 사용률이 높은 애플리케이션
 

참고 블로그

 
- Node,js 소개 
https://velopert.com/133

[Node.JS] 강좌 01편: 소개 | VELOPERT.LOG

Node.js 가 뭐지? NodeJS 는 구글 크롬의 자바스크립트 엔진 (V8 Engine) 에 기반해 만들어진 서버 사이드 플랫폼입니다. 2009년에 Ryan Dahl에 의해 개발되었으며 현시점 (2016-02-07) 최신 버전은 v5.5.0 입니다

velopert.com

 

반응형