S3 image bandwidth costs are getting annoying

저한테도 Cloudflare는 대체로 괜찮았어요. 다만 무료 플랜에서는 이미지를 캐시하지 않는 것 같긴 해요?

음, 그럴 수도 있겠네요. 어떻게 알 수 있는지 모르겠어요. 제가 아는 것은 그들이 제 대역폭의 절반을 절약해 주었다고 알려준다는 것뿐입니다. 무료가 아닌 이미지 관련 서비스를 제공하고 있는 것 같기는 해요.

Cloudflare의 약관이 명시적으로 다음과 같이 규정하고 있다는 점을 _지적_하고 싶습니다.

2.8 비-HTML 콘텐츠 서빙 제한

본 서비스는 주로 웹 페이지 및 웹사이트를 캐시하고 서빙하는 플랫폼으로 제공됩니다. 귀하가 구매한 유료 서비스의 일부로 명시적으로 포함되지 않는 한, 귀하는 본 서비스를 다음 목적으로만 사용することに 동의합니다: (i) 웹 브라우저 또는 기능적으로 동등한 애플리케이션을 통해 확인되는 웹 페이지를 서빙하는 것(하이퍼텍스트 마크업 언어(HTML) 또는 기타 기능적 동등물의 렌더링을 포함), (ii) 본 2.8절에 명시된 제한 사항에 따르는 웹 API를 서빙하는 것. 귀하가 별도로 유료 서비스의 일부로 구매하지 않거나, 특정 서비스에 대한 우리의 보충 약관에서 명시적으로 허용되지 않는 한, 비디오나 과도한 비율의 이미지, 오디오 파일 또는 기타 비-HTML 콘텐츠 서빙을 위해 본 서비스를 사용하는 것은 금지됩니다. 귀하가 본 2.8절을 위반했다고 판단될 경우, 당사는 즉시 귀하가 본 서비스를 사용하는 것을 중단하거나 제한하거나, 본 서비스를 통한 특정 리소스에 대한 최종 사용자 접근을 제한할 수 있습니다.

이것은 만약 귀하가 Discourse의 에셋 CDN으로 Cloudflare를 사용하고 있다면, 해당 약관을 위반하고 있을 가능성이 높으며, 이론적으로 언제든 서비스가 차단될 수 있음을 시사합니다.

흥미롭네요. 아마도 이미지(또는 다른 첨부 파일)를 자발적으로 캐싱하지 않는다는 뜻인 것 같습니다. 제 사이트의 캐시된 콘텐츠 내역서를 보니 JSON 데이터가 캐시 및 제공되는 콘텐츠 중 최상위 카테고리로 표시되어 있더군요. 아마도 브라우저로 전송되어 표시되는 포럼 콘텐츠가 JSON 형식인 걸까요? 아니면 폴링/알림 시스템 때문일까요?

참고로 Cloudflare도 S3 역할을 대체하기 위해 설계된 R2라는 종류의 블록 스토리지를 제공합니다. egress(데이터 전송) 요금이 없으므로 S3보다 저렴할 수 있다고 생각합니다(AIUI).

이 질문이 멍청한 질문이 될 것 같다는 건 잘 알고 있지만, 저장 용량이 큰 DigitalOcean 서버를 그냥 사용하는 건 어떨까요? 드롭릿 크기에 따라 수 TB에 달하는 매우 큰 전송 할당량도 제공합니다.

즉석에서 떠오르는 생각인데, 모든 것이 같은 서버에서 제공되면 사이트가 느려질 수 있을 것 같습니다. 이게 말이 되는 건가요?

또한, 다른 명백한 단점은 사용자 기반이 성장할 때까지 사용하지 않는 저장 공간에 대한 비용을 지불하게 된다는 점입니다. 하지만 S3의 전송 요금이 워낙 높아서 장기적으로는 여전히 더 이득을 볼 가능성이 큽니다.

다시 말하지만, 우리는 모두 적절한 균형을 찾으려고 노력하고 있으므로, 이 제안에 대해 합리적인 결점을 지적해 주실 분들을 찾고 있습니다.

얼마나 많은 GB의 저장 공간이 필요하신가요? 데이터가 얼마나 빠르게 증가하고 있나요? 얼마나 많은 데이터 전송량이 필요한가요? 이것이 핵심적인 질문입니다.

다음과 같이 질문해 볼 가치가 있습니다:

  • S3를 사용 중인 분들, 처음 S3를 선택했을 때 얼마나 많은 저장 공간이 필요했나요?

비용과 유연성으로 귀결될 것 같습니다. 성능 문제는 발생하지 않을 것으로 예상합니다. 인스턴스에 로컬 저장소를 사용하는 것은 더 비쌀 것이며, 특정 고정 크기만 제공됩니다. 항상 비용을 지불하는 미사용 공간이 있게 됩니다. 하지만 미래를 예측할 수 없으므로 어떤 쪽으로든 비용을 모델링하기는 어렵습니다.

저장 공간 요구량이 modest한 경우, 로컬 저장소를 사용하는 것이 분명히 문제가 없으며, 확실히 더 간단합니다. 제가 이해한 바로는, 로컬 저장소에서 블록 저장소로 마이그레이션하는 것은 간단하지만, 블록 저장소에서 로컬 저장소로 되돌리는 것은 그렇지 않다는 점에 유의하십시오. MJK의 훌륭한 의견이 담긴 가이드를 참고하십시오:

각각 고유한 가격 정책을 가진 다양한 저장소 제공업체가 있다는 점에 유의하십시오. Cloudflare도 (출력 비용이 없는) 서비스를 제공하지만, 아직 완전히 준비가 되지 않았습니다:
업로드를 위한 S3 호환 객체 저장소 제공업체 설정

물론, 다양한 호스팅 업체들이 가격 경쟁을 벌일 것이므로, 로컬 저장소를 사용하더라도 가격 비교를 해보시는 것이 좋습니다.

Backblaze는 매우 유사한 객체 저장소 서비스를 제공하면서도 S3보다 저렴합니다. Discourse에 해당 클라이언트가 있는지 모르겠습니다.

Backblaze B2를 말씀하시는 거라면, 여기에서 확인하실 수 있습니다: Configure an S3 compatible object storage provider for uploads

지금 너무 메타(meta)적인 이야기만 하고 있는 것 같지만, S3(또는 비슷한 다른 서비스) 자체는 그렇게 비싸지 않습니다. 오래된 이미지들이 비싸죠. 스태튼(Stetson)의 통계에 따르면, 오래된 이미지 중 97%는 거미줄만 쌓여 있을 뿐 전혀 표시되지 않습니다 — 그 저장 공간은 비용이 큽니다.

그리고 아니요, 어떻게 해결해야 하는지 저는 알지 못합니다. 무엇을 해야 하는지는 알지만, 아는 것만으로는 부족하니까요…

실제 서비스 환경에서 더 큰 청중이 비교적 새로운 이미지들을 다운로드할 때 발생하는 대역폭 비용이 더 큽니다. CDN은 잊어버립시다. 포럼이 정말로 전 세계적으로 운영되지 않는다면, 새로운 이미지는 VPN 자체에서 서빙되어야 합니다. 이미지가 오래되고 잊혀지기 시작하면, 그때 S3로 이동시켜 디스크 공간을 확보해야 합니다.

대형 기업들은 다른 방식으로 일을 하지만, 그들은 돈이 있으니까요.

안녕하세요 @bart, 이 설정에 대해 변경 사항이 있었나요? 여전히 이렇게 사용하고 계신가요?

여전히 잘 작동하고 있지만, 벌써 6년이 지났네요. 그 사이에 제가 무언가를 변경했을지 모르겠어요 :slight_smile: