패스잇
백엔드 개발 · 심화

Express.js에서 대용량 파일 업로드 시 발생할 수 있는 성능 이슈와 Multer의 메모리/디스크 저장 전략을 설명해주세요.

힌트 · 메모리 저장은 속도는 빠르지만 메모리 부족 위험이 있고, 디스크 저장은 안전하지만 I/O 비용이 발생합니다.

스트리밍메모리 부족(OOM)Multer디스크 기반 저장백프레셔(Backpressure)

모범답안

Express.js에서 대용량 파일을 업로드할 때 메모리 부족이나 서버 응답 지연 같은 성능 문제가 발생할 수 있습니다. 파일을 전부 메모리에 올려 처리하면 서버에 부담이 커지기 때문입니다.

Multer는 이런 문제를 해결하기 위해 메모리 또는 디스크 기반 저장 전략을 제공합니다. 메모리 저장은 빠르지만, 파일 크기가 크면 메모리 부족으로 서버가 다운될 수 있습니다. 반면, 디스크 저장은 파일을 디스크에 저장하므로 메모리 부족 위험은 줄지만, 디스크 I/O 때문에 속도가 느려질 수 있습니다.

따라서 파일 크기에 따라 적절한 저장 전략을 선택해야 합니다. 대용량 파일이라면 디스크 기반 저장을 사용하고, 스트리밍 방식으로 파일을 처리하여 메모리 사용량을 최소화하는 것이 좋습니다. 또한, 백프레셔를 활용하여 클라이언트의 업로드 속도를 조절하면 서버의 부담을 줄일 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Node.js 면접 질문

← Node.js 면접 질문 전체 보기