node.js란 무엇?

전은찬·2024년 2월 1일
0
post-thumbnail

vue에 대한 포스팅을 앞두고,
먼저 node.js에 대해 조금 더 알아보려고 한다.

node.js란 무엇일까

Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.

즉 웹브라우저 HTML에 종속된 JavaScript(이하 JS)를 외부에서 실행할 수 있는 chrome V8 엔진의 런타임 환경을 제공한다는 말과 같다.

런타임 ?
프로그래밍 언어는 기계가 바로 이해할 수 없기에 고급 언어로 작성된 소스 코드를 기계어로 변환하는 과정을 런타임이라고 한다.
프로그래밍 언어로 작성된 javascript 언어를 컴퓨터가 이해할 수 있는 기계어로 변환시켜주는 역할을 의미한다

정적인 HTML을 동적으로 바꿔주는 기능을 하는 것이 JS인데..

이를 브라우저로 해석하지않고, node.js를 통해 컴퓨터에서 바로 수행할 수 있다.
(node.js가 JS를 쉽게 실행시킬 수 있었기에 JS를 프로그래밍 언어처럼 사용하기 시작했다고 한다..!)

node.js 장점

  1. node.js는 단일스레드의 non-blocking I/O 이벤트 루프 기반 비동기 방식으로 처리하여 서버의 무리가 적어 높은 처리 성능을 보여준다.
  2. npm(node package manager)을 통해 다양한 라이브러리를 사용할 수 있어 효율성이 높다.
  3. 새로운 언어를 습득하지 않아도 JS를 활용해 개발이 가능하여 러닝커브가 줄어든다.

Non-blocking I/O ?
I/O가 동작하면서 요청을 받으면 다음 처리에 요청을 보내 놓고, 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아서 응답을 보내는 것을 의미한다.
반대로 Blocking I/O 방식의 경우 동기적 처리로 다음에 처리해야할 작업들이 현재 작업으로 인해 지연된다.

node.js 단점

  1. 비동기 방식이라 로직이 복잡할 경우 콜백함수 지옥(Callback Hell)에 빠질 수 있다.
  2. 요청이 실행되고 나서 에러를 확인할 수 있어서 테스트 과정이 중요하고, 모든 요청에 따른 응답이나 에러에 대해 검증을 해야하는 설계적 번거로움이 존재한다.
  3. 싱글스레드라서 하나의 작업 처리 속도가 오래 걸리는 웹 서비스의 경우에는 성능이 저하될 수 있다.

프로세스 ?
-프로그램의 상태가 메모리 상에서 실행되는 작업의 단위
스레드 ?
-특정 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위

  • 프로세스가 운영체제로부터 자원을 할당받은 작업의 단위라면, 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 흐름이다.

싱글스레드 ?
한번에 하나의 일만 수행한다.
현재 요청을 처리한 후에 다음 요청을 처리한다.

profile
A piece of cake

0개의 댓글