Paul Dowman created something really useful for the Ruby on Rails Community: a Pre-configured Ruby On Rails Stack AMI that "just simply works". Public AMIs are pre-packaged, pre-configured, compressed file-system blobs that are stored on Amazon S3 which can be instantiated by any Amazon EC2 user.
Ruby on Rails cuts down development time significantly due to all the freebies and code generators that comes with it. Now with these types of new public AMIs, it will also cut down deployment time too.
With Paul's Public AMI, developers will get all of following pre-configured and ready to go:
- Automatic backup of MySQL database to S3 every 10 minutes.
- Mongrel_cluster behind Apache 2.2, configured according to Coda Hale’s excellent guide, with /etc/init.d startup script
- Ruby on Rails 1.2.3
- Ruby 1.8.5
- MySQL 5
- Ubuntu 7.04 Feisty with Xen versions of standard libs (libc6-xen package).
- All EC2 command-line tools installed
- MySQL and Apache configured to write logs to /mnt/log so you don’t fill up EC2’s small root filesystem
- Hostname set correctly to public hostname
- A script to re-bundle, save and register your own copy of this image in one step (if you want to).
In the Blog Post, Paul has a nice "Instructions Manual" to get you started. There was significant confusion among the Rails community whether to use HAProxy, Apache mod_proxy_balancer, nginx and so many other alternatives. Paul was smart enough to just put the right ingredients in his recipe.
I can't wait to see the entire network topology from load balancer to MySQL master-master replication model and a cluster monitoring solution in one single AMI that we can instantiate by invoking simple commands using Parameterized Launches feature of Amazon EC2.
Imagine a Zero-configuration world, where we simply reuse other developer's once-done configuration and even optimizations!.
Thanks to Paul for taking lead on this and sharing with the world! Travis Reeder shares his expertise with an example (in the comments section of his blog post) on how to normalize your data fields in a database by storing big blobs onto Amazon S3 thereby making the database less heavy and easier to manage.
This is what I like about this "Social computing" era - willingness to share and collaborate. Hats off! to all the developers who share their development experiences so that others don't have to go through the same pain of configuring, tweaking, patching components.
p.s. we are encouraging people to put their Public AMIs in our Resource Center "Public AMIs" bucket so other developers can find them easily.