이미지 업로드 성능 비교 – Multipart vs Presigned URL GCS - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
📸 Multipart vs Presigned URL + GCS
이미지 업로드 성능 비교
📝 개요
기존 Spring Boot 기반의 Multipart 업로드 방식과
Presigned URL + GCS 업로드 방식의 성능 차이를 k6
부하 테스트를 통해 비교하였습니다.
⚙️ 테스트 조건
항목 |
값 |
도구 |
k6 |
사용자 수 |
200 Virtual Users |
테스트 시간 |
10분 |
공통 설정 |
sleep(1) , 동일 stages 조건 |
📊 평균 응답 시간 비교
Metric |
Multipart 방식 |
Presigned + GCS 방식 |
개선율 |
http_req_blocked |
821µs |
546µs |
33.5% 감소 |
http_req_connecting |
814µs |
373µs |
54.2% 감소 |
http_req_duration |
2000ms |
381ms |
81% 감소 |
📈 요청 처리량 비교
항목 |
Multipart 방식 |
Presigned + GCS 방식 |
총 요청 수 (http_reqs ) |
17,900 |
84,300 |
초당 요청 수 (req/s ) |
29.56 req/s |
139.82 req/s |
💡 같은 테스트 조건에서도 약 7배 더 많은 요청을 처리하였으며,
이는 Presigned 방식에서의 응답 시간이 짧아졌기 때문입니다.
📷 결과 그래프
📌 Multipart 방식 결과 Presigned URL + GCS 방식 결과

📌 Metric 설명
Metric |
의미 |
http_req_blocked |
요청이 큐에 대기한 시간 |
http_req_connecting |
TCP 커넥션 생성에 걸린 시간 |
http_req_duration |
전체 요청-응답에 소요된 시간 (사용자 체감 성능) |
http_reqs |
총 요청 횟수 (처리량 지표) |
✅ 결론 및 인사이트
- Presigned URL 방식은 서버를 파일 데이터 중계에서 완전히 분리시켜줍니다.
- GCS로 직접 업로드하므로 서버의 부하가 줄어들고, 확장성이 극대화됩니다.
- 성능 테스트 결과:
- 응답 시간 81% 감소
- 요청 처리량 7배 증가
- 서버 스케일링 없이도 높은 동시 업로드 처리 가능하며,
서버 자원을 더 중요한 비즈니스 로직에 집중할 수 있습니다.