We are evaluating hosting our application on Amazon EC2 service. While I am confident that a Small instance (1.7GB RAM) will be sufficient for our web server (at this point), I am not sure about requirements for the MySQL server:
Would it make sense to put the MySQL server on the same image as our main server? (to save costs)
I suppose The database will be constantly updated and queried from multiple sources other than the web server, up to 100,000 queries a day / 5000 updates a day. If deploying via RDS, should the database be deployed on an image that has more resources than a "small" instance?
Would it ever make sense to host a MySQL database on EC2 but not via RDS?
Thanks,
Sure, especially if you require a very customize implementation of MySQL. Also, performance criticism are pretty common with RDS.
With that said, and for the money RDS really fits a large scope of requirements. On the surface it does cost more money to run an RDS instane than that an EC2 instance hosting a MySQL server but when you start to add up the monitoring, backups, and durability that are built into RDS, you probably actually end up in better shape than if you tried to mimic that functionality with you own EC2 installs.
As for size, one of the nice benefits of RDS is it scales. You can deploy on a small instance and if you decide you need a larger instance you can convert your instance to a larger instance. Also, if you have load issues you have the ability to spin up multiple versions of read only databases to handle the load on RDS.
End of the day it's MySQL so if you try RDS and are unhappy with it you and dump the database, spin up you own MySQL implementation and import your database into that. In my opinion, it's worth off loading a lot of the MySQL administrative task and just focus on the data, your milage may differ.
Hope this helps with you decision.
Yes - RDS and MySQL are very different. With RDS you are not managing the server yourself - so, for example - you don't get access to server logs. There's a lot of nifty engineering tricks that you can only do if you maintain the server yourself (i.e. have an EC2 image running MySQL on it).
Don't put the MySQL on the same server if you think you'll need to migrate it to it's own server any time soon because of traffic/load. Might as well do it now so you don't have to deal with configuration changes later.
Small instance will be around $70-$80/month while a large instance will be ~$230/month (prices keep dropping so I am estimating).
We have gotten pretty far with small instances, but when you have high IO (i.e. lot's of disk seeks) - go with a large as the small instances are really IO constrained. If you have good indexes created and they are able to fit in RAM then you won't have a whole lot of disk seeks because you'll be avoiding full table scans.