Hello all,
I have a little side project I'm getting ready to launch. It's a Rails app using MySQL (though database choice doesn't matter, since it's Rails). I'm considering launching the app purely on S3 + EC2. The idea is, the code will live in S3 by using the S3 filesystem component. I can develop locally and deploy via Capistrano when I push out a new release. The code is then deployed to S3 and the EC2 instance restarts.
I'm wondering if this is even viable. Has anyone else that you know of done it?
For the database, I have two options. I could either leave the database on the EC2 instance and back it up nightly and never restart the instance (since data only disappears if you restart the instance or due to a hardware failure). The advantage there is database queries are most likely much faster, since it doesn't have to hit the network for each new database query. The disadvantage is, the data may disappear at the drop of a hat, and then it's backup-restore time. The other option is keeping the database in S3, which seems totally secure but might be slow for queries. I'll, of course, be using memcached and other caching mechanisms, but database load seems like it could still play a part.
What d'you think, would you launch on EC2 + S3?
As I understand it, if your VM is powered off, you lose cached data your database will then start re-pulling from the storage engine.
You can fetch the storage module from here: http://fallenpegasus.com/code/mysql-awss3/
Relevant presentation: http://fallenpegasus.com/code/mysql-awss3/presentations/
Computerworld article: http://www.computerworld.com/action/article.do?command=viewA....
Have I done it? No. It's something I'm investigating for a startup which may have a need for elastic scalability.
My main concern: you'd need a list of consistent speed between S3 and EC2. Any current users know what this is like?