I’ve been writing bits and pieces of code and side projects for years now – it’s the fun side to professional development. Recently I’ve tidied up some of the projects and got them published to live where they can roam free and prosper.
Anything that is purely client side can go up on my WordPress hosting site at Hostinger. So, Game of Life and Where’s Kitty are currently there. The Buddhist texts API does have a backend (it’s all backend) so needs a full cloud hosting solution fulfilling the following requirements …
- Well-documented with decent support
My first deployment will be Docker containers but thereafter I want the potential to extend to try out different deployments / tech stacks. I chewed my pen and furrowed my brow for a bit and eventually chose Digital Ocean. Here is why
I was intending to deploy it to Azure initially. I’m familiar with Azure, fits into my technology stack and any more experience with it looks good on a CV. Moreover, there is a heap of options for deploying containers.
At first glance it looks affordable too. You get $200 free service up front and there are some services that are perpetually free such as Linux-based applications on App Service. Digging deeper though, the app service isn’t used for containers and that’s what I want.
If I going to use Azure, then I’m going to have to pay. For instance, if I want to spin up the cheapest VM with Linux and keep it up 24/7 then I’m going to pay USD 14.95 per month. That’s way more than I want to spend. I need to keep looking.
My feeling is the big 3 are great if you are actually selling your software and making money. For people like me who are just running side projects which are unlikely or impossible to make money from, the cost is too much. I need to look at the next tier down.
Heroku is a Platform as a Service hosting company and is popular for node hosting. As I’ve an app or two that use node that I might want to publish one day then this seems like a good option. Heroku doesn’t support ASP.NET Core natively but there is a build pack that can add this. It does (of course) support containers and my first deployment is containerised so that’s not a problem and I’m OK with containerizing all my ASP.NET Core apps anyway. It’s in my price bracket too.
The only blemish really is, because it’s platform as a service, the deployment of docker is a bit more abstracted than I’d like – use of heroku.yml etc… Really, I just want to use Docker as is. In my heart, I want to be closer to the metal which leads us onto ….
Digital Ocean is an affordable infrastructure as a service offering. You can buy Linux VMs (called droplets) for as little as USD 5 a month. This is really what I want – a cheap Linux box that I can do what I want with. You can get them with Docker preinstalled and then it’s really straightforward to pull your images down from Docker Hub and publish. And because it’s my very own pet Linux box I can do what I want with it thereafter – node, nginx, whatever. If I completely trash it, I can reset it and start again. Lovely.
The other upside is that Digital Ocean also has a platform as service aspect which directly competes with Heroku. A minor downside is that there are only Linux boxes available, but unless you are working with .Net Framework (or something older) then this shouldn’t be an issue.
So, the droplet is bought, and the Pali-Canon API installed. I thought because it’s just a single Linux box it wouldn’t be that reliable and it would be up and down like my dog jumping for treats. But the API has been up now for over a week, and it is loyally serving up quotes like it should. In any case, it’s not exactly a mission critical application. If it was then I would be back looking at Azure or one of the other big 3.
So overall my feeling about this is
- Azure/ AWS / Google Cloud Service: Gold standard. For high available and reliability then it’s these guys. You’ll almost certainly pay a bit though even on the cheapest tiers.
- Heroku: Great platform as a service if you don’t want to manage your own infrastructure
- Digital Ocean: Great infrastructure as a service if you are happy to manage your own infrastructure. Also directly completes with Heroku in the PaaS space
There are a lot of cheaper options out there as well. Personally, I’m happy to pay a bit for a good service so I wouldn’t go cheaper. You pay for what you get.