• Ease of use / Speed of use
– Stores our AMI
– Fedora 8 from AWS
– Plus all our own stuff (RoR, Scripts, …)
– One “small instance” Server
• 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2
Compute Unit), 160 GB of instance storage, 32-bit platform
– Runs our AMI fulltime
– Two domains right now
– And our VPN
– Connected to running EC2 Instance
– Persistent Store for all mySQL DBs
LocalSocial: Tools etc.
• Wrote some wrappers around the command line tools
– start_instance: start a new instance of our Base AMI
– attach_database_volume: mount our EBS volume to our EC2 instance
• Gets a new instance running with the required EBS volume (with our
mySQL DB) mounted.
• Also have commands to do with bundling up the AMI. Used if we make
system changes that want to reﬂect across all newly started instances.
– Excludes our application code - this is deployed after the instance is started.
• Start to ﬁnish deploy
– 1. Start new Instance of Base AMI
– 2. Attach the DB EBS volume
– 3. Setup our application environment (Capistrano deploy:setup)
– 4. Deploy our application from our SVN repository.
– 5. Restart services
• Backup tasks
– backup : wraps the ec2 snapshot command (creates a snapshot of our
– Did this ourselves, but may use ec2onrails in future
• Amazon's CDN service
• Delivery of static assets
– Huge increase in speed (3x to 10x depending….)
– Can't manually expire the local caches in CF
– If you upload a new image it's ﬁne
– If you update a CSS ﬁle without changing it's name then the
change will not be picked up for 24 hours.
– Version every ﬁlename (a pain!),
– Use multiple "buckets" in Amazon
Wish List / to be done…
• Auto scaling
• Cost management
• Nowadays: This stuff works!
• Excellent for startups
– Contrast with “old days”
• Killer combo
– On-demand compute and storage
• Gets better month by month
– The “grid” is becoming a reality