While Amazon S3 is making headlines, they have an internal service called Dynamo to run their SQL farm. It’s true that S3 can be utilized as an SQL server, it’s not as reliable as it should be for most web applications. It has issues with data sets not being updated in a Write before Read situation.
For instance: If you have a form and a user updates their data, when the form is submitted and the data is queried again to show them what is listed, your data may or may not be correct (Old vs. New). If it’s not the new data, customers get frustrated and think things don’t work right and leave. Sure, you could cache the data and just output variables, but thats not really a good idea either because you don’t exactly know how long that replication will take.
So, I went looking for a decent SQL service (MySQL). I’m looking for something decently priced, but able to scale up very fast. Basically, think of any normal web startup with a small amount of money, but looking at the possibility of things exploding too quickly to purchase their own hardware.
Options
There are a few options for people that need this type of service:
Roll Your Own
Many people roll their own server. Depending on how its done, it can cost more money or be cheaper. Most people that roll their own server Colo their box at another location as well. This helps keep costs down instead of needing to run a pipe to your location and other things like a backup generator, etc.
There is a problem with rolling your own server, well, several problems:
- You pay for most hardware up front, regardless if its used or not.
- Hardware Dies, Replace… Rinse & Repeat for several Years. Consumer hardware is cheap compared to Enterprise hardware.
- Trying to avoid costs by choosing a cheaper collocation provider can actually cost more money than they’re worth.
- Any DB server should be Maxed out on memory, which can be your second largest cost for a DB server, next to the RAID array.
On the upside, you have total control of everything. Hardware, software, all tweaks, even what it looks like (ie: your own corporate logo, etc).
Dedicated Hosting
Dedicated hosting has good, bad and ugly qualities. Some people swear by dedicated hosting. I’ve heard reviews on both sides of the fence for places like RackSpace, RackForce, and all the others, but would you trust your data in someone in another company’s hands?
- You don’t own the hardware.
- You don’t know exactly what type of hardware the box runs on, it could be Consumer, Enterprise, or some OEM brand from hell.
- Response times for support can vary from one extreme to another.
- Data costs can skyrocket, depending on the your contract.
Virtual Hosting
Virtual hosting allows you to cheaply run quasi-dedicated boxes cheaply. In most situations, I would not recommend this for a Write before Read cluster environment. Each Virtual host has several customers running on each physical box. Usually each customer is pretty much physically blocked off, but you share CPU and Memory resources. But, if you’re interested in this type of situation, check this video out - installing a MySQL cluster in under 5 minutes.
Is There A Fix-All Solution?
Amazon Dynamo sounds like it could be an awesome product that would take care of small to mid-sized businesses that feel they need a reliable SQL Cluster. There are hosting services that will host SQL Clusters, but they’re mainly for MSSQL. Now, these are classified as Dedicated Hosting, so there is little to customize. Then again, Dynamo would be as well.
I’d be interested in hearing any Cluster experiences with Dedicated Hosts.
