NodeJs는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 환경입니다.즉 NodeJs는 Javascript의 실행 환경일 뿐이지 JavaScript 언어 자체가 아닙니다.
단지 JavaScript를 실행할 수 있는 환경을 제공해 주는 것으로 Javascript가 서버 사이드 환경에서 동작할 수 있도록 해줍니다.

NodeJs는 논 블로킹 I/O 모델을 사용합니다.논 블로킹 I/O란?
- 논 블로킹 I/O는 I/O 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행하는 방식입니다.
- 예시) A라는 작업 중 B작업을 실행시켜야 할 때 A작업이 끝나지 않더라도 기다리지 않고 B작업이 실행될 수 있도록 하는 방식
이벤트 기반 아키텍처와 함께 사용되어 비동기 I/O를 지원합니다.v8 엔진의 이벤트 루프를 활용하여 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지 결정합니다.즉, 함수 호출시 바로 실행하는 것이 아닌 이벤트 루프에 등록하여 동시에 여러 요청을 처리하고 요청이 완료되는 순서대로 처리합니다.

NodeJs는 이벤트 기반 아키텍처를 사용합니다.NodeJs는 Chrome V8 엔진을 사용합니다. V8 엔진의 이벤트 루프를 통해 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지 결정합니다. (이벤트 루프에 대한 자세한 설명은 추후 V8 엔진에 대한 글에서 다루겠습니다.)NodeJs는 싱글 스레드 기반의 비동기 이벤트 루프를 사용합니다.스레드(Thread)
- 프로세스 내에서 실행되는 흐름의 단위
- 프로세스 내에서 여러 스레드가 동시에 실행될 수 있음
NodeJs는 싱글 스레드 기반으로 동작합니다. 이때 싱글 스레드는 NodeJs 자체가 싱글 스레드로 동작하는 것이지 NodeJs가 실행되는 환경이 싱글 스레드로 동작하는 것은 아닙니다.NodeJs는 이벤트루프를 메인 스레드로 사용하고 I/O 작업은 다른 스레드로 처리합니다.NodeJs는 싱글 스레드 기반으로 동작하지만 내부적으로 멀티스레딩을 지원합니다. (추후 NodeJs는 왜 싱글 스레드인가?에 대해 다루겠습니다.)Promise, async/await를 사용하여 해결할 수 있습니다.)NodeJs는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 환경입니다.