DigitalOcean 블록 스토리지 vs Amazon S3

디스코urs 플러그인을 설치하면서 컨테이너를 재빌드하기 전에 명령줄에서 디스크 공간 관련 경고가 표시되었습니다. DigitalOcean 드롭렛에서 오래된 Linux 버전을 제거하기 위해 몇 가지 명령을 실행했지만, 여전히 SSD 용량의 50%를 초과하고 있습니다.

디스코urs 웹사이트가 커지면서 저장소 솔루션을 알아보기 시작했습니다. 현재 5달러짜리 DigitalOcean 드롭렛을 사용 중이며, DigitalOcean 블록 스토리지와 Amazon S3에 대해 여러 자료를 찾아보았습니다. 디스코urs 설정에 S3 설정이 내장되어 있는 것을 보니, 설정이 더 쉬울 것 같아 추측하고 있습니다.

여러분의 웹사이트에는 무엇을 사용하시나요? S3와 DigitalOcean 블록 중 어느 쪽이 로딩 속도가 더 좋나요? 어떤 옵션이 더 저렴한가요? S3의 무료 티어가 DigitalOcean 블록보다 더 저렴하지 않을까요? 이미지를 백업과 함께 저장하시나요? 아니면 DigitalOcean과 Amazon 외의 다른 옵션을 추천하시나요?

안녕하세요,

S3 호환 스토리지 솔루션을 제공하는 프로바이더가 많습니다. 그중 어떤 것을 사용하셔도 됩니다. 여러 서비스를 사용해 본 경험으로 Digital Ocean Spaces를 강력히 추천합니다.

이미 Digital Ocean에서 호스팅을 하고 계신다면, 빠르고 안정적이라 Spaces를 사용하는 것을 추천합니다.

다만, 그들의 CDN과 관련하여 몇 가지 우려 사항이 있으므로 제3자 CDN을 고려해야 할 수도 있습니다.

더 자세한 정보는 아래 토픽을 참고해 주세요:

S3는 분명 더 성숙하고 검증된 솔루션이지만, 가격 측면에서는 DO의 제안이 여러분의 커뮤니티에 더 적합할 수 있습니다.

무엇을 선택하든 버킷 앞에 CDN을 반드시 구성해야 하므로, 이 점을 잊지 마세요.

Cloudflare의 무료 플랜을 버킷 앞의 CDN으로 사용할 수 있을까요? 이미 무료 DDoS 보호를 위해 도메인 설정에 Cloudflare를 사용 중입니다.

DigitalOcean이 Spaces 서비스를 다른 유명 제공업체보다 저렴하게 광고하는 것을 알게 되었습니다. 따라서 확실히 장점이 됩니다.

DigitalOcean Spaces에 포함된 CDN이 Discourse와 올바르게 작동하지 않기 때문에, 목록에 있는 다른 제공업체 중 하나를 사용하는 것이 나을 것 같습니다. 그러면 DigitalOcean Spaces와 별도의 CDN 서비스에 대한 비용을 따로 지불할 필요가 없습니다.

Configure an S3 compatible object storage provider for uploads 은 한 달 후 모든 답변이 삭제되도록 설정되어 있으므로, 여기에도 이 내용을 공유합니다.

DO CDN 구현에서 content-encoding이 누락되는 것은 분명히 아쉬운 점이지만, 이는 app.yml 안에 모든 S3 매개변수를 설정할 때만 발생합니다. 이러한 매개변수가 웹 관리 콘솔을 통해 사이트 설정에서 설정되면, DO는 S3 업로드만 CDN을 통해 서빙하고 사이트 자산은 여전히 소스에서 서빙됩니다.

app.yml에 설정된 경우 DISCOURSE_S3_CDN_URL 환경 변수가 자산의 CDN 설정도 덮어쓰지만, 사이트 설정에서만 선언된 경우 그렇지 않은 것 같으므로, 이는 의도된 동작인 것으로 보입니다.

이것은 다소 일관성이 없으나, 사이트가 깨지지 않도록 DO CDN을 S3 업로드에만 사용할 수 있게 해줍니다:

이를 수행하는 두 가지 방법이 있습니다:

  • 모든 S3 설정을 사이트 설정에만 선언
rails c
SiteSetting.s3_upload_bucket="<bucket_name>/<uploads_folder>"
SiteSetting.s3_backup_bucket="<bucket_name>/<backups_folder>"
SiteSetting.enable_s3_uploads=true
SiteSetting.s3_access_key_id="<key>"
SiteSetting.s3_secret_access_key="<secret_key>"
SiteSetting.s3_endpoint="https://<sfo2>.digitaloceanspaces.com"
SiteSetting.s3_cdn_url="https://<bucket_name>.<sfo2>.cdn.digitaloceanspaces.com/<uploads_folder>"
SiteSetting.backup_location="s3"
  • app.yml에서 DISCOURSE_S3_CDN_URL을 제외한 모든 S3 설정을 섀도(shadow)하고, DO CDN을 SiteSetting.s3_cdn_url에 선언
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: <sfo2>
  DISCOURSE_S3_ENDPOINT: https://<sfo2>.digitaloceanspaces.com
  DISCOURSE_S3_ACCESS_KEY_ID: <key>
  DISCOURSE_S3_SECRET_ACCESS_KEY: <secret_key>
#  DISCOURSE_S3_CDN_URL: https://<bucket_name>.<sfo2>.cdn.digitaloceanspaces.com/<uploads_folder>
  DISCOURSE_S3_BUCKET: <bucket_name>/<uploads_folder>
  DISCOURSE_S3_BACKUP_BUCKET: <bucket_name>/<backup_folder>
  DISCOURSE_BACKUP_LOCATION: s3
rails c
SiteSetting.s3_cdn_url="https://<bucket_name>.<sfo2>.cdn.digitaloceanspaces.com/<uploads_folder>"

@falco 이 의견에 동의하신다면 원래 위키 토픽을 업데이트할 수 있습니다.

그것은 좋은 아이디어라고 생각하지 않습니다.

  1. AWS를 포함한 모든 다른 제공업체는 CDN을 요구합니다. DO가 제공하는 무료 CDN이 깨져 있는 것은 무시할 수 있는 특이점이며, 이를 표준 객체 저장소 서비스처럼 취급하면 됩니다.

  2. yml과 사이트 설정에서 S3 CDN URL을 설정하는 구현 세부 사항이 서로 다른 동작을 초래하는 것은 언제든 수정될 수 있으므로 이를 권장하고 싶지 않습니다.

직접 테스트해 보지는 않았지만, KeyCDN, Cloudfront, StackPath와 같은 실제 CDN 서비스에서는 작동한다는 것을 확신합니다.