* Node.js
- node.js는 V8 Javascript 엔진으로 빌드된 Javascript의 런타임
- 이벤트 기반 아키텍쳐와 논블로킹 I/O 모델을 통해 높은 동시성과 효율적인 성능 제공
- 싱글스레드 모델을 사용하지만 비동기 I/O와 이벤트 루프를 통해 여러 작업을 동시에 처리 가능
- Core Library와 Node.js Bindings를 활용해 native code(C/C++)와의 상호작용 지원
- NPM (Node Package Manager)을 통해 오픈소스 라이브러리와 패키지를 쉽게 관리 및 사용 가능
* Node.js의 내부 구조

V8 엔진
- V8 엔진은 Javascript를 native code로 변환하여 실행하는 구글의 고속 Javascript 엔진
- JIT (Just-In-Time) 컴파일러로 실행 시점에서 Javascript를 최적화하여 성능을 극대화
- 가비지 컬렉션을 통해 메모리를 자동으로 관리, 불필요한 메모리를 정리하여 효율적인 자원 관리
libuv
- libuv는 비동기 I/O 처리를 위한 라이브러리로, 네트워크 I/O, 파일 시스템 I/O 및 멀티 스레딩 지원
- 이벤트 루프와 콜백 큐를 통해 비동기 작업을 처리하며, 블로킹 I/O 없이 여러 요청을 동시에 처리
- 싱글스레드 환경에서 멀티스레딩의 성능을 일부 제공, I/O 작업을 백그라운드에서 처리하여 성능 극대화
Node.js Bindings
- Node.js bindings는 C++로 작성된 native code와 javascript 사이의 상호작용을 가능하게 하는 다리 역할
- javascript는 C++로 작성된 모듈(파일 시스템, 네트워크 요청 등)을 bindings를 통해 호출할 수 있음
Core Library
- Core Library는 Node.js가 제공하는 내장 모듈들로, 별도의 외부 라이브러리 없이 바로 사용할 수 있는 다양한 기능 제공
- 주요 모듈 예시:
fs 모듈: 파일 시스템 작업 처리
https 모듈: HTTP 서버 및 클라이언트 요청 처리
stream 모듈: 데이터 스트림 처리
events 모듈: 이벤트 기반 프로그래밍 지원
* Node.js 프로그래밍 모델
싱글 스레드 모델
- Node.js는 싱글스레드 환경에서 실행되며, 하나의 스레드로 이벤트 루프와 콜백 큐를 통해 다수의 요청을 처리
- 비동기 I/O 덕분에 하나의 스레드로도 많은 요청을 효율적으로 처리할 수 있음

멀티 스레드 모델
- Node.js는 기본적으로 싱글스레드로 동작하지만, Node.js 14 버전부터 worker_threads 모듈을 통해 멀티스레드 작업이 가능해짐
- CPU 집약적인 작업을 처리할 때 유용하게 사용됨
클러스터링과 확장성
- 수평 확장: 여러 개의 프로세스를 실행하여 부하를 분산시키는 방식
- 클러스터링 모듈을 통해 여러 CPU 코어를 활용할 수 있음
- 로드 밸런싱으로 트래픽을 여러 서버로 분배하여 성능을 최적화

⭐발표자 : 이현주님
* Node.js
- node.js는 V8 Javascript 엔진으로 빌드된 Javascript의 런타임
- 이벤트 기반 아키텍쳐와 논블로킹 I/O 모델을 통해 높은 동시성과 효율적인 성능 제공
- 싱글스레드 모델을 사용하지만 비동기 I/O와 이벤트 루프를 통해 여러 작업을 동시에 처리 가능
- Core Library와 Node.js Bindings를 활용해 native code(C/C++)와의 상호작용 지원
- NPM (Node Package Manager)을 통해 오픈소스 라이브러리와 패키지를 쉽게 관리 및 사용 가능
* Node.js의 내부 구조
V8 엔진
- V8 엔진은 Javascript를 native code로 변환하여 실행하는 구글의 고속 Javascript 엔진
- JIT (Just-In-Time) 컴파일러로 실행 시점에서 Javascript를 최적화하여 성능을 극대화
- 가비지 컬렉션을 통해 메모리를 자동으로 관리, 불필요한 메모리를 정리하여 효율적인 자원 관리
libuv
- libuv는 비동기 I/O 처리를 위한 라이브러리로, 네트워크 I/O, 파일 시스템 I/O 및 멀티 스레딩 지원
- 이벤트 루프와 콜백 큐를 통해 비동기 작업을 처리하며, 블로킹 I/O 없이 여러 요청을 동시에 처리
- 싱글스레드 환경에서 멀티스레딩의 성능을 일부 제공, I/O 작업을 백그라운드에서 처리하여 성능 극대화
Node.js Bindings
- Node.js bindings는 C++로 작성된 native code와 javascript 사이의 상호작용을 가능하게 하는 다리 역할
- javascript는 C++로 작성된 모듈(파일 시스템, 네트워크 요청 등)을 bindings를 통해 호출할 수 있음
Core Library
- Core Library는 Node.js가 제공하는 내장 모듈들로, 별도의 외부 라이브러리 없이 바로 사용할 수 있는 다양한 기능 제공
- 주요 모듈 예시:
fs 모듈: 파일 시스템 작업 처리
https 모듈: HTTP 서버 및 클라이언트 요청 처리
stream 모듈: 데이터 스트림 처리
events 모듈: 이벤트 기반 프로그래밍 지원
* Node.js 프로그래밍 모델
싱글 스레드 모델
- Node.js는 싱글스레드 환경에서 실행되며, 하나의 스레드로 이벤트 루프와 콜백 큐를 통해 다수의 요청을 처리
- 비동기 I/O 덕분에 하나의 스레드로도 많은 요청을 효율적으로 처리할 수 있음
멀티 스레드 모델
- Node.js는 기본적으로 싱글스레드로 동작하지만, Node.js 14 버전부터 worker_threads 모듈을 통해 멀티스레드 작업이 가능해짐
- CPU 집약적인 작업을 처리할 때 유용하게 사용됨
클러스터링과 확장성
- 수평 확장: 여러 개의 프로세스를 실행하여 부하를 분산시키는 방식
- 클러스터링 모듈을 통해 여러 CPU 코어를 활용할 수 있음
- 로드 밸런싱으로 트래픽을 여러 서버로 분배하여 성능을 최적화
⭐발표자 : 이현주님