Frontend/Node.js

[Node.js] Javascript의 런타임, Node.js란 무엇인가?

oneyenee 2023. 10. 9. 20:47

자바스크립트 코드는 웹 브라우저와 별개로 사용할 수 없는 언어다.

정확히 말하면 웹 브라우저가 가지고 있는 Javascript Engine이 없이는 실행할 수 없는 언어라고 말할 수 있다.

 

자바스크립트가 실행되는 동작 원리에 대해서 잠시 살펴보면,

 

 

자바스크립트 코드는 웹 브라우저 (Chrome, Safari, Edge...)에 내장된 Javascript Engine을 이용해 실행된다.

 

  • Javascript Engine은 브라우저 별로 다르며, Google Chrome의 V8엔진이 가장 대표적인 JS Engine이다.
  • 브라우저의 JS Engine이 Javascript를 실행하기 위해 반드시 필요했기 때문에 JS는 브라우저에 독립적으로 사용할 수 없었다.
  • 브라우저는 HTML 문서를 기반으로 동작하기 때문에, 버튼 클릭 이벤트 처리 등의 웹사이트에서의 인터렉션 외에는 이용할 수 없었다.

 

하지만, 편리한 언어인 Javascript의 팬들이 많아지면서 개발자들은 생각했다.

 

브라우저가 아닌 곳에서도 Javascript를 실행시킬 수 없을까?

 

이러한 수요에 의하여 만들어진 것이 Node.js이다.

 

 


 

 

 

 

Node.js란 무엇인가?

💡

대표적인 자바스크립트 엔진 V8을 이용해서 자바스크립트를 브라우저가 아닌 어디에서든 사용할 수 있도록 만들어주는 Javascript의 실행환경.

즉, Javascript의 Runtime

 

Node.js의 등장으로 인해 브라우저에서 벗어나서 독립적으로 자바스크립트를 사용할 수 있게 되었다.

자바스크립트라는 언어가 태생적으로 가지고 있던 엄청난 한계가 사라진 것이다.

예를 들면, 카카오톡 같은 프로그램들, 그리고 특히 웹 서버를 만들 수 있게 된 것이다.

 

 

 

Node.js의 특징

  • 단일 쓰레드 (Single Thread)
  • 이벤트 루프 (Event Loop) 기반 비동기 처리
  • Non-Blocking I/O

 

장점

  • Javascript로 서버단 로직을 처리할 수 있다.
  • 새로운 언어를 습득하지 않아도 서버 기술을 빠르게 개발/응용할 수 있다.
  • 개발이 빠르고 쉽다.
  • Non-Blocking I/O 와 단일 쓰레드 이벤트 루프를 통한 높은 처리 성능
  • 이벤트 기반 비동기 방식으로 서버에 무리가 적다.
  • npm(node package manager)을 통한 다양한 모듈(패키지)제공

 

단점

  • 이벤트 기반 비동기 방식으로 로직이 복잡하면 콜백함수의 늪에 빠질 수 있다.
  • 코드가 수행되어야 에러가 있는지 알 수 있다. 에러가 나면 프로세스가 내려가기 때문에 테스트가 중요하다.
  • 단일 쓰레드 임으로 작업 처리 시간이 오래 걸리는 웹서비스에는 어울리지 않다.

 

 

 

 

Node.js 활용도

 

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

  • 간단한 로직
  • 동시에 여러 request가 많은 대용량 서비스
  • 빠른 응답시간 요구
  • 빠른 개발 요구
  • ex) 네트워크 스트리밍 서비스, 채팅 서비스 ...

 

 

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

  • 단일 처리가 오래 걸리는 서비스
  • 서버 체크로직이 많은 경구 : CallBack 체크가 많기때문에 CallBack 지옥에 빠질 수 있음
  • 업무 복잡도 / 난이도가 높은 경우 : 에러가 나면 서버가 죽기 때문에 코드 품질이 중요

 

 

 

 

참고

https://junspapa-itdev.tistory.com/3