Node.js는 브라우저 밖에서 JavaScript를 실행할 수 있게 해주는 런타임이다.
싱글 스레드 기반이지만, 이벤트 루프와 비동기 I/O 구조 덕분에 고성능 처리가 가능하다.
핵심 개념은 다음과 같다:
JavaScript는 기본적으로 동기(Synchronous) 언어이며 싱글 스레드로 동작함.
동기적으로 무거운 작업을 처리할 경우, 전체 프로그램이 블로킹됨.
이를 해결하기 위해 Node.js는 다음과 같은 아키텍처를 사용한다:
┌────────────────────┐
│ Node.js (JS 코드)│
│ ├─ Core Library │
│ ├─ Bindings │
│ └─ V8 Engine │
└────────▲───────────┘
│
▼
┌────────────────────────────┐
│ libuv (C++ 기반) │
│ → 이벤트 루프, I/O 처리 │
└────────────────────────────┘