Node.js에 구조에 따라서 생기는 특징에 대해서 알아보자
구조의 종류에는
1. Single Thread
2. Non-blocking I/O
첫번째 Single Thread 의 의미는
어떠한 작업을 처리하는 곳이 하나라는 것을 의미한다.
자바스크립트에 대한 속성을 그대로 가져왔다고 이해해도 무리가 없다.
두번째는 Non-blocking I/O 이다.
쉽게 얘기하면 어떤 작업들이 연달아 있을 때 작업이 실행되는 순서가 요청이 들어온 순서가 아닌
먼저 끝나는, 짧은 작업들이 리턴이 되는 것을 의미한다.
이 두가지 특징을 보면
작업하는 공간이 하나인데 먼저 끝나는 작업을 먼저 돌려줄 수 있는 것인가에 대한 의문이 생길 수 있다.
의문을 해결하기 위해 Node.js의 구조를 조금 더 자세히 살펴보자
위 그림에 나와있듯 Node.js 의 구조는 Core Library, API, V8, Libuv 로 더 디테일하게 표현할 수 있다.
이 중에서 Non-blocking I/O 가 가능케 하는 부분은 Libuv 라는 라이브러리이다.
이 라이브러리의 내부 구조는 그림의 오른쪽 부분처럼 되어 있는데
라이브러리가 자체가 오래 걸리는 I/O 작업 같은 것들과 일반 작업들을 스레드에 분리해서 각각 요청을 보내고
먼저 끝나는 것들을 이벤트 루프를 통해서 돌려주게 된다.
'Node.js' 카테고리의 다른 글
[Node.js] Node.js CJS로 간단한 HTTP 서버 만들기 (0) | 2024.11.05 |
---|---|
[Node.js] Node.js 의 특징 : 확장성 (1) | 2024.11.05 |
[Node.js] Node.js 란? (1) | 2024.11.05 |