Node.js란?

hwibaski·2021년 9월 13일
0

TypeScript & JavaScript

목록 보기
15/15
post-custom-banner

Node.js 란 무엇인가?


자바스크립트 런타임 환경으로, 브라우저 이외의 환경(server)애서 JavaScript를 사용할 수 있게 만들어준다. 자바스크립트 를 활용하며 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

Node.js의 특징


  • 이벤트 기반 비동기 방식 으로 작동한다.

  • JavsScript 엔진(V8 Engine)으로 빌드된 JavaScript 런타임이다.

  • 따라서, 사용자의 요청은 한 곳에서 받지만 작업은 실질적으로 멀티쓰레드로 운영하여 결과를 구현한다.


이벤트 기반 비동식이란?
만약 A,B,C,D,E 가게에서 물건을 만든 후 갖고 오는 작업이 있다면 어떠한 방법이 빠를까?
1. 몸을 복제해 동시에 여러 작업을 수행한다.
2. 각 가게에 작업이 끝나면 연락을 달라고 한 후 연락이 오면 찾아온다.

1번 방법이 쓰레드 기반 동기방식이다.
동기 방식은 작업 요청이 들어올 때마다 쓰레드를 여러개 만들어 동시에 일을 처리한다.
좋은 해결책이지만 일이 많아질수록 쓰레드를 더 많이 만들어야 하므로 메모리 사용량이 증가하는 단점이 생긴다.

2번 방법은 쓰레드는 1개만 생성한다.
물건을 다 만들면 이벤트(연락)를 받고 처리한다.
가지고 와야할 물건이 아무리 많아도 쓰레드는 1개이기 때문에 메모리 사용량과 시스템 리소스 사용량에는 변화가 거의 없다
이 방식이 Node.js가 사용하는 방식이다.
대규모 네트워크 개발에 용이하지만, 한 개의 쓰레드가 쓰러지는 순간 전체 프로그램에 문제를 일으킨다.


왜 Node.js를 사용해야하는가?


  • JavaScript를 서버단에서 사용할 수 있다. 그러므로 기존 JavaScript 개발자들은 백엔드 개발에 있어서 언어적 진입 장벽이 비교적 낮다.

  • 이벤트 기반 비동기방식이라 서버 무리가 적다.

  • npm(node package manager)을 통한다양한 모듈(패키지) 제공

  • 구글은 V8 엔진 성능 업그레이드를 계속 하고 있다.

  • C++로 개발된 V8 JavaScript 엔진이기 때문에확장성이 좋다.


reference

Node.js의 특징 및 장단점
Node.js 특징 및 장단점 :: 기로록 호로록

post-custom-banner

0개의 댓글