[Server] Node.js에 대해서

황승환·2021년 7월 9일
0

Server

목록 보기
9/23
post-custom-banner

Node.js


Node.js를 공부하기 전에 간단하게 Node.js에 대해 알아보았다.

About Node.js

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

  • Node.js는 비동기 이벤트 주도 JavaScript 런타임으로 확장성있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다.
  • 다음 예제는 다수의 연결을 동시에 처리할 수 있도록 작성되었다. 각 연결에서 콜백이 실행되는데 실행할 작업이 없다면 Node.js는 대기한다. 이는 요즘 사용하는 OS 스레드가 일반적으로 사용하는 동시성 모델과 대조적이라고 할 수 있다. 스레드 기반의 네트워크는 상대적으로 비효율적이고 사용하기가 어렵다. Lock이 없기 때문에 Node.js의 사용자는 Deadlock에 대해 고려하지 않아도 된다.
  • Node.js에서는 I/O를 직접 처리하는 기능이 거의 없기 때문에 프로세스가 차단되지 않는다. 아무것도 차단하지 않기 때문에 확장 가능한 시스템은 Node.js에서 개발하기 매우 합리적이라고 할 수 있다.

Node.js를 사용하면 유리한 경우

  • 입출력이 잦은 어플리케이션
  • 데이터 스트리밍 어플리케이션
  • 데이터를 실시간으로 다루는 어플리케이션
  • JSON API 기반 어플리케이션
  • 싱글페이지 어플리케이션

Node.js를 사용하면 불리한 경우

  • CPU 사용률이 높은 어플리케이션에선 Node.js 사용을 권장하지 않는다.
profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기
post-custom-banner

0개의 댓글