피드로 돌아가기
Dev.toBackend
원문 읽기
Tigris가 S3 호환 객체 저장소와 글로벌 자동 레플리케이션으로 소셜 미디어 앱의 파일 업로드 아키텍처를 서버 우회 방식으로 전환
File uploads for a social media app with Tigris
AI 요약
Context
소셜 미디어 앱은 사용자가 업로드한 모든 파일을 서버를 거쳐 저장하는 구조로 인해 서버 대역폭 소모와 지연 시간 증가 문제가 발생한다. 또한 객체 저장소의 데이터 다운로드(Egress) 비용이 반복적인 파일 접근으로 인해 가파르게 증가한다.
Technical Solution
- 브라우저에서 Presigned URL을 이용한 직접 업로드 구현: 서버가 PUT 권한이 있는 URL을 생성하고 클라이언트가 Tigris로 바로 파일 전송
- 멀티파트 업로드 방식 도입: 500MB 이상 비디오 파일을 청크 단위로 분할하여 병렬 업로드 처리
- 파일 접근 제어의 공개/비공개 분리: 프로필 사진은 public 접근 허용, 비디오는 시간 제한 Presigned URL로 private 관리
- 글로벌 자동 레플리케이션 활성화: 단일 버킷 구성으로 Tigris가 다중 리전에 자동 복제하여 도쿄 사용자 업로드 파일을 베를린 사용자가 인근 캐시에서 로드
- 에그레스 비용 제거: Tigris의 제로 에그레스 정책으로 반복 다운로드에 따른 비용 절감
Key Takeaway
소셜 미디어와 같이 대량의 파일 다운로드가 반복되는 서비스에서는 클라이언트 직접 업로드 방식과 글로벌 자동 레플리케이션을 결합하면 서버 리소스 점유를 최소화하면서 사용자 지리적 위치와 무관하게 낮은 로딩 시간을 제공할 수 있다.
실천 포인트
소셜 미디어 또는 UGC 플랫폼 개발 시 @tigrisdata/storage/client 패키지로 클라이언트 직접 업로드를 구현하면 서버 CPU와 대역폭을 파일 처리에서 완전히 제외시킬 수 있고, multipart: true 옵션으로 대용량 파일 청크 분할 업로드를 자동 처리하며, 글로벌 레플리케이션으로 인한 인근 캐시 활용은 추가 설정 없이 자동으로 적용된다.