Экономически эффективный способ получения больших файлов из корзины S3 в другом регионе

У нас есть 3-кратная ежедневная автоматизированная задача для загрузки и восстановления полной резервной копии большой БД из корзины ЕС S3 на наш локальный сервер в США. Это было сделано, когда сама БД была маленькой и время / затраты на передачу были минимальными. Из-за факторов, не зависящих от нас, размер базы данных составляет 70+ ГБ. Полные резервные копии создаются каждые 3 дня, а разности - каждые 8 ​​часов. Наша 3x ежедневная автоматизированная задача требует извлечения файлов.bak самых последних full и diff. При скорости загрузки около 120 Мбит / с в течение дня это может занять несколько часов, чтобы извлечь это из S3, и при 3x ежедневном, 365 дней в году, для передачи $ 0,09 / ГБ из S3, только затраты на передачу не являются тривиальный.

Кажется, здесь есть множество вариантов минимизации затрат и времени выполнения.

  1. Мы могли бы кэшировать полные файлы.bak локально и проверить, существует ли файл уже локально, прежде чем извлекать его из корзины EU S3. Раз в 3 дня существует только 1 полный файл.bak, но существует 9 восстановлений, поэтому 8 из 9 могут использовать кэшированную копию.
  2. Мы могли бы дополнительно изменить нашу стратегию резервного копирования, чтобы она выполняла менее частые полные резервные копии, чтобы полные.baks загружались еще реже.
  3. Расходы на перенос из S3 в другой сервис AWS в том же регионе бесплатны, поэтому, если бы мы смогли восстановить эту БД в экземпляре EC2 в ЕС, это было бы здорово, но команды, использующие восстановленные БД, в настоящее время нуждаются в их размещении на месте, так что это долгосрочная мысль.
  4. Мы могли бы заранее скопировать эту БД из корзины ЕС в корзину США и загрузить ее оттуда, но это удвоило бы наши затраты на хранение, а перенос из S3 - тот же, независимо от региона.
  5. Магистраль AWS работает быстрее, чем Интернет, и S3 to CloudFront бесплатен, поэтому теоретически мы могли бы получить частный доступ к этим файлам через CloudFront, который обеспечил бы более быстрое расположение на периферии, плюс CloudFront также немного дешевле, чем S3, за $ 0,085. / ГБ. Это кажется большой инженерной работой для небольшой экономии затрат. Наша кодовая база - C#, и в настоящее время мы получаем файлы, используя AWS SDK для S3 - я не изучал, как это может работать с CloudFront (и я чувствую, что, возможно, что-то здесь упускаю).

Мой план состоит в том, чтобы реализовать локальный кеш (#1), который является решением на основе кода с нашей стороны. Это похоже на общий случай использования, и мне интересно, если я упускаю что-то очевидное.

0 ответов

Другие вопросы по тегам