Node.js란?

Seokwon Han·2020년 11월 3일
0

CS 지식 정리

목록 보기
2/6

처음 접했을때..

내가 Node.js를 처음 접한건 전공과목 중 고급웹프로그래밍이라는 수업에서였다. 그 때 기억나는 수업내용으론 Javascript, JQuery, AJAX 등을 배우면서 자연스럽게 Node.js로 서버를 돌리면 된다고 배웠던 것 같다.

Node.js

Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다.
다시말해 자바스크립트가 구동되는 환경을 뜻한다.

동작원리

  • 단일쓰레드
  • 이벤트루프 기반
  • 비동기방식
  • Non-Blocking I/O

단일쓰레드 이벤트 루프 기반 비동기방식... 처음 들었을때는 무슨 말인지 도저히 감이 안잡힌다. 단어 하나하나 의미를 다시 생각해보면서 이해해보면

단일쓰레드 이벤트 루프 기반이라는 것은 어떤 요청이 들어오면 하나의 스레드에서 이벤트루프가 계속 돌면서 그 요청을 처리한다는 것이다.
그런데 비동기방식이라고 했으니 요청을 받고난 뒤에 작업을 처리하는 도중에도 다른 요청을 계속 받아서 작업을 넘겨줄 수 있다는 것이다.
Non-Blocking이므로 작업의 완료여부를 기다리지 않고 계속 작업을 처리할 수 있다.

어디서 사용해야하나?

이러한 특징은 데이터의 실시간 처리가 많이 필요하거나 단일페이지 기반의 어플리케이션에 사용하는 경우 효율성이 좋다고 한다. 그말인즉슨, I/O 처리가 많이 일어나는 서비스에 사용하기 좋다는 것이다.

다만 단일쓰레드이기 때문에 하나의 작업을 처리하는게 걸리는 시간이 길어지게 되면 그만큼 전체시스템의 성능저하를 가져오기 때문에 CPU사용률이 높은 작업을 많이 처리하는 어플리케이션에서는 사용을 피하는 것이 좋다.

profile
개발하면서 새로 배우거나 경험한 내용을 정리하고 그 외의 공부한 내용을 기록하는 곳입니다.

0개의 댓글