"Node.js에 대하여" _ 개념/장점/단점

2022. 4. 24. 15:04기술/Node.js

728x90

 

 

 

Node.js에 대하여



 

 

Node.js 개념

 

Node.js는 확장성 있는 네트워크 애플리케이션 개발에 사용되는 자바스크립트 기반의 소프트웨어 플랫폼이다.
마이크로소프트 윈도우, 리눅스, 애플 맥오에스등 다양한 플랫폼에서 실행된다.
작성 언어로 자바스크립트를 활용하며 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능하게 한다.

‘모든 곳에서 자바스크립트 사용(JavaScript everywhere)’이라는 비전에 따라 만들어진 Node.js 출현으로
 자바스크립트 언어 하나만으로 웹 클라이언트 응용 프로그램과 서버 응용 프로그램 모두 개발할 수 있게 되었다.
넷플릭스(Netflix), 그루폰(Groupon), 링크드인(LinkedIn) 등 전 세계 웹 서비스에 많이 활용된다.

 

 

 

Node.js 역할

 

기존의 네트워크 방식은 스레드를 기반으로 하는 동기 방식(동시처리)으로 좋은 것 같아 보이지만
스레드를 더 많이 나누어야 하기때문에 메모리 사용량이 폭발적으로 증가하여 결국 서버가 다운되는 원인이 된다.
node.js는 비동기 방식으로 일을 처리하기 때문에, 스레드를 하나만 사용해도 빠르게 일처리가 가능하다.
따라서 서버가 다운되는 문제가 많이 일어나지않는다.

 

 

 *동기와 비동기 방식 비교*

  • 동기방식
    -설계가 매우간단하고 직관적임
    -결과가주어질때 까지 대기해야 하는 단점이있음

  • 비동기방식
    -동기방식보다 복잡함
    -결과가 주어지는데 시간이 걸리지만 그 동안 다른작업을 할 수 있는 장점이있음

 

 

 

Node.js 장점

  •  V8을 도입함으로써 빠른 속도를 보장
  • 비동기 처리로 오래 걸리는 작업을 기다리지않고, 다음코드를 바로 실행함
  • Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능
  • 서버 무리가 적다
  • 자바 스크립트를 동일하게 사용함.

 

 

Node.js 단점

  • cpu를 많이 사용하는 분야에서는 사용하면 안됨.                                                                                     -> Node.js의 메모리 한계가 존재하며, 멀티스레딩 환경이 아니기 때문에 효율적인 운용이 불가하다.
  • 비동기방식이라 서버단 로직이 복잡한 경우 콜백함수의 늪에 빠질 수 있음
  • 단일 쓰레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스에는 어울리지 않음

 

728x90