[Node.js] 개념 설명과 이해

김현수·2023년 12월 3일
0

NODE

목록 보기
1/3


🖍️ Node.js 란?


  • 런타임 환경 (js 실행 환경)

Node.js Chrome 의 V8 자바스크립트 엔진 기반으로 
구축된 자바스크립트 런타임 서버 측에서 JavaScript 코드를 실행 가능
  • 비동기 및 이벤트 기반

Node.js 비차단 이벤트 기반 아키텍처를 사용하므로 
확장 가능한 네트워크 애플리케이션 빌드하는데 적합
  • 단일 스레드

비차단 I/O 호출을 사용하여 단일 스레드에서 작동하므로
스레드 관리의 부담없이 수천 개의 동시 연결 처리 가능
  • NPM (Node Package Manager)

NPM 을 통해 사용할 수 있는 오픈 소스 라이브러리의 방대한 생태계 보유



Node 를 통해 다양한 JavaScript 애플리케이션 실행 가능

서버를 실행하는데 제일 많이 사용

* 확장성이 있는 네트워크 애플리케이션 개발에 사용되는 SW 플랫폼
* 특히 서버 사이트에서 많이 사용
* JavaScript 사용

* 내장 HTTP 서버 라이브러리 포함하고 있어 
  웹 서버에서 아파치 등의 별도 SW 없이 동작 가능

Node.js 사용이유

  • JavaScript 를 사용 (독립적인 언어가 아닌 스크립트 언어)

  • 웹 브라우저가 없으면 사용 불가능

  • 그러나 Node.js 를 설치하게 되면 터미널에서 Node.js 를 입력하여
    브라우저 없이 바로 실행 가능


📰 정리

  • 자바스크립트 런타임

  • 서버를 만들 수 있다

  • 한 가지 언어로 전체 웹 페이지를 구현 가능

  • 이벤트 기반
    • 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

  • 이벤트 루프
    • 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백함수 호출할지 이벤트 루프가 판단

  • 논 블로킹 I/O
    • 비동기 (논 블로킹), 작업 순서 상관없이 동시에 작업 수행
    • 동기 (블로킹), 작업 순서대로 이전 작업이 끝나야 다음 작업 수행

  • 싱글 스레드
    • 비차단 I/O 호출을 사용하여 싱글 스레드에서 작동
    • 프로세스
      • 운영체제에서 할당하는 작업의 단위
      • 노드나 웹 브라우저 같은 프로그램은 개별적인 프로세스
      • 프로세스 간에는 메모리 등의 자원을 공유 X
    • 스레드
      - 프로세스 내에서 실행되는 흐름 단위
      - 프로세스는 스레드 여러개 생성, 여러 작업 동시 처리 가능
      - 부모 프로세스의 자원 공유

  • 싱글 스레드, 논 블로킹 I/O 로 싱글 스레드이지만
    오직 순서대로가 아닌 논 블로킹 방식으로 작업



📢 핵심

  • 자바스크립트 런타임

  • 서버 만들 수 있음

  • NPM 사용

  • 이벤트 기반으로 이벤트 루프로 작업

  • 싱글 스레드이며 논 블로킹 I/O 로 작업




언제 사용하면 좋은지 (Node.js / DJango / Spring)

  • Node.js : 성능과 확장성 필요할 때, 실시간 애플리케이션에서 많은 동시 연결 처리

  • DJango : 신속한 개발 기능으로 인해 선택

  • Spring : 기업 애플리케이션과 더 크고 복잡한 시스템에서 선호



Express.js

  • 웹 및 모바일 애플리케이션을 개발하기 위한 강력한 기능 세트 제공

  • 웹 애플리케이션 RESTFul API 를 빠르게 빌드하는데 자주 사용

  • 주요 특징들

    • 미들웨어 : HTTP 요청에 응답
    • 라우팅 : 경로를 정의하고 요청 처리하는 프로세스 단순화
    • 템플릿 엔진 : 데이터 기반 HTML 생성
    • 단순성 : 최소한ㅇ의 프레임워크

HTTP.js

  • HTTP 를 통해 데이터 전송 (서버 및 클라이언트 기능 만드는 데 사용)

  • 주요 특징들

    • HTTP 서버 생성 가능
    • 요청 및 응답 처리
    • 저수준 API

Fastify.js

  • 빠르고 오버 헤트가 적은 웹 프레임 워크

  • 주요 특징들

    • 가장 빠른 웹 프레임 워크 중 하나
    • 스키마 기반, API 입력 및 출력에 대한 스키마 기반 유효성 검사 및 직렬화 지원
    • 광범위한 플로그인 시스템 (확장 가능)
    • 강력한 플러그인 아키텍처로 속도와 단순성에 중점

nodemon

  • Node.js 응용 프로그램의 변경 사항을 모니터링하고 서버를 자동으로 다시 시작하는 유틸리티

  • 프로젝트의 개발 단계에서 특히 유용, 생산성 up

profile
일단 한다

0개의 댓글