Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 입니다
Chrome V8, JavaScript 엔진 둘다 제대로 이해 하기 어려우면 Node JS를 이해하기 어렵습니다.
웹 브라우저 동작 과정
HTML, CSS, JAVAScript 브라우저, 화면
HTML, CSS – 브라우저내에 내에 있는 렌더링 엔진을 통해 해석
JAVAscript – 자바바스크립트 엔진을 통해 해석
크롬V8엔진 이 개발되고 나서 자바스크립트 엔진이 빠른속도, 사용도 증가
이를 기반으로 NodeJS가 개발됨
JAVASCRIPT : HTML 요소를 조작하기 위한 언어
è 브라우저에서 동작하며 HTML 요소들을 조작
브라우저는 자바스크립트의 런타임(자바스크립트가 동작할 수 있는 환경)
NODE JS는 자바스크립트가 동작할 수 있는 독립적인 환경 이다
Node JS는 서버 구현에 많이 사용됨
Node JS 는 Chrome v8 엔진으로 만들어진 자바스크립트 동작하는 환경
Node JS 이해 – Node JS 특징 : 구조
싱글쓰레드(Single Thread), 논블랙킹 I/O (Non-Blocking I/O)
는 Node JS의 성능과 확장성을 특징짓는 핵심 개념입니다.
싱글쓰레드
이벤트 루프 기반 아키텍처를 사용, 하나의 메인 쓰레드가 모든 작업을 처리하는 구조
논블로킹 I/O
비동기I/O 연산을 기본으로 사용, I/O 작업(파일 읽기/쓰기, 네트워크 요청 등)이 완료될 때까지 기다리지 않고 즉시 다음 작업을 수행할 수 있음을 의미합니다.
비동기 이벤트 루프
NODE JS의 이벤트 루프는 I/O 작업이 완료될 때까지 기다리지 않고, 다른 작업을 계속해서 처리
비동기 작업이 완료되면, 콜백 함수 또는 프로미스를 통해 결과를 처리
효율적인 리소스 사용
여러 작업이 동시에 진행될 수 있어 리소스를 효율적으로 사용 가능
NODE JS는 싱글 스레드와 논블로킹 I/O의 조합을 통해 높은 처리량과 확장성을 달성
1. 이벤트 루프
Node JS의 메인 쓰레드는 이벤트 루프를 통해 모든 작업을 처리, 이벤트 루프는 작업 큐에 있는 작업들을 순차적으로 처리, 각 작업이 완료될 때까지 기다리지 않습니다.
2. 비동기 작업 처리
비동기 작업(파일 읽기, 네트워크 요청 등) 작업이 시작되면 즉시 콜백 함수와 함께 이벤트 큐에 등록
작업이 완료 시, 콜백 함수가 실행되어 결과를 처리 합니다. 이 동안 메인 스레드는 다른 작업을 계속해서 처리
3. 콜백함수
비동기 작업의 결과는 콜백 함수에 의해 처리, 콜백 함수는 이벤트 루프에 의해 호출되며, 이는 I/O 작업이 완료되었음을 의미