Node.js 란?

박선우·2022년 11월 8일
0

Node.js

목록 보기
1/3
post-thumbnail

1.1 Node.js의 정의


1. Node.js의 정의

  • 공식 홈페이지의 설명
    • Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다.
  • Node.js는 서버가 아닌가요? 서버라는 말이 없네요.
    • 서버의 역할도 수행할 수 있는 자바스크립트 런타임.
    • Node.js를 이용해 자바스크립트로 작성된 서버를 실행할 수 있다.
    • 서버 실행을 위해 필요한 http/https/http2 모듈을 제공한다.

* 자바스크립트 런타임이란? :
런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻합니다. 따라서 Node.js는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있습니다. 쉽게 말해 Node.js는 자바스크립트 실행기라고 봐도 무방합니다.


2. 런타임

  • Node.js : 자바스크립트 런타임
    • 런타임 : 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상머신의 상태
      * 가상머신 : 크롬의 V8 엔진을 사용한
    • 따라서, Node.js는 자바스크립트로 만든 프로그램들을 실행할 수 있게 해준다.
    • 다른 런타임으로는 웹 브라우저가 있다.
    • Node.js 이전에도 자바스크립트 런타임을 만들기 위한 시도들이 있었지만,
      엔진 속도 문제로 실패했다.

3. 내부 구조

  • 2008년 V8 엔진 출시, 2009 Node.js 프로젝트 시작
  • Node.jsV8libuv를 내부적으로 포함한다.
    • V8 엔진 : 오픈소스 자바스크립트 엔진 -> 속도문제 개선
    • libuv : Node.js의 특성인 이벤트기반, 논블로킹 I/O 모델을 구현한 라이브러리


1.2 Node.js의 특성


1. 이벤트 기반

  • 이벤트가 발생할 때 미리 지정해둔 작업(콜백함수)을 수행하는 방식
    • 이벤트의 예 : 클릭, 네트워크 요청, 타이머 등
    • 이벤트 리스너 : 이벤트를 등록하는 함수
    • 콜백 함수 : 이벤트가 발생했을 때 실행될 함수

2. 논블로킹 I/O

  • 논 블로킹 : 오래걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래걸리는 함수를 실행하는 방식
    • 논 블로킹 방식 하에서 *일부 코드는 백그라운드에서 병렬로 실행된다.
    • *일부 코드 : I/O 작업(파일 시스템 접근, 네트워크 요청), 압축, 암호화 등
    • 나머지 코드는 블로킹 방식으로 실행된다.
    • 따라서, I/O 작업이 많을 때 Node.js의 활용이 극대화된다.

profile
한 줄, 한 줄

0개의 댓글