Redis가 싱글 스레드인데 왜 빠른가 — I/O 멀티플렉싱부터 6.0 스레드 모델까지
Redis가 싱글 스레드라는 말은 반만 맞습니다. 정확히 무엇이 싱글 스레드이고, I/O 멀티플렉싱은 어떻게 동작하며, Redis 6.0의 I/O 스레드는 무엇을 바꿨는지. 면접에서 "왜 빠른가?"에 확실히 답할 수 있도록 정리했습니다.
Redis가 싱글 스레드라는 말은 반만 맞습니다. 정확히 무엇이 싱글 스레드이고, I/O 멀티플렉싱은 어떻게 동작하며, Redis 6.0의 I/O 스레드는 무엇을 바꿨는지. 면접에서 "왜 빠른가?"에 확실히 답할 수 있도록 정리했습니다.
Ctrl+C를 누르면 서버 내부에서 무슨 일이 일어나는지 추적합니다. OS 시그널의 기초부터 Node.js와 NestJS에서의 Graceful Shutdown 구현, Docker 환경에서의 PID 1 문제까지 하나씩 따라가봅니다.
같은 package.json인데 npm, yarn, pnpm이 만드는 node_modules 구조가 다릅니다. nested에서 flat으로, 다시 symlink로 — 구조가 바뀌어 온 이유와 각 방식의 트레이드오프를 정리합니다.
1633개 패키지를 가진 실제 프로덕션 모노레포에서 Bun 마이그레이션을 검토했습니다. 네이티브 모듈 호환성부터 체감 속도 예측, 워크트리 설치 시간 실측까지, 벤치마크 숫자가 아닌 현실적인 분석을 정리했습니다.
React는 Node.js가 아니고, Next.js도 Node.js가 아닙니다. 하지만 Next.js는 Node.js 없이 SSR을 할 수 없습니다. 유저가 URL을 입력했을 때 React, Next.js, NestJS, Docker가 각각 어떤 역할을 하는지, 하나의 요청을 따라가며 정리했습니다.
JavaScript를 실행하는 런타임은 Node.js만이 아닙니다. Bun과 Deno는 같은 언어를 다른 방식으로 실행합니다. 세 런타임의 설계 철학, 내부 구조, 실용적 차이를 정리합니다.
Node.js의 두 가지 모듈 시스템 — CommonJS의 require와 ESM의 import가 내부에서 어떻게 다르게 동작하는지 추적합니다. 로딩 시점, 캐싱, 순환 참조 처리의 차이를 살펴봅니다.
Node.js 스트림의 4가지 타입과 동작 원리를 추적합니다. 1GB 파일을 왜 readFile 대신 createReadStream으로 읽어야 하는지, 백프레셔는 무엇인지, pipe가 내부에서 어떻게 동작하는지 살펴봅니다.
V8 엔진의 힙 메모리 구조와 가비지 컬렉션 동작 원리를 추적합니다. New Space의 Scavenge부터 Old Space의 Mark-Sweep-Compact까지, 객체가 생성되고 이동하고 제거되는 과정을 살펴봅니다.