[21/12/04] 노드JS - 기초

[21/12/04] 노드JS - 기초

- 노드 JS는 자바스크립트 V8 엔진 위에서 작동하는 자바스크립트 런타임

- 서버의 역할을 수행할 수 있는 자바스크립트 런타임

- 노드 자체는 서버가 아님

- 기존의 자바스크립트의 실행환경은 HTML 과 브라우저로 제약되었는데 노드가 나옴으로써 해방됨

- 자바스크립트 내부는 C, C++로 만들어짐

- 노드는 싱글스레드, 비동기

하지만 노드가 백그라운드에서 완전히 싱글스레드로 동작하고 있지는 않고 멀티 스레드로 동작하지만

사용자는 싱글스레드로 다룰 수 있기 때문에 노드는 싱글 스레드, 비동기라고 말하는 것임.

노드 14버전부터는 멀티스레드가 가능도록 기능추가됐지만 여전히 주는 싱글스레드

노드의 특징

이벤트 기반

논블로킹 I/O 노드에서 동시를 개발하기란 매우 어렵다. 오래 걸리는 함수를 백그라운드로 보내고 다음 코드를 먼저 실행, 나중에 오래 걸리는 함수를 다시 실행 논블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행 나머지는 블로킹 방식으로 실행 I/O 작업이 많을 때 노드의 활용성이 극대화된다.

멀티프로세스 / 싱글스레드

from http://codingfeed.tistory.com/4 by ccl(A) rewrite - 2021-12-04 16:01:27