Today I spent most of the day researching small cloud providers and “self-hosted PaaS” technology. This was triggered by a question that had been on my mind for a while: What is the minimum “cost-per-application” for production-quality containerized hosting?
What do I mean by that?
- cost-per-application: How much does it cost to host one application, two applications, etc.? Ideally, I would like to find the minimum price that will scale linearly.
- production-quality hosting: This obviously depends on the availability and performance requirements of the application. I will try to set the bar as low as possible in terms of availability and performance.
- containerized hosting: Basically, I want something like kubernetes, docker swarm etc. I won’t require a multi-node setup, but obviously that option would be nice.
After hours of research I have not found a good answer. But I have found some interesting technologies that seem worth checking out (in no particular order):
- [CapRover]() describes itself as “CapRover is an extremely easy to use app/database deployment & web server manager for your NodeJS, Python, PHP, ASP.NET, Ruby, MySQL, MongoDB, Postgres, WordPress (etc.) applications! It’s blazingly fast and very robust as it uses Docker, nginx, LetsEncrypt and NetData under the hood behind its simple-to-use interface.”
- dokku describes itself as “Docker powered mini-Heroku. The smallest PaaS implementation you’ve ever seen.”
- “mini-kubernetes” variants: k3s and microk8s – I like what k3s say on their site: k3s is great for “situations where a PhD in K8s clusterology is infeasible”
- apollo, which describes itself as “k3s in a CNAB” (CNAB stand for Cloud Native Application Bundle)
All of these seem to support running on a single, very small machine. Except dokku, all them are also able to be scaled horizontally when needed.
The two mini-kubernetes variants are really just tiny kubernetes deployments. But they seem to offer no abstraction or convenience for developers over regular kubernetes. Apollo seems to add some best-practices including logging and monitoring, on top of k3s.
CapRover and dokku seem to require less DevOps knowledge and seem to be targeted more towards developers. While dokku is doing its own thing on top of docker, CapRover seems to use docker swarm and states that once the application is up and running, CapRover is no longer required. Unlike the kubernetes-based tools above, these also facilitate database setup.
Anecdotally, these are the Google search result counts for each of them. Note: I did not include “apollo” in this, because there are just too many things called apollo on the net.
| search term | Google search results | site:stackoverflow.com | |—|—| | k3s | 226.000.000 | 10.100 | | microk8s | 700.000 | 3.160 | | dokku | 440.000 | 2.830 | | CapRover | 135.900 | 260 |
The results that are limited to stackoverflow seem a good first approximation for the popularity of each of these tools. The Google results for k3s seem a little too high because there are many unrelated things out there that use these the three characters as their name.