2 bare-metals with Linux, Postgres, HAProxy and PHP (or Python/Django) work perfectly fine for 99% of apps that businesses need. This will run with 99.99% uptime, 4-hour warranty from Dell/HPE (failover to the other server). Is also somewhat vertically scalable (upgrade RAM/SSD). Kids who finish high school can be taught to own and run this.
But .... if you run a multi cloud hybrid setup with kubernetes, service mesh, data [lake|pond|ocean] and millions of other fancy words in tech at each and every layer, you resume would look so awesome and you sound wicked smart. And the VP gets 600M budget for AWS and 600 developers, SREs, DevOps, PMO. It is not that things won't run, humans have perverse incentives.
I'm certain a lot of porn/adult industry run their setup like I mentioned with a Romanian dude running the entire infrastructure for $15K - $20K.
In the old days 25 years ago, x86 hardware was the main source of unreliability.
Today x86 hardware is super reliable and unneeded complexity in the software stack is the main source of problems.
At work I use a tech stack written years and years ago in .Net that runs on a server we own in a colo. We use a CDN for some latency-sensitive serving, but almost everything is self-hosted. It's amazing how cheap it is for us to run a reasonably sizeable application.
Somebody I was talking to about a web app I wrote in Clojure asked me how I hosted it. He seemed surprised my answer was an $8/month VPS. That might be the wrong solution if it was going to have a million users, but it isn't.
This seems like the same phenomenon where desktop apps bundle a copy of Chromium.
> 2 bare-metals with Linux, Postgres, HAProxy and PHP (or Python/Django) work perfectly fine for 99% of apps that businesses need.
I agree. Simple and effective.
I would add a third small machine to give HAProxy a third vote. The problem with only two machines is that, if communications between them fail, you don't want both believing the other died and doing the wrong thing. You could use that third machine for Postgres backups, which would be smart because Postgress replication is not the same as backup.
Yes, that's my preference too and nobody can convince me that an AWS setup is better unless you have millions of users.
I think that a lot of devs just think they _have_ to do it that way, or they over-optimize too early and build the ultimate system before they even know if anyone will use the app or site.