Typescript

[Catarie] 이틀만에 S3 Put 요청이 2천회 넘기다.

sihanni 2025. 9. 15. 01:54

Catarie를 배포한지 약 이틀이 지나고 자다가 AWS 알람메일이 왔다. S3 put 요청이 2천회를 넘긴 것 이다.

아직 주변 지인들에게만 소개했던 서비스인데 어떻게 이렇게 인기 폭발(?)이라고 생각한 것도 잠시 조금만 생각해보니 당연한 것이었다.

이전에 다른 글에서도 설명했는데, HLS 스트리밍 프로토콜을 사용하게되면, 원본 음원이나 영상이 .m3u8 확장자의 플레이어 리스트 파일과 *.ts 확장자로 이루어진 세그먼트들이 지정된 서버의 저장소로 저장되게 되는데, 이것이 청크의 단위를 짧게 할수록 영상의 끊김은 없을수 있지만 대신 그만큼 ts파일이 많아진다.

Amazon S3에서는 저 파일 하나당 PUT 요청 1회로 치는 것이다. 그리고 나의 경우 원본 데이터, 해상도별 썸네일까지 한 컨텐츠에 추가로 4번 더 PUT 요청이 발생하는 것이다. 위의 영상만해도 약 2~3 MB 밖에 되지 않지만 PUT 요청은 28회하게 된 것이다.

그래도 다행히 S3 는 사용량에 비해 가격 단가가 상당히 낮은 수준이다. 일반적으로는 1,000 건당 $0.005 라서 사실상 1,000 건당 6~7원 정도 인 셈이다.

진짜 비용이 나가는 부분은 스토리지(GB) 쪽이다. 하지만 Catarie의 경우 회원등급에 따라 일일 업로드회수가 제한되어있고, 그 용량도 한정적이므로 당장 유저가 엄청 많지 않은 이상 부담가지 않는다.

하지만 만약 나중에 유저수가 늘어난다면 아래의 것들을 고려해봐야한다.

 

  • 멀티파트 파트 크기 키우기
    (8MB → 32MB) → UploadPart 횟수↓
  • LIST 호출 최소화
    폴더 브라우징 대신 단건 HeadObject/GetObject
  • HLS 세그먼트 길이 늘리기
    (6초 → 10초) → 세그먼트 수↓ → PUT↓
  • Presigned URL 정책 강화
    1회성 토큰·짧은 만료