Node.js란 무엇인가?

wi_label·2021년 1월 7일
1

Node.js

목록 보기
1/1
post-thumbnail

1. Node.js란?

  • Chrome V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다.

Node.js 는 웹서버가 아니다.

2. javascript engine 이란?

  • 자바스크립트 코드를 실행하는 프로그램 혹은 인터프리터를 의미한다.
    즉, 자바스크립트 코드를 마이크로프로세서가 이해할 수 있게 더 낮은 수준의 언어 혹은 기계어로 변환시키는 역할을 한다.

3. Chrome V8 javascript engine 이란?

V8 engine은 구글에서 제공하는 강력한 오픈 소스 자바스크립트, 웹어셈블리 엔진이다. ECMAScropt(ECMA-262) 3rd Edition 규격의 C++로 작성되었으며 Chrome, Electron, Node.js 등에서 사용된다.
자바스크립트를 바이트코드로 컴파일하고 실행하는 방식을 사용하는데,
속도향상을 위해 인라인 캐싱과 같은 최적화 기법을 적용했다.

4. 런타임이란?

런타임은 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 의미한다.
그러므로 Node.js나 Chrome 등은 자바스크립트가 구동되는 환경이므로 자바스크립트 런타임이라고 할 수 있다.
(Node.js의 런타임 환경(Runtime Environment)과 Chrome의 런타임 환경은 같은 엔진(V8 engine)을 공유하지만 다른 환경을 갖고 있다.)

5. Node.js 의 특징은?

이벤트 기반

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

  • 이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 뭘 할지 미리 등록해야한다.
    이것을 이벤트 리스너에 콜백함수를 등록한다.

  • 이벤트 기반을 예를 들자면, 이벤트가 발생하면 이벤트 리스너(event listener)에 등록해둔 콜백함수(callback)를 호출하고 발생한 이벤트가 없거나 발생했던 이벤트를 전부 처리했다면 다음 이벤트가 발생할때 까지 대기하는 과정을 말한다.

논블로킹 I/O 모델 사용

- 오래걸리는 **함수를 백그라운드로 보내서 다음 코드가 먼저 실행**되게하고, 이전 작업이 완료될 때까지 멈추지 않고 다음 작업을 수행하는 걸 말한다. (태스크 큐를 거쳐 호출 스택으로 올라오기를 기다리는 방식)

6. Node.js 가 어울리는 웹서비스

  • 간단한 로직.
  • 대용량(동시에 여러 request를 처리)
  • 빠른 응답시간 요구
  • 빠른 개발 요구
  • 비동기 방식에 어울리는 서비스(네트워크 스트리밍 서비스, 채팅 서비스 등)

7. Node.js 가 어울리지 않는 웹서비스

  • 단일 처리가 오래 걸리는 경우 : 싱글 쓰레드이기 때문
  • 서버 체크로직이 많은 경우 : 비동기 방식이기 때문에 CallBack Hell에 빠지지 않기 위해
  • 업무 복잡도/난이도가 높은 경우 : 에러가 나면 서버가 죽기 때문에 코드 품질 중요
profile
옥은 부서질 지언정 흰 빛을 잃지 않고, 대나무는 불에 탈 지언정 그 곧음을 잃으려 하지 않는다.

0개의 댓글