FastAPI 비동기 처리와 이벤트 루프 이해 — uvicorn, uvloop, asyncio, libuv

개요 FastAPI의 비동기 처리 흐름을 이벤트 루프 관점에서 정리 Node.js의 libuv 기반 모델을 기준선으로, Python의 asyncio와 uvloop, 그리고 Uvicorn이 FastAPI 요청을 어떻게 비동기로 처리하는지 비교 I/O 바운드 중심의 동작 원리와 GIL 제약, 실무에서의 주의점을 함께 정리 Node.js 이벤트 루프 요약 싱글 스레드 논블로킹 모델의 핵심은 이벤트 루프와 비동기 I/O 위임 Node.js는 C로 구현된 libuv를 통해 커널 비동기 I/O를 활용하거나, 미지원 경우 스레드풀로 오프로드 기본 스레드풀 크기는 4로 시작, 환경변수로 조정 가능 libuv가 커널 비동기 I/O를 직접 쓰는 경우와 아닌 경우의 차이 참고 ...

March 24, 2026

CPU 자원 관점에서 보는 Node.js 이벤트 루프와 스레드풀 상호작용

개요 목표 이벤트 루프, 스레드풀, 커널이 실제 CPU 코어와 어떻게 상호작용하는지 CPU 관점에서 명확히 이해하기 Node.js가 어디서 CPU를 쓰고 어디서 기다리는지 구분해야 병목을 제대로 잡을 수 있음 CPU 코어와 OS 스레드의 물리적 의미 하드웨어와 OS 레벨 정의를 먼저 정리 CPU 코어 1개 ≈ 특정 시점에 물리적으로 실행 가능한 OS 스레드 1개 스레드 OS 스케줄러가 CPU를 할당하는 최소 단위 동시성 vs 병렬성 코어 1개면 수백 스레드도 시분할로 번갈아 실행되는 동시성 코어 여러 개일 때만 실제 병렬 실행 가능 CPU 관점의 핵심 비용 ...

January 22, 2026

Node.js 실행 흐름과 이벤트 루프 단계 정리

개요 Node.js가 스크립트를 실행할 때 어떤 구성요소가 어떤 순서로 초기화되고 동작하는지 정리 바이너리 기동부터 모듈 로딩, V8 파싱과 실행, 이벤트 루프와 비동기 작업 처리까지의 전체 흐름을 개발자 관점에서 간결하게 설명 핵심 개념 V8 엔진, Ignition 바이트코드와 JIT 최적화 libuv, 비동기 I O 백엔드와 이벤트 루프 단계 모듈 시스템, CommonJS와 ES Module의 로딩 차이 전역 실행 컨텍스트와 런타임 내장 객체 마이크로태스크 큐와 process.nextTick의 우선순위 실행 순서 요약 Node 바이너리 시작 런타임 초기화와 내부 바인딩 준비 모듈 로더 기동 및 엔트리 파일 로드 V8 파싱과 바이트코드 컴파일 전역 실행 컨텍스트 구성과 최상위 코드 실행 비동기 작업 등록 이벤트 루프 진입 비동기 콜백 처리 반복 graph TD A[Node 시작] --> B[V8, libuv 초기화] B --> C[모듈 로딩] C --> D[파싱 및 컴파일] D --> E[최상위 코드 실행] E --> F[이벤트 루프] F --> G[비동기 처리 반복]단계별 동작 1단계 Node 바이너리 시작 node yourfile.js 실행으로 C++ 엔트리 포인트가 기동됨 V8, libuv, 내부 바인딩 계층이 초기화되고 런타임 전역 상태가 준비됨 ...

November 11, 2025