(Only if you are interested in the boring details…)
To make a rough estimate of what a public cloud equivalent of the Bargain Cloud Project would cost, let’s look at two other options: Heroku, which would save me from all of the effort do doing my own system administration, and AWS, which would be no easier than Hetzner and would only save me the effort of buying an colocating a server here in Australia. Using my Hetzner server as a baseline, and assuming that it is split evenly between compute and database, that would mean comparing to the 8 vCPU / 32 GB RAM option from each of these vendors, and then adding in 1TB of mirrored SSD for the database and 10TB of mirrored disk to support file storage for the compute node.
Starting with Heroku, one of the main features they provide is autoscaling. This means that when your servers are idle, you don’t pay much at all, but you can automatically spin up new servers as load increases. I’m not going to consider autoscaling in this comparison, because I’m more interested in costs when I actually have regular traffic. That’s because I’m much more price sensitive when costs are high than when they are low - I’m not too concerned if I spend a hundred dollars more while I have little traffic - that’s something I can easily absorb. I am however VERY concerned if costs blow out by thousands of dollars a month when traffic is high - that would ruin me!
Heroku and AWS CPU performance are both measured in “compute units”, which make it difficult to find a meaningful benchmark that could be compared to my server. What is easy to compare however is memory and disk, so I will work with that, since those are also real constraints that would determine the minimum configuration that might be able to match the Hetzner server.
Let’s assume that half of each of my servers will be busy with database processing and the other half will be given over to VMs or reserved for the host machine - so 32GB for a Postgres VM, and the remaining 32GB split 4 ways with 8GB each for 3 VMs and the host - so a total of 24GB usable RAM for compute VMs. Heroku does not have an 8GB Dyno type, but lets assume that it might suit my purposes to have a 14GB performance-l Dyno for an app server, and 4 x 2.5GB performance-m Dynos. The performance-l Dyno would be $500/mth and each of the 4 performance-m Dynos would be $250/mth. That adds up to $1,500/mth, or $18,000/year for the equivalent of each server, or $36,000/year for both, seeing that I am aiming to have rapid-recovery standby machines. And that is just for compute…
We also have to consider the database. Heroku has a fully managed Postgres service, and the closest to a 32GB RAM / 1TB SSD version of that would probably be the “Standard 4”, which is $750/mth, or $9,000 year per server, or $18,000/year in total. That makes for a total of USD$54,000/year for compute and database combined. That is more than 14 times the annual cost of The Bargain Cloud Project! And in fact, even if I could afford to spend $54,000 a year (and I can’t), some of the tools I intend to run such as Postfix, Dovecott, and OnlyOffice are not a particularly good fit for how Heroku Dynos work - I’m not even sure it would be possible to run them on Heroku at all?
What about AWS then? There is actually an AWS EC2 instance type powered by AMD Epyc processors, which are quite similar to the AMD Ryzen process in the Hetzner server I am renting (both are based on AMDs Zen cores). The 8GB ram version of that is the m5a.large, which has 2 VPUs which is also very similar to the number of hyperthreads each compute VM will have in The Bargain Cloud Project. Having a quick look at the AWS price calculator, 3 of these VMs equipped with 1TB of SSD storage (with reserved iops) and 1TB of data transfer each would be USD$1,093 for the AP-Sydney region, and 3 VMs in EU-Frankfurt would be USD$1,044, for a total of USD$2,137/mth or USD$25,644/year, and that is without adding in 10TB of mirrored HDD storage on each cluster.
For database, there is the Amazon RDS service, which can provide a fully provisioned Postgres instance in much the same way as Heroku does. There is a 4 core, 32GB RAM / 1TB SSD version of that called the db.m5.2xlarge which seems like a reasonable approximation of half of the Hetzner AX51-NVME. It’s USD$500/mth in Sydney and USD$442 in Frankfurt just for the VM, and another $138/mth in Sydney and $137/mth in Frankfurt for 1TB of SSD storage. There is an additional and not inconsiderable charge for provisioned IOPS, and considering the AX51-NVME has directly attached m.2 NVME drives, I presume the equivalent amount of AWS IOPS would best be characterized as “a lot”. But I won’t bother trying to calculate it, seeing that the cost for 2 of these Amazon RDS instances is already up to USD$14,604/year.
That is a total of USD$40,248 without including 20TB of HDD storage and “lots” of provisioned IOPS - oh, and VM and database snapshot storage too, which really adds up. And while that is over 10 times the cost of The Bargain Cloud Project, and therefore once again a complete deal-breaker in terms of my personal budget, my biggest objection to the AWS option is “for what?”. What does AWS give me the the Bargain Cloud Project doesn’t? Actually it’s only about a 10% reduction in the work I have to do because I don’t need to set up a host hypervisor to run VMs. And while Amazon RDS does take away the need to manage a Postgres database server, there are things I want to do with replication and failover that I simply would not be able to do on Amazon RDS, but I can with the Bargain Cloud Project.