Node.js는 싱글스레드처럼 보이지만, libuv를 활용하여 비동기 I/O를 처리한다.
CPU 연산이 많은 작업 시, 싱글스레드 구조로 인해 성능 병목 발생 가능성을 지닌다.
k8s 스케일 아웃을 통해 Node.js 서버 확장 및 60억 건 데이터 마이그레이션 성공
Node.js는 싱글 스레드 위에서 이벤트 루프를 통해 비동기 작업을 처리한다. libuv는 I/O 작업을 워커 스레드에 위임하여 메인 스레드를 블로킹하지 않는다. 따라서, 개발자는 멀티스레드 환경의 복잡성 없이 비동기 프로그래밍을 할 수 있다.
CPU 연산이 많은 작업은 싱글 스레드에서 처리되어 성능 병목을 유발한다. k8s 스케일 아웃을 통해 여러 Node.js 인스턴스를 실행하여 트래픽을 분산한다. 결과적으로, CPU 자원 활용도를 높이고 전체 시스템 성능을 향상시킬 수 있다.
네이버페이 타임라인 서버에서 60억 건 데이터 마이그레이션 시 Node.js의 CPU 병목을 경험했다. k8s 스케일 아웃을 통해 여러 Pod를 배포하여 병렬 처리했다. 그 결과, 마이그레이션 시간 25일 -> 1일로 단축하고 시스템 안정성을 확보했다.