본문 바로가기
Node.js | MongDB/Node.js

Node.js란 무엇인가요?

by 워니 wony 2019. 5. 11.

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, 링크드인, 페이팔, 월마트, 이베이 등에서도 노드로 서비스 운영 중

 

 

 

 

반응형

댓글