"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