Вопрос об облачном фронте Amazon в отношении приложения Rails с загрузкой изображений - PullRequest
1 голос
/ 13 сентября 2011

Вопрос Newbish AWS: наше приложение Rails в настоящее время позволяет загружать изображения через Carrierwave в S3 корзину. Все работает хорошо ... но это начинает становиться немного запутанным (и громоздким), так как некоторые оригинальные файлы находятся в одном ведре (загруженные фотографии), в то время как другие находятся в другом ведре (логотипы сайта и т. Д.), А другие (javascript & css) обслуживаются непосредственно с хоста Rails.

Мы смотрим на Облачный фронт до , возможно , помогающий консолидировать и упростить нашу доставку ... но никто из нас не имел никакого опыта работы с ним. После правильной настройки (с пользовательским происхождением) можем / должны ли мы ожидать, что все активы вернутся на наш локальный сервер, а затем "просто" будут полагаться на Cloud Front для доставки? Это будет означать перенос всех загруженных изображений ( в настоящее время на S3) возвращаемся на локальный сервер Rails и вместо использования Carrierwave с гемом Fog для их загрузки мы просто обрабатываем и храним файлы в локальной файловой системе. Это будет иметь много преимуществ, главное из которых - у нас будет полная копия всего приложения, включая все ресурсы, локально на наших хостах.

Кроме того, можем ли мы ожидать задержки для нового изображения, обслуживаемого после его загрузки ... за пределы что происходит в настоящее время, когда после обработки загруженного изображения, когда оно загружено на S3, имеется небольшая задержка туман

Наконец, есть ли какая-то причина поддерживать наши корзины S3? Я понимаю, что «неиспользуемые» активы удаляются из CloudFront, но мне все равно непонятно, какой показатель определяет «неиспользуемые».

Это обычный случай использования? В основном, просто ищу подтверждение или так сказать.

Спасибо!

Ответы [ 3 ]

1 голос
/ 26 ноября 2011

Что касается carrierwave s3 с использованием cloudfront, я написал статью в блоге о том, как именно это сделать. (Очень легко заставить работать часть облачного фронта, если у вас уже работает s3) http://jeffdickey.info/using-carrierwave-on-heroku-for-image-uploading-w-cloudfront

А в примечаниях к активу js / css, если вы используете конвейер ресурсов rails 3.1, все, что вам нужно сделать, - это зайти в файл production.rb и установить для хоста ресурса облачный cdn, который указывает на сервер rails .

Мне нравится использовать content.domain.com и assets.domain.com для этих 2 cdns.

Нет необходимости загружать ваши файлы js / css в S3, затем обслуживать их из CloudFront, просто обслуживать их напрямую. CloudFront справится с кешированием за вас.

0 голосов
/ 05 октября 2011

Относительно переноса загруженных изображений обратно на ваш сервер, следует иметь в виду несколько вещей:

  • Вместо того, чтобы платить за хранение в одном контейнере, вы потенциально будете платить за несколько периферийных местоположений облачного фронтаоколо 20 из них на данный момент).С другой стороны, вы будете платить только за файлы, которые фактически используются, и за местоположение, где находятся ваши пользователи, поэтому разница зависит от того, как используются ваши файлы.
  • Если файл изменяется, вам необходимо изменить егоимя или ваш пользователь может не видеть изменения, возможно, вы уже решаете это, предоставляя загружаемые уникальные имена.

Нет существенной задержки в обслуживании, если файл отсутствует в местоположении egde, Cloudfront простополучить файл с вашего сервера, переслать его и сохранить его при следующем обращении к нему.Поэтому, если файл очищен, это не имеет значения, поскольку Cloudfront просто извлечет его снова, если это необходимо.

Что касается других ваших файлов, поскольку вы используете Rails 3.1 с конвейером ресурсов, это довольно просто.Я задокументировал мою установку здесь:

http://blog.ertesvag.no/post/10720082458

0 голосов
/ 13 сентября 2011

Два предложения:

1) Используйте jammit и jammit-s3 для управления своими активами и доставки их в облачный фронт.В процессе разработки ваши ресурсы находятся в локальной файловой системе, но при развертывании вы переходите на облачный фронт.Gem s3 достаточно умен, чтобы проверить, какие файлы изменились и т. Д. Я не уверен, как это повлияет на rails 3.1, но он хорошо сработал для меня на 3.0.

2) Используйте cloudflare.Эта услуга невероятно захватывающая, и помимо преимуществ безопасности она также кэширует ваши статические активы и доставляет их, используя собственный cdn.Удивительно, но есть бесплатный сервис, который в основном выполняет все, что нужно большинству из нас, хотя я не знаю о требованиях вашего приложения.Настоятельно рекомендуется проверить это.

...