우선 한줄요약)
Node.js는 "100% 싱글스레드"는 아니고, "이벤트 루프는 싱글스레드지만, 백그라운드 작업은 멀티스레드로 처리된다"
Node.js의 스레드 구조 간단 요약
| 이벤트 루프 (싱글 스레드) | 자바스크립트 코드 실행, 콜백 처리 등 주 로직 담당 |
| libuv 스레드 풀 (기본 4개) | 파일 I/O, DNS, 암호화, DB 드라이버 같은 느린 작업 처리 |
| OS-level 비동기 (ex. epoll, IOCP) | 소켓 등 일부 작업은 OS 비동기 인터페이스 사용 |
🎯 예시로 보면
const fs = require('fs'); fs.readFile('/big/file.txt', (err, data) => { console.log('파일 읽음'); });
- readFile()은 libuv 스레드 풀에서 실행됨 → 이벤트 루프가 블로킹되지 않음
- JS 코드는 계속 싱글 스레드로 실행되지만, 백그라운드에서 멀티스레드가 일을 함
💡 결론
- Node.js는 "싱글 스레드 기반의 비동기 처리 모델"이고
- I/O 작업이나 무거운 연산은 libuv 스레드 풀이나 OS 비동기 기능이 처리함
- 그래서 사실상 멀티스레드를 활용하고 있음 (개발자가 직접 신경 안 써도 되도록 추상화돼 있음)
'TIL' 카테고리의 다른 글
| Loki란 (0) | 2025.07.23 |
|---|---|
| HPA 오토스케일링 서버 첫 cpu 스파이크 무시하기 (0) | 2025.07.20 |
| VI 있어보이게 써보자.. (0) | 2025.07.04 |
| 모르는 서버 접근 후 프로세스 확인방법 (0) | 2025.07.04 |
| Console vs Winston (3) | 2025.07.04 |