JavaScript & TypeScript

[Node.js] 특징

반응형

배우면 좋은점

브라우저는 자바스크립트, 서버는 자바로 구현을하는 경우가 많고, 우리나라 대기업도 백엔드는 자바로 많이 사용하고 있습니다.

노드 js로 서버를 구현하면 두가지의 언어를 사용하지 않고, 햇갈리지 않고 생산성을 높일 수 있습니다. (물론 자바만의 장점이 있기에 대기업에서 아직 많이 쓰고 있는 것으로 알고 있습니다.)

자바스크립트로 구현하는 기업 중 많은 예시를 드는 것이 넷플릭스 우버,이베이, AWS 등등 node.js를 사용하고, 우리나라 대기업도 부분적으로 사용하고 있습니다. 그리고 많은 스타트업이 노드js를 많이 사용하고 있습니다.

이렇게 많이 사용하는 이유는 쉽고, 높은생산성을 이유로 들고 있습니다.

 

Node.js 특징

1. Javascript runtime

node.js 는 런타임 환경이며, V8 크롬 브라우저 강력한 자바스크립트 엔진(C++) (브라우저 밖에서도 자바스크립트를 사용하기 위함)

오픈소스이며, 성능이 좋음

 

2. Main Single Thread

자바는 multithreading 으로 기능설정을 할 수있는 반면, node.js는 single thread가 특징이다.

(자바스크립트가 자바보다 쉬운 이유이기도 하다)

single thread로 서버 구현이 가능한건 아래의 특징 때문이다.

 

3. Non-Blocking I/O

I/0 (인풋과 아웃풋), 상반되는 개념은 CPU

Non-Blocking 콜백을 던져주고 실행되는 비동기적인 것

 

4. Event-Driven

이벤트를 통해서 등록한 콜백을 호출 (이벤트를 통한 콜백 호출)

 

 

 

노드서버 특징

노드 내부적 흐름으로는 

node.js ->. main single thread -> callback (가벼운 동작)-> Node.JS APIs -> (내부적으로 multithreading)

콜백에서 무거운 계산을 하게되면 그 계산이 다 할 때까지 기다려야 한다.

(단, 12버전 이상에서는 worker threads로 비디오 인코딩(CPU로 돌리기 무거운)등 사용 가능하지만 남발하면 안됨)

 

node 서버는 main single thread에 요청이 오면 완료될때까지 기다리는게 아니라 데이터베이스나 네트워크에 위임을 해서 처리를 빨리한다.(비동기) Non-Blocking I/O, Event-Driven 방식으로 네트워크 처리하는데 빠르다.

통상적으로 CPU가 무거운 (비디오, 이미지)를 처리하는데는 힘겨울 수 있다.

 

 

반응형

'JavaScript & TypeScript' 카테고리의 다른 글

[Node.js] express-validator (유효성 검사)  (0) 2022.01.14
[Node.js] Console 종류  (0) 2021.08.05
[JS] method 정리  (0) 2021.07.25
[JS] 비동기, Node.js 모듈, fetch API  (0) 2021.06.24
[JS] 객체 지향  (1) 2021.06.14