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

У нас есть 3-кратная ежедневная автоматизированная задача для загрузки и восстановления полной резервной копии большой БД из корзины EU 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 в CloudFront бесплатен, поэтому теоретически мы можем получить частный доступ к этим файлам через CloudFront, который обеспечит периферийное местоположение с более высокими скоростями, плюс CloudFront также немного дешевле, чем S3 в $ 0,085 / GB. Это кажется большой инженерной работой для небольшой экономии затрат. Наша кодовая база - C #, и в настоящее время мы получаем файлы, используя AWS SDK для S3 - я не изучал, как это может работать с CloudFront (и я чувствую, что, возможно, здесь что-то не хватает).

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

...