Chad Remesch bio photo

Chad Remesch

Entrepreneur, software engineer, and photographer.

Email LinkedIn Instagram Github

I've released my latest Ruby gem named Capistrano::Releases with the goal of making it easy to use Capistrano with AWS EC2 Auto Scaling. Benefits incude...

Continue to deploy as usual: This gem compliments your existing Capistrano deployment code with minimal changes. This is especially useful for situations where your app started off on a single server (such as a prototype) and now you want to move it to auto scaling AWS EC2 instances. Another use case is for apps that have outgrown Horoku.

Store releases on AWS S3: Every time you deploy with Capistrano, a new release directory is created on your server(s). This poses a problem for auto scaling instances because they are created/destroyed independently of your Capistrano deploys. To solve this problem, your releases get automatically compressed and stored on AWS S3. This highly reliable shared storage is then used to synchronize your releases across instances.

Bundler aware: Most Capistrano users choose to use Bundler for gem dependency management. Capistrano::Releases is bundler aware and will store your dependencies in S3 along with your releases. This means you don't have to depend on the public (or private) gem servers to be working when a new EC2 instance boots.

Simplicity: The code is relatively short and pure Ruby. This makes it very easy to customize for complex situations. It can be used from the command line or directly through its API.