Node.js 정의
- NodeJS는 구글 크롬의 자바스크립트 엔진(V8 Engine)에 기반해 만들어진 서버 사이드 플랫폼
- 자바스크립트 런타임(특정 언어로 만든 프로그램을 실행할 수 있는 환경)
- Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버사이드) 개발에 사용되는 소프트웨어 플랫폼
- Node.js 패키지 생태계인 npm은 방대한 오픈 소스 라이브러리 생태계
노드는 자바스크립트 애플리케이션이 서버로서 기능하기 위한 도구를 제공하여 서버로의 역할도 쉽게 할 수 있다.
기존에 Java-Spring-tomcat으로 프로그램을 개발해 본 사람이 Node.js를 배우면, 단 2개의 페이지로 서버까지 구현이 가능한 것이 놀라울 것이다.
자바스크립트가 기본 언어 이다 보니, 기존에 서버 단이 아닌 프론트 단의 업무를 하던 사람도 접근이 쉽다.
Node.js 특징
- Node.js를 사용하면 웹 브라우저가 아닌 곳에서 자바스크립트로 개발 할 수 있음. 프로그램, 프레임워크가 아닌 플랫폼
- 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가짐
- 이벤트 기반으로 동작하며, 이벤트 리스너에 등록해둔 콜백 함수를 호출
- 이벤트 루프 : 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할을 담당, 노드가 종료 될 때 까지 이벤트 처리를 위한 작업을 반복하므로 루프로 불림
- 논블로킹 I/O : 이전 작업이 완료 될 때 까지 멈추지 않고 다음 작업을 수행
- 노드는 싱글 스레드로 한번에 한가지 일을 처리하는 형태
- 노드는 싱글 스레드, 논 블로킹 모델(하나의 프로세스로 동시에 작업이 일어나듯이 처리)
- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작이 가능
노드의 장단점
- 멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용함
- 입출력 작업에 적합
- 웹 서버가 내장 되어 있고, 멀티 스레드 방식보다 쉬움
- 자바스크립트를 사용하여 하나의 언어로 서버까지 처리 가능, 생산성 높음
- JSON 형식과 호환하기 쉬움
- 단점 : 싱글 스레드라서 CPU 코어를 하나만 사용(CPU 작업이 많은 서버로는 부적합)
서버 규모가 커졌을 때 서버를 관리하기 어려움
DB는 MongDB와 함께 사용을 많이 하며 다른 언어나 프레임워크, 서버를 사용하는 것 보다 조금 더 쉽고 빠르게 개발이 가능하다 보니, 빠르게 서비스를 만들어 내는 곳이나 빅데이터 관련 서비스로 MongDB를 사용하는 곳에서 많이 사용하고 있는 기술이다.
그렇기 때문에 아래와 같은 서비스에 관심이 있다면 Node.js는 좋은 대안이 될 수 있다.
- 데이터를 실시간으로 다루는 서비스
- 수가 많지만 크기는 작은 데이터를 실시간으로 주고 받는 서비스
- 싱글페이지 어플리게이션
- 입출력이 잦은 어플리케이션
- 실시간 채팅 애플리케이션, 주식차트, json데이터 제공 API 서버
NASA, Air Bnb, UBER, 링크드인, 페이팔, 월마트, 이베이 등에서도 노드로 서비스 운영 중
반응형
'Node.js | MongDB > Node.js' 카테고리의 다른 글
노드 기반 웹프레임워크, Angular / React / Vue (0) | 2019.05.11 |
---|---|
노드 Node.js 서버란? 세팅 방법 (0) | 2019.05.11 |
노드 라이브러리 패키지 관리자 npm (0) | 2019.05.11 |
댓글