피드로 돌아가기
Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads
Dev.toDev.to
Backend

Direct Uploads 도입을 통한 Puma 워커 병목 제거 및 인프라 비용 최적화

Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads

Zil Norvilis2026년 6월 19일4beginner

Context

사용자 브라우저에서 Rails 서버를 거쳐 스토리지로 이동하는 기존 파일 업로드 방식의 한계 분석. 대용량 파일 전송 시 Puma 워커가 점유되어 전체 애플리케이션 응답성이 저하되는 구조적 병목 현상 발생.

Technical Solution

  • 브라우저에서 Cloud Storage(S3, R2)로 직접 데이터를 전송하는 Direct Uploads 아키텍처 전환
  • Rails 서버의 역할을 데이터 스트림 처리에서 최소한의 Metadata 핸들링으로 축소하여 서버 부하 제거
  • S3/R2 대시보드 내 CORS 설정 최적화를 통한 브라우저 보안 제약 해결 및 전송 경로 확보
  • ActiveStorage의 direct_upload: true 속성 적용을 통한 클라이언트 사이드 업로드 로직 자동화
  • Stimulus 컨트롤러와 direct-upload:progress 이벤트를 연동한 비동기 업로드 상태 시각화 구현
  • 서버 리소스 점유 없이 스토리지 서비스가 업로드의 99%를 처리하는 오프로딩 구조 설계

1. 프로덕션 환경에서 Local Disk 사용을 지양하고 S3/R2 등 외부 Cloud Storage 도입 여부 검토

2. 대용량 파일 업로드 시 서버 Worker의 I/O Wait 및 Thread 점유율 모니터링

3. 클라이언트-스토리지 간 직접 통신을 위한 CORS 정책 설정 확인

4. 사용자 경험 향상을 위해 ActiveStorage 이벤트 기반의 Progress Bar 구현 적용

원문 읽기