15 February 2015
In my previous post I discussed how I setup a simple failover system between VPSes with Linode and DigitalOcean. Now I’d like to take a step back and explain how I chose those providers.
Around 18 months previously the client in question had purchased a well specified rackmount server colocated with a local provider. This was partitioned into a number of virtual machines, each managed individually.
The provider experienced some (exploding) UPS issues that resulted in around 8 hours of downtime, unfortunately including a weekday morning. Whilst off site backups were regularly taken and available to use, the time required to manually deploy these elsewhere highlighted the need for a better solution.
Costings were made for purchasing an additional machine for colocation with the same provider at another data centre. The provider would be able to reroute IP addresses from one site to the other in the event of a failure. The costs came out to approximately £350/month (around $550 US at the time of writing) for the hosting and £1,750 ($2,700 US) upfront cost to purchase the new server.
The original server was around 18 months old, and would ideally need replacing in 18-30 months. Assuming the purchase of two machines and hosting over 4 years, the total cost works out to around £5,075 per year ($7,800 US), or £423 per month ($650 US).
Cloud (Amazon Web Services)
Out of curiosity I decided to cost up Amazon EC2 as an alternative. Possibly unfairly I’m basing the costs on On Demand hourly pricing rather than reserved instances.
Assuming we have 8 clients, each requiring the equivalent to 2 CPU cores, 2Gb of RAM and 40Gb of SSD storage. Then we double this as we require a second instance be available and replicating from the first.
I’ve selected the “t2.medium” instance type as best match, it comes with 2 vCPUs, 4Gb RAM and 8Gb EBS storage. To this I’ve added 40Gb of SSD EBS storage.
16 instances at this specification, plus 8 elastic IPs, 1Tb of data out, 100Gb of data in, and 100Gb inter-region transfer adds up to $843 US/month (£548), around 23% more expensive than our colocation option.
VPS (DigitalOcean and Linode)
DigitalOcean offer 2Gb RAM, 2 CPUs, 40Gb SSD and 3Tb of transfer per instance at $20 US per month. 16 instances here provide a massive 48Tb of transit (though it is strictly measured per instance).
Linode offer 2Gb RAM, 2 CPUs, 48Gb SSD and 3Tb of transfer per instance, also at $20 US per month. One difference to note though is that the transit allowance is per account, so all 48Tb is available across instances should one client be particularly succesful.
The total cost with both providers is $320 US per month (£208), more than 50% cheaper than colocation.
The cost difference was incentive to devise my resilience strategy.
Note that with 3 year reserved instances on AWS is it possible to half the price of hosting there which makes it much more competitive, but also a greater commitment than the month-to-month costs from DigitalOcean and Linode.
Combine the cost savings with the flexibility of launching as many new instance pairs as we need as the client base grows versues maintaining and expanding a physical hardware footprint and it was an easy sell.
Both VPS providers offering near-equivalent products at identical prices make combining both for redundancy a straightforward proposition.
Linode and DigitalOcean were chosen because they were the most visible providers to me and provide important features like API access making future automation possible and two-factor authentication on their management consoles. In addition, they also offer hourly pricing (like AWS), which makes them very convenient for testing things out.
If you think there are other providers I should look at who can provide similar features and are priced competitively, please let me know.