fregas
fregas

Reputation: 3250

Capistrano deployment with lots of images

So we have this basic Rails 3 website with capistrano 2.5.19 plus multi-stage extension.

The site is simple, but it has 40,000+ of images out there. So deployments take a long time, going both to our QA server and production. The issue is not usually network load, because capistrano only downloads what changed in svn. The issue is the time it takes for our servers to backup the old release (40k worth of images) and copy the new release (another 40k of images.)

Does anyone know of a best practice approach to this? Is the only way to split this into two SVN folders and two deployment scripts combined with some symlink magic? Or can i tell capistrano to exclude the images on certain deployments where I know images have not changed?

Upvotes: 0

Views: 290

Answers (2)

Rich Duzenbury
Rich Duzenbury

Reputation: 11

Well, we have this issue too. A solution is a library called fast_remote_cache if you're on linux.

https://github.com/37signals/fast_remote_cache

The idea is that it hard links to the cache so the copy is much faster. Once the site finally gets large enough that even this takes too long, then it is time to consider asset servers.

Upvotes: 1

Xavier Holt
Xavier Holt

Reputation: 14619

It's probably better not to have all those images in your repository, or at least in a different repository.

You'll want to see about setting up an asset server. They're easy to hook into Rails, as long as you use the XXX_tag helpers. And you could just have the asset server run plain old Apache - not need for anything dynamic on it...

You might also be able to hook a "cloud" file store (I'm thinking Amazon S3, but there are plenty of others) in to serve the same purpose - they'll provide file backup (and version control, in some cases), and you won't even have to worry about running the asset server yourself.

Hope this helps!

Upvotes: 0

Related Questions