Full_Stack developer

Node.js 란? 본문

BE/node.js & express

Node.js 란?

develkbh 2024. 2. 5. 13:59

Node.js

  • 서버 측 자바스크립트 런타임 환경
  • 브라우저 밖에서 자바스크립트를 사용할 수 있음
  • 자바스크립트 실행 엔진으로 구글 크롬에서 사용하는 V8 엔진을 탑재해 실행 속도 빠름
  • 이벤트 기반, 비동기 I/O 모델을 사용해 가볍고 효율적
  • NPM 패키지 매니저는 세계에서 가장 큰 오픈 소스 라이브러리

런타임이란?


Node.js 특징

  1. 자바스크립트 언어 사용
  2. Single Thread
  3. Non-blocking I/O
  4. 비동기적 Event-Driven

 

특징1. JavaScript 언어 사용

  • JavaScript 언어는 원래 웹 브라우저 환경에서만 동작하였음
  • Node.js 의 등장으로 터미널에서도 브라우저 없이 바로 실행 가능!
  • JavaScript 언어 한가지로 프론트엔드와 백엔드(서버)를 모두 만들 수 있게 되었음

특징 2. Single Thread

프로세스

  • 실행 중인 프로그램
  • 운영체제에서 할당하는 작업의 단위

Thread(스레드)

  • 프로세스 내에서 실행되는 흐름의 단위
  • 하나의 프로세스에는 n개의 스레드가 존재하며 동시에 작동할 수 있다.

콜 스택 (Call Stack)

  • 현재 어떤 함수가 동작하고 있는지, 그 함수 안에서 어떤 함수가 동작하고 있으며 다음에는 어떤 함수가 호출되어야 하는 지 등을 제어
  • 싱글 스레드 = 콜 스택이 하나만 있음 = 한 번에 하나의 작업만 가능

 

특징 3. Non-Blocking I/O

  • I/O
    • 입출력(input/output) 작업
    • ex. 파일 시스템 접근 (읽기, 쓰기, 만들기 등), 네트워크 요청 등
  • Node는 I/O 작업을 할 때 논블로킹 방식으로 처리

특징4. 이벤트 기반(Event-Driven) 아키텍처

  • 이벤트가 발생할 때 미리 지정해둔 작업을 수행
  • 이벤트 ex) 클릭, 네트워크 요청, 타이머 등
  • 이벤트 기반 아키텍처에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해야 함
    • 이벤트 리스너 (Event Listener): 이벤트 등록 함수
    • 콜백 함수 (Callback Function): 이벤트가 발생했을 때 실행되는 함수

 


Node.js 의 역할

  • 간단한 로직
  • 대량의 클라이언트가 접속하는 서비스 ( 입출력이 많은 서비스 )
  • 빠른 개발 요구
  • 빠른 응답시간 요구
  • 비동기 방식에 어울리는 서비스 ( 스트리밍 서비스, 채팅 서비스 등 )

서버 외의 Node

 


모듈이란?

  • 특정한 기능을 하는 함수나 변수들의 집합
  • 재사용 가능한 코드 조각

모듈의 장점

 

  • 코드 추상화
  • 코드 캡슐화
  • 코드 재사용

'BE > node.js & express' 카테고리의 다른 글

Sequelize 와 ORM  (3) 2024.02.16
nodejs 환경변수  (0) 2024.02.16
Node.js MVC 패턴  (1) 2024.02.07