UPDATE 2014-04-17: This post is now largely obsolete as Linode announced some big changes. I’m keeping it around for old times’ sake.
When Linode announced their 2013 NextGen upgrades, some people commented that this was high time because Digital Ocean had surpassed them in almost every aspect and was rapidly becoming a fierce competitor. Note that I am not specifically quoting anyone here. I might be overstating a little. Still, being the loyal-but-not-quite-stupid Linode customer that I am, I set up a demo account with Digital Ocean to see what was up. Maybe I could save me some money by going with the admittedly cheaper alternative.
Turns out I was overstating after all…
Before diving into a quick and dirty comparison, I would like to point out that
- there are so many hosting providers out there that I will have to restrict myself to this single one. Totally unfair, I know.
- I have specific needs (or just irrational wishes?). If a hosting provider doesn’t match these, that doesn’t mean they’re no good for others.
- I’m only comparing these two providers because of some comments I read (scroll down a tad). I am not really interested in switching providers.
Now for the real thing. There are a number of reasons not to opt for Digital Ocean even before going on a trial run with one of their virtual machines. Most notably, their website, to me, feels like the company are profiling themselves as oriented towards tinkerers on a budget who really dig Linode big time.
… But they don’t use Xen. Instead, they’re going with KVM (QEMU), which at the time of writing means that you cannot use your own kernels (they are adding this feature soon, though). Linode has had the ever-wonderful pv-grub for years.
This also means you can’t say “I am hosted on Xen!” Really, I like Xen for its name. I can’t do KVM. For an apparent Linode clone, this is an interesting choice of virtualization technology.
But even if I could set my aestethic problems aside and also run my own kernel, Digital Ocean falls short. Yes, they are also significantly cheaper and they are definitely still working hard on improving their infrastructure. But I am writing this now, and right now I am missing some biggies in their list of features. I’m also not sure I like how they’re scrambling to add (almost) everything Linode can already pride themselves over, FOR HALF THE PRICE.
Anyway, so here’s a condensed list of things that stung me as I had a go at their virtual machines.
- They do not offer an openSUSE image for you to deploy. This single-handedly turned me away. (Really, it did, there is evidence that I like them.) For you not to have an openSUSE image is for me not to host with you. Yes I’m making a big deal out of this. Peh.
- They do not yet support IPv6. Wut?!
- They do not yet offer private networking, so no hogging with all your happy friends.
- Their Europe-based datacenter keeps running out of IPv4 addresses. Seems that the Internet Protocol is tricky to get working under water (this is my idea of a funny reference to the name Digital Ocean, didn’t work).
- You can’t roll your own images, so I can’t run my fave distro (or FreeBSD!). At least, not in an officially documented way. The shared kernel is also a limiting factor here.
- They don’t have Lish. Come to think of it, neither do they have Lassie or Finnix. Yeah, Linode is sure big on cuddly pet names for kicker services.
- I don’t think they have something like StackScripts either. I never used them and don’t plan on using them, but if you’re a hosting provider whose frontpage starts by saying “Built for developers”, then I say you should have something like this.
So is Digital Ocean a sub-standard hosting provider? Nay!
- They are cheap.
- They gave me a free trial that will last me a month on their 1 GB plan, which is mostly why I am writing this post. Much better than Linode’s “spend four hours with our premium services, then pay our premium fee” approach.
- They offer free backups (that is really absurdly cool).
- They even have off-site backups.
- They are certainly innovating ’round the clock. Maybe too much so?
- Their KVM-based virtual machines are very fast to reboot, minimizing downtime and, more to the point, agitation on my end.
- KVM in general is very efficient (but see below for processor limitations).
The problem is, I’d rather run my own backups if that future-proofs me (IPv6), allows me a single point of definition (DNS Manager) and gives me more control over my virtual machine (Lish, Finnix, pv-grub). Frankly, Linode was getting a wee bit rusty and slightly too elite, money-wise, but the recent NextGen upgrades made up for a lot of it. I, like many, was especially thrilled about the RAM and network upgrades. The UK Linode infra is a friendly thing. The Dutch (woohoo!) Digital Ocean facilities are great too, if only they could stop running out of IPv4’s.
So then, there is one thing about Digital Ocean that, as far as game-changers go, is rather a hefty asset. It can best be described as follows:
THEY OFFER SSD CLOUD HOSTING!!!
Shocking. Or is it? Let’s see.
For this to be as fair as possible I’ll use Leonard’s Linode as it is running Arch Linux latest.greatest (2013.04 no doubt) and that is something Digital Ocean provides as an image, so I’m in luck. For your reference:
root@do:~# cat /proc/version Linux version 3.8.4-1-ARCH (tobias@T-POWA-LX) (gcc version 4.7.2 (GCC) ) #1 SMP PREEMPT Wed Mar 20 22:10:25 CET 2013 root@do:~# free -m | head -2 total used free shared buffers cached Mem: 998 56 942 0 4 23 root@linode:~# cat /proc/version Linux version 3.8.7-1-ARCH (tobias@T-POWA-LX) (gcc version 4.8.0 20130411 (prerelease) (GCC) ) #1 SMP PREEMPT Sat Apr 13 09:01:47 CEST 2013 root@linode:~# free -m | head -2 total used free shared buffers cached Mem: 991 859 132 0 148 473
Hard disks first. I’m not going to run extended benchmarks, and timing the execution of certain I/O-intensive commands isn’t fair because of differences in CPU, filesystem, percentage of free space, and a jolly lot of other things that could be dismissed as silly excuses for my lack of scientific evidence. Suffice it to say that for device reads, which is what I mostly care about because it makes your disks look real fast, there is a bit of a difference:
root@do:~# hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 868 MB in 3.00 seconds = 289.29 MB/sec root@linode:~# hdparm -t /dev/xvda /dev/xvda: Timing buffered disk reads: 410 MB in 3.02 seconds = 135.57 MB/sec
It should be noted that Linode’s disk performance is still top-notch, and they use real, reliable disks. I find that a comforting thought. You’re also not the only guest on their host machine, so these speeds are not bad at all. It’s not that Linode is just as fast as Digital Ocean, it’s that I’ve never found myself wishing for quicker I/O. That said, I’ve seen device reads of up to 700 MB/s on my virtual machine, so you definitely don’t have to be ashamed.
Long story short: Digital Ocean wins here, but I/O has never bothered me unless performing a full filesysstem search. But Linux is good at caching, so even that isn’t a big problem.
Then the CPU. Digital Ocean isn’t exactly forthcoming with model numbers. According to them they’re using “Intel Hex Cores”. Aha. Linode used to have dual Intel Xeon L5520 CPU’s, among others, and the NextGen upgrade upped this to a dual Intel Xeon E5-2670 setup. Let’s do a PHP benchmark.
-------------------------------------- | PHP BENCHMARK SCRIPT | -------------------------------------- Start : 2013-04-22 11:43:42 Server : Digital Ocean PHP version : 5.4.14 Platform : Linux -------------------------------------- test_math : 1.429 sec. test_stringmanipulation : 1.511 sec. test_loops : 1.078 sec. test_ifelse : 0.786 sec. -------------------------------------- Total time: : 4.804 sec.
-------------------------------------- | PHP BENCHMARK SCRIPT | -------------------------------------- Start : 2013-04-22 13:41:15 Server : Linode PHP version : 5.4.14 Platform : Linux -------------------------------------- test_math : 2.051 sec. test_stringmanipulation : 2.066 sec. test_loops : 1.297 sec. test_ifelse : 1.096 sec. -------------------------------------- Total time: : 6.51 sec.
So Digital Ocean is way fast. But there’s one problem:
root@do:~# cat /proc/cpuinfo | grep processor processor : 0 root@linode:~# cat /proc/cpuinfo | grep processor processor : 0 processor : 1 processor : 2 processor : 3 processor : 4 processor : 5 processor : 6 processor : 7
These might be “Intel Hex Cores”, but you get an “Intel Uni Core”. A speedy uni-core for sure, but a uni-core no less. I’d rather spend 650-700 ms serving eight requests than 8 × 480 ms = 3840 ms serving the same eight requests in a nice queue. (Yes that was a bit twisty, sorry.) I don’t really serve eight concurrent requests on a regular basis, but more cores are useful in other scenarios too.
GeekBench agrees with me:
Yes, Digital Ocean is cheaper, but a single-core solution is equally as outdated as a solution featuring 512 MB RAM. Also, for perfect clarity, these “cores” are really threads. But cores sounds better. I guess that’s where the “Hex Core” statement came from.
And finally, the network. Again, I’m talking Linode NextGen here. The previous hosts appeared to have a bit of a bottleneck or hard cap in this regard.
root@do:~# wget http://speedtest.newark.linode.com/100MB-newark.bin --2013-04-22 12:07:23-- http://speedtest.newark.linode.com/100MB-newark.bin Resolving speedtest.newark.linode.com (speedtest.newark.linode.com)... 188.8.131.52, 2600:3c03::4b Connecting to speedtest.newark.linode.com (speedtest.newark.linode.com)|184.108.40.206|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 104857600 (100M) [application/octet-stream] Saving to: '100MB-newark.bin' 100%[================================================================================================================================================================>] 104,857,600 39.4MB/s in 2.5s 2013-04-22 12:07:26 (39.4 MB/s) - '100MB-newark.bin' saved [104857600/104857600] root@linode:~# wget http://speedtest.london.linode.com/100MB-london.bin --2013-04-22 14:05:06-- http://speedtest.london.linode.com/100MB-london.bin Resolving speedtest.london.linode.com (speedtest.london.linode.com)... 2a01:7e00::4b, 220.127.116.11 Connecting to speedtest.london.linode.com (speedtest.london.linode.com)|2a01:7e00::4b|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 104857600 (100M) [application/octet-stream] Saving to: ‘100MB-london.bin’ 100%[================================================================================================================================================================>] 104,857,600 40.2MB/s in 2.5s 2013-04-22 14:05:08 (40.2 MB/s) - ‘100MB-london.bin’ saved [104857600/104857600]
Very much up to par. I’d have liked to use Digital Ocean’s Amsterdam facility, but alas it ran out of IP’s for the cheaper plans.
So, to shorten a thoroughly long story:
If you are very much into rapid storage and/or low-cost machines, then Digital Ocean is your thing. If you are into anything else hardware- or service-related and you don’t mind the extra $10/month ($15/month including backups), then Linode is the answer, as it has been for years. Time will tell if I’m still here in another two years.