In Part 2 I will take a look at the more subjective measures of what I'm looking for in a developer-focused cloud product.
My decision will be based on some intangibles and things that are important to me. My choice will be biased towards my preferences and whether I think I can be successful with a specific stack, as well as a little bit of guessing to predict my future needs, and future plans of the cloud provider.
Developer vs Techie
Too many people confuse the needs of developers from those of general tech-types. The developer is not just looking for hosting, they are looking for a platform to build on. The developer is not interested in hand-tuned configuration or heavy UI involvement.
The target market of hosting providers becomes clear when browsing their product offerings. You can infer a lot about a company and its strategy simply by watching what it works on.
I will lean heavily towards developer-centered offerings. Some providers focus more heavily on operations, sysadmins, and IT folks. I think there is good to be found in the balance between developer-centered and hardware/IT centered approaches.
I will use the following three point scale for my ratings.
Breadth of Features
The more tools a provider brings makes development and operations simpler, and should be reflected in a faster time-to-market and improved quality. These measures will contribute to my scoring, unfortunately the measures themselves are biased towards my needs. For example, Windows support does not affect my rating one way or another, because that feature is just not important to me.
|DDoS Protection||No||10Gbps +$10||No||Yes|
|Automated Backups||Yes +$5||Yes +$5||Yes +$5||Yes +$5|
|Object Storage||Yes||Yes||Yes||Limited Availability|
|Load Balancer||Yes +$10||Yes +$10||No||Yes +$10|
|Private Network / VPC||Yes||Yes||Yes +$5||No|
Feature Comparison Results
DigitalOcean is no surprise here, their product catalog is much larger than the others, and they have a much more mature developer offering, including managed databases which really will help keep data safe. Their only failing is a lack of any suitable DDoS protection, which is easily mitigated using a CDN/Edge proxy like Cloudflare.
Vultr is in the middle of the pack here. They lack a managed database offering, but do provide object storage, load balancing and private networks. For mid-size companies who need connectivity into existing environments, Vultr offers great options for direct connect, which is a differentiator.
I just had to ding UpCloud for a lack of load balancing. Sure we could setup our own software load balancer, but that just takes time and energy from other things. On the positives, I really do like UpCloud's laser focus on performance and high quality core infrastructure. I think the product feature fit for me is just not as good as the others.
Linode almost got an OK here but I upgraded to a Good because of their managed Kubernetes offering. I think they are (finally) coming around to becoming a place for developers, not just a VPS hosting provider. Their public roadmap includes several interesting offerings including private layer 2 networks (VLAN), and a Cloud Firewall.
At the time of writing, these are the available regions for the providers. I've grouped data centers within similar metropolitan areas.
|N. West||🇺🇸 Silicon Valley (SFO, SJO, FRE)||✅ ✅ ✅||✅||✅||✅|
|N. America West||🇺🇸 Los Angeles, CA||✅|
|N. America West||🇺🇸 Seattle, WA||✅|
|N. America Central||🇺🇸 Chicago, IL||✅||✅|
|N. America Central||🇺🇸 Dallas, TX||✅||✅|
|N. America East||🇺🇸 New York (NY/NJ)||✅ ✅ ✅||✅||✅||✅|
|N. America East||🇺🇸 Atlanta, GA||✅||✅|
|N. America East||🇺🇸 Miami, FL||✅|
|N. America East||🇨🇦 Toronto, ON||✅||✅||✅|
|Europe||🇫🇷 Paris, France||✅|
|Europe||🇩🇪 Frankfurt, Germany||✅||✅||✅||✅|
|Europe||🇬🇧 London, UK||✅||✅||✅||✅|
|Europe||🇪🇸 Madrid, Spain||✅|
|Europe||🇫🇮 Helsinki, Finland||✅ ✅|
|Europe||🇱🇺 Amsterdam, Netherlands||✅ ✅ ✅||✅||✅|
|Europe||🇮🇩 Warsaw, Poland||✅|
|Asia Pacific||🇯🇵 Tokyo, Japan||✅|
|Asia Pacific||🇰🇷 Seoul, South Korea||✅|
|Asia Pacific||🇸🇬 Singapore||✅||✅||✅|
|Asia Pacific||🇦🇺 Sydney, Australia||✅||✅|
|Asia Pacific||🇮🇳 Bangalore, India||✅|
|Asia Pacific||🇮🇳 Mumbai, India||✅|
Global Availability Rating
Vultr is the clear leader when it comes to general global availability. They don't have perfect global coverage compared to large public clouds, but excellent US coverage which allows compute to be pushed closer to the edges. Or in my case, putting development machines closer to home.
You can tell DigitalOcean does not emphasize global availability, opting to focus on a few locations. Great if you live on the US coasts but basically anywhere else is not well covered.
UpCloud has better US coverage than DigitalOcean, but it is primarily an EU-focused offering. If there were more US locations or broad global coverage I'd increase the score.
I put Linode in the middle because it certainly doesn't have the breadth of options of Vultr, but it has good US coverage, and a footprint in all major regions.
An important part of my infrastructure strategy involves Kubernetes. I want my apps to be relatively portable across infrastructures, and I prefer the Kubernetes control plane over cloud providers for interacting with my environment.
Kubernetes Support Rating
I'm a little generous here to Vultr and UpCloud by saying OK. They do not provide any managed k8s offering, so I would be on my own in running Kubernetes. I'd probably use k3s or microk8s, or maybe try eks-d, but I'd be at a severe disadvantage having to self-manage this.
DigitalOcean has the more mature Kubernetes offering, I've been using it for a couple years now, and it has been flawless for my modest needs. Linode is the newcomer here that I will be taking for a test drive soon.
Both DigitalOcean and Linode offer block storage, load balancer, and DNS integration in their Kubernetes offerings. And both provide a free control plane, so I only have to pay for worker nodes. For EKS and GKE it's $75/mo per cluster, which destroys my shoestring budget right off the bat.
So where do we stand in the shootout? Here's a summary of results, mapped onto a simple 3 point scale.
I don't have enough time to spend evaluating all four options completely. I've learned enough to know that Vultr and UpCloud just aren't ready for me and my development style yet.
I really have nothing but good things to say about their products though. The whole process of signing up to creating instances was everything that I would expect from a modern cloud. There were also other factors that I could have included in my analysis but they just weren't relevant to my needs.
The decisive issue was really that I'd have to run my own Kubernetes control plane. And that is just something I'm not prepared to take on, and Kubernetes is just too central to my flow to eliminate. Even keeping my own home lab k8s running is a challenge enough, there's no way I could take that to production.
There are no goodbyes, only see you laters. I hope the future brings even more developer tools to these clouds including Kubernetes support.
Next Steps: Infrastructure as Code
Next up I will be standing up a Kubernetes cluster in Linode with Terraform.