У нас есть 3-кратная ежедневная автоматизированная задача для загрузки и восстановления полной резервной копии большой БД из корзины EU S3 на наш локальный сервер в США. Это было сделано, когда сама БД была маленькой и время / затраты на передачу были минимальными. Из-за факторов, не зависящих от нас, размер базы данных составляет 70+ ГБ. Полные резервные копии создаются каждые 3 дня, а разности - каждые 8 часов. Наша 3x ежедневная автоматизированная задача требует извлечения файлов .bak самых последних full и diff. При скорости загрузки около 120 Мбит / с в течение дня это может занять несколько часов, чтобы извлечь это из S3, и при 3x ежедневном, 365 дней в году, для передачи $ 0,09 / ГБ из S3, только затраты на передачу не являются тривиальный.
Здесь, кажется, есть множество вариантов минимизации затрат и времени выполнения.
- Мы можем кэшировать полные файлы .bak локально и проверить, существует ли файл уже локально, прежде чем извлекать его из корзины EU S3. Раз в 3 дня существует только 1 полный файл .bak, но существует 9 восстановлений, поэтому 8 из 9 могут использовать кэшированную копию.
- Мы могли бы дополнительно изменить нашу стратегию резервного копирования, чтобы она выполняла менее частые полные резервные копии, чтобы полные .baks загружались еще реже.
- Затраты на передачу из S3 в другую службу AWS в том же регионе бесплатны, поэтому, если бы мы смогли восстановить эту БД в экземпляр EC2 в ЕС, это было бы здорово, но командам, использующим восстановленные БД, в настоящее время нужны их размещение на -прем, так что это долгосрочная мысль.
- Мы могли бы активно копировать эту БД из корзины ЕС в корзину США и загружать ее оттуда, но это удвоило бы наши затраты на хранение, а перенос из S3 стоил бы одинаково независимо от региона.
- Магистраль AWS работает быстрее, чем Интернет, и S3 в CloudFront бесплатен, поэтому теоретически мы можем получить частный доступ к этим файлам через CloudFront, который обеспечит периферийное местоположение с более высокими скоростями, плюс CloudFront также немного дешевле, чем S3 в $ 0,085 / GB. Это кажется большой инженерной работой для небольшой экономии затрат. Наша кодовая база - C #, и в настоящее время мы получаем файлы, используя AWS SDK для S3 - я не изучал, как это может работать с CloudFront (и я чувствую, что, возможно, здесь что-то не хватает).
Мой план состоит в том, чтобы внедрить локальный кеш (# 1), который является решением на основе кода с нашей стороны. Это похоже на общий случай использования, и мне интересно, упустил ли я что-то очевидное.