When we first started working on our platform, there was no question that we would use Amazon’s platform for hosting. EC2 has amazing tools, rock solid reliability and instant name recognition for investors and users. It is actually a part of our marketing.
During development, we created dozens of servers to either test functionality or to validate features. We actually used several AMI and host operating systems. EC2 is great for validating ideas. It costs us very little for all this.
So we are approaching launch and I assumed that we would be using a small or large instance since a micro instance seemed sluggish. The plan was to go with RDS for the db and S3 to offload some load from our web host.
So I setup a small instance with RDS and do some performance testing (ab, j-meter, and some of those testing sites like pingdom). The numbers returned back were atrocious: requests per second of less than 1 and page load times of 37 seconds with load. I review CPU utilization on the RDS instance: nothing more than 30% during the tests. After some digging its clear that the web host was to blame.
The next step was to create a large instance. Monthly cost for this would be 250 per month just for that box: the RDS and S3 would be more. In total, our monthly costs would be $400 per month. What did we get for this cost: 4 requests per second and page loads of 14 seconds. The RDS was lucky to see 40% CPU utilization. This was not something we could go live with. These numbers were what we got locally so across the internet it would be worse.
Now we didn’t do performance tuning (caching in the app, memcache, xcache). That wouldn’t have bought us much and even a five fold increase would not get us to acceptable levels of performance.
EC2 has server more robust than large, but, then costs go up rather quickly.
We have found another VPS vendor who offers much better value for the money. For what we are working on right now, EC2 cost structure just doesn’t work.