Node

[Node] Node.js 개념과 특징 (+런타임)

효진인데요 2023. 8. 10. 17:21

 

 

 

 

0. Node.js란?

 

 

출처:https://ko.wikipedia.org/wiki/Node.js

 

 

 

  • 서버 측 자바스크립트 런타임 환경
  • 확장성 있는 네트워크 애플리케이션 (특히 서버 사이드) 개발에 사용되늰 소프트웨어 플랫폼
  • 브라우저 밖에서도 자바스크립트 사용 가능
  • 자바스크립트 실행 엔진으로 구글 크롬에서 사용하는 V8 엔진 탑재 ▶ 실행 속도 빠름
  • 단일 스레드 이벤트 루프,  비동기 I/O 모델 사용 ▶ 가볍고 효율적 + 높은 처리 성능
  • 내장 HTTP 서버 라이브러리 포함 ▶ 웹 서버에서 별도 소프트웨어(ex. 아파치 등) 없이 동작 가능
  • NPM 패키지 매니저 : 세계에서 가장 큰 오픈 소스 라이브러리

 

 

 

런타임

  • runtime = 실행시간
  • 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 의미
  • 컴퓨터 언어 안에 쓰인 프로그램을 관히라기 위해 특정 컴파일러 혹은 가상 머신이 사용하는 기본 코드의 라이브러리나 프로그램을 가리키는 런타임 라이브러리라고도 함

 

 

ex )

  1. JS와 같은 프로그래밍 언어로 어떠한 기능 생성
  2. 컴퓨터에서 작동시키기 위해 해당 코드는 컴퓨터가 이해할 수 있도록 자연어 기반의 코드로 변환 필요
    ( 컴퓨는 0과 1의 비트열로만 이루어진 자연어 / 기계어만 이해 )
  3. 브라우저가 해당 작업을 내부적으로 수행
  4. 사용자에게 화면을 통해 기능을 보여줌

 

 

 

 

 

 

 


 

 

 

 

1. 특징

 

1.1  JavaScript 언어 사용

  • JavaScript 언어는 원래 웹 브라우저 환경에서만 동작했으나, Node.js의 동장으로 터미널에서도 브라우저 없이 바로  실행이 가능하게 됨
  • JavaScript 언어 하나로 프론트 / 백엔드(서버) 개발을 동시에 할 수 있게 됨

 

 

 

 

1.2 Single Thread

 

Node.js는 싱글 스레드 방식을 사용

 

 

 

( 싱글 스레드 / 멀티 스레드 관련 게시글 참고 : https://jinnycoding.tistory.com/47)

 

[운영체제] 프로세스/스레드/스택/큐

0. Process (프로세스) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 운영체제로부터 시스템 자원을 할당받는 작업의 단위 즉, 동적인 개념으로는 실행된 프로그램을 의미 각각 독립된

jinnycoding.tistory.com

 

 

 

 

  • 사용자가 직접 제어할 수 있는 스레드는 1개 ( Call Stack 한 개 )
  • 싱글 스레드이기 때문에 한 번에 하나의 작업만 수행 가능
  • Non-blocking I/O 기능으로 일부 코드는 백그라운드 (다른 프로세스) 에서 실행 가능
  • 에러를 처리하지 못하는 경우 멈춤 ▶ 예외 처리의 중요성
  • 프로그래밍 난이도가 비교적 쉬움
  • CPU, 메모리 자원의 사용량이 적음

 

출처:https://velog.io/@gil0127/싱글스레드Single-thread-vs-멀티스레드-Multi-thread-t5gv4udj

 

 

 

 

 

1.3 Non-Blocking I/O

 

Node.js의 특징에 대해 살펴보기 전 간단하게 블로킹과 논블로킹, I/O가 무엇인지 확인하려고 한다.

 

 

 

 

[ 블로킹 ]

하나의 작업이 끝나야 다음 작업 수행 가능

 

 

출처:https://velog.io/@nittre/

 

 

 

 

[ 논 블로킹 ]

작업이 완료될 때까지 대기 X, 다음 작업 수행 가능
▶ 빨리 완료된 순서로 처리

 

 

출처:https://velog.io/@nittre/

 

 

같은 작업을 수행하는 경우, 블로킹 방식에 비해 논블로킹 방식이 더 빠른 시간 내에 처리 가능

 

 

 

 

[ I/O ]

입출력 (input / output) 작업
(ex. 파일 시스템 접근 읽기 , 쓰기 , 만들기 등 ), 네트워크 요청 등)

 

 

 

 

  • Node.js는 I/O 작업을 할 때 논블로킹 방식으로 처리
  • 동시에 처리할 수 있는 작업을 최대한 묶어 백그라운드로 넘김
  • 효율성이 좋고 작업 처리 시간이 짧아짐

 

 

 

 

 

 

1.4 이벤트 기반 (Event-Driven) 아키텍처

 

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


 

 

 

 

 

 

 

 

 

 

728x90