프로필

프로필 사진
Popomon
Frontend Developer
(2020/12 ~)

    카테고리

    포스트

    [Node/Tutorial] Node JS란?

    2020. 11. 9. 06:23

    꿈가게: To Do List - iOS

    꿈가게: To Do List - Android

    Node JS는 무엇인가?

    Node.js는 Google Chrome의 JavaScript Engine (V8 Engine)을 기반으로 구축된 서버 측 플랫폼이고, 2009년 Ryan Dahl에 의해 개발되습니다. 공식 문서에서 제공하는 Node.js의 정의는 다음과 같습니다.

     

    Node.js는 빠르고 확장 가능한 네트워크 애플리케이션을 쉽게 빌드하기 위해 Chrome의 JavaScript 런타임에 빌드 된 플랫폼 입니다. Node.js는 이벤트 중심의 비동기 I/O 모델을 사용하여 분산 장치에서 실행되는 데이터 집약적 실시간 애플리케이션에 효율적입니다.

     

    Node.js는 오픈소스이며, 서버사이드 개발과 네트워크 애플리케이션을 위한 크로스플랫폼 런타임 환경입니다. Node.js 애플리케이션은 JavaScript로 작성되며, OS X, Windows, Linux 의 Node.js 런타임 환경에서 동작이 가능합니다.

     

    또한, Node.js를 사용하여 웹 애플리케이션의 개발을 상당히 단순화하는 다양한 JavaScript 모듈의 풍부한 라이브러리를 제공합니다.

     

    Node.js = Runtime Environment + JavaScript Library

     


    Node JS의 주요 기능

    - 비동기 및 이벤트 기반

    Node.js 라이브러리인 모든 API는 asynchronous(비동기), non-blocking(비차단) 입니다. 즉, Node.js 기반 서버는 API가 데이터를 반환할 때까지 기다리지 않습니다. 서버는 호출 후 다음 API로 이동하고, Node.js의 이벤트 알림 매커니즘은 서버가 이전 API 호출에서 응답 받을 수 있도록 도와줍니다.

     

    - 매우 빠름

    Google 크롬의 V8 자바 스크립트 엔진에 구축된 Node.js 라이브러리는 코드 실행이 매우 빠릅니다.

     

    - 단일 스레드지만, 확장성이 뛰어남

    Node.js는 이벤트 루프가 있는 단일 스레드 모델을 사용합니다. 이벤트 메커니즘은 서버가 비차단 방식으로 응답하도록 돕고 요청을 처리하기 위해 제한된 스레드를 생성하는 기존 서버와 달리 서버의 확장성을 높입니다. Node.js는 단일 스레드 프로그램을 사용하며, 동일한 프로그램이 Apache HTTP Server와 같은 기존 서버보다 훨씬 많은 수의 요청에 서비스를 제공할 수 있습니다.

     

    - 버퍼링 없음

    Node.js 애플리케이션은 데이터를 버퍼링하지 않습니다. 이러한 애플리케이션은 단순히 데이터를 청크(덩어리)로 출력합니다.

     

    - 라이센스

    Node.js는 MIT 라이센스에 따라 릴리즈 됩니다.

     


    Node.js는 어디에 사용하는가?

    Node.js는 아래와 같은 애플리케이션에서 주로 사용됩니다.

     

    I/O 바운드 애플리케이션

    데이터 스트리밍 애플리케이션

    데이터 집약적 실시간 애플리케이션 (DIRT)

    JSON API 기반 애플리케이션

    단일 페이지 애플리케이션 (SPA)

     

    단, CPU 집약적인 애플리케이션에서는 Node.js를 사용하지 않는 것이 좋습니다.