Finding a Cloud Provider for Personal Projects: A Journey
AWS versus Azure versus DigitalOcean: what was right for me.
When I say “cloud computing”, your mind may immediately jump to huge names like Amazon Web Services (AWS), Google Cloud Platform (GCP), or Microsoft Azure. My brain certainly did when searching for a home in the clouds for one of my personal projects. Here’s my journey navigating the internet to find that just-right Cloud Computing Platform.
Let me set the scene: July 2020. The COVID-19 pandemic is in full swing, and there I am, a bored software engineer with plenty of extra time on my hands outside of work. I decide to take on a personal passion project to fill the void; as Chaucer says: “Idle hands are the devil’s workshop.”
After getting my first iteration up and running, I decided to turn my attention to infrastructure. Through my career as a software engineer, I had a lot of experience with AWS products and services, so I decided to use that as a fallback option and entered the exploration phase of different cloud providers. Here were some of my criteria for judging how well a provider would work for me:
- Price: given that this was a small passion project, I really did not want to be spending a lot of money per month to keep this thing running.
- Service offerings: I was very opinionated about the services I wanted to be using (e.g. hosted Kubernetes, simple load balancing, certificate management, public DNS management, etc.)
- Simplicity: I wanted to reduce the ease of setup and maintenance so that things would be easy to get up and running and I wouldn’t really need to spend a lot of effort to keep things running long-term.
Charting the Azure sea
At the time, I was still a student pursuing my Master’s of Engineering degree in Computer Science at the University of Colorado at Boulder; because of this, I was eligible for the Azure for Students credit, making Azure a pretty attractive option. In addition, some quick research told me that Azure had all of the services I wanted off the bat.
However, once I really dove into the Azure sea, I found their service offerings to be quite complex. Resources would be tied together inextricably in some cases, which made it difficult to spin up and spin down experimental resources quickly and iterate on what the best infrastructure setup would be. In addition, the entire platform seemed best suited to large companies with fairly segmented teams, given the complex structure and authorization schemes built into the services, and definitely not geared towards my single-user, small personal project.
In addition, Azure was fairly pricey on a per-month, pay-as-you-go plan. With the following setup:
- 1 AKS cluster with very basic, small nodes (1 vCPU, 2 GB RAM, etc.)
- 1 Azure Container Registry (ACR) to host container images
- 1 Load balancer
- 1 Azure DNS zone
the estimated cost was around $85/month, which would have quickly run through my Azure for Students credit.
Hiking through the Amazon
After hours of experimentation and frustration with Microsoft Azure, I decided to do a quick sanity check on a provider I was familiar with: Amazon. I had worked with AWS a lot in my role as a DevOps engineer, so the platform was something I was comfortable with and had experience in. There was just one problem: cost. As an engineer, I tended to leave the cost and pricing decisions to the product manager and stayed focused on the engineering rather than optimizing costs.
My hike through Amazon was very short-lived after a single estimate using the AWS Pricing Calculator; a single Elastic Kubernetes Service (EKS) cluster alone at on-demand pricing would end up costing $73/month. And that was solely the cluster, let alone any additional costs from load balancers, image hosting, or certificate management! Definitely a bit more than I was willing to stomach for my small personal project.
Sailing the DigitalOcean
It was around this point in my journey that I was reconsidering my architectural decisions. Should I simply spin up a single EC2 instance and run a small container on it? Wouldn’t I want a load balancer? Do I even want to serve the gateway over HTTPS and deal with certificate signing and management? I was internally weighing the pros and cons of vastly simplifying my service architecture to save on cost when I remembered a provider that one of my colleagues had mentioned to me a while back: DigitalOcean. I thought, what the hell. There’s no harm in at least checking it out.
Some quick research confirmed that DigitalOcean checked off a lot of the boxes of what I wanted: a managed Kubernetes service with public-facing load balancers, a certificate management system, a public DNS management service, and a simple private container registry. The platform even provided simple monitoring and alerting for basic metrics at no cost, which satisfied the DevOps section of my brain.
A quick pricing check using the DigitalOcean Pricing Calculator also confirmed another box getting checked off. A basic setup (with room to scale if necessary) would end up costing only around $30/month.
I was totally ready to jump in now that the water seemed fine, and was pleasantly surprised to discover how developer-friendly the platform was with its user experience, APIs, and documentation. The simplicity of spinning up and down resources made experimentation and iteration a breeze and allowed for flexibility when connecting various parts of the system together.
The platform even allows for free SSL Certificate management (including automated rotation) through LetsEncrypt for domains managed through DigitalOcean DNS, which was perfect for my eventual hands-off passive approach to maintenance. The managed Kubernetes upgrades are seamless and automated, and the metrics that are provided from all of the services are fairly comprehensive and accessible. I was able to start from the ground up and get traffic flowing to my new application gateway in around 90 minutes and since then have maybe spent a total of 4 hours across a couple of years adjusting my infrastructure in the console to meet needs or manage upgrades.
After much exploration and journeying throughout the internet to find that perfect cloud platform, I finally landed on DigitalOcean. DigitalOcean gave me the flexibility to experiment with different services and product offerings and the simple and accessible user experience of the platform really catered to my single-person workflows. In addition, the cost comparisons to other, larger cloud providers really tilted the scales towards DigitalOcean as my cloud provider of choice.
This article makes use of affiliate links; I may earn commission through purchases or referrals through the links in this article.
Using any of the referral links to DigitalOcean will give you $100 in DigitalOcean credit over 60 days, and if you spend $25, I’ll receive $25 in DigitalOcean credit to use to offset the costs of my own personal projects.