Honestly, spending $200/mo is insignificant to me. And I'm pretty happy to answer the question of "Why can this guy build this thing on a single VPS and you can't?" with "Well, because he's better than me".
I can be up in 15 mins on Heroku with a Rails+React web app. And in an hour have a thing. Or for a static no-login thing, faster with Netlify.
But it doesn't matter. Because I never made a product as nice as the one he made. If the outcome is I'm -$200/mo that is irrelevant to me. If the outcome is I'm +$50k/mo that is very relevant. So I'm going to optimize for how I can do the latter.
Its an aside, but the mentality of "let them figure it out" is a major issue in education. Foundational knowledge should be easy to acquire so I can worry about higher level thinking issues. Literally spending hours trying to figure out how to set things up through hours of Googling doesn't really help that, nor does it promote the "figuring it out" people think it does - its just stumbling upon the right set of commands that let me move past this particular hurdle.
From the devops perspective, what about telling someone how to set up their own server to do/minimize X is so taxing?
- cloudflare free tier for caching, DNS, page rules, etc
- run everything on one VPS(digital ocean, linode, etc) pick cheapest that has specs you need
- any non-trivial storage (media, big files) move to Backblaze B2 it's cheap (you can use free tier cloudflare workers to redirect to B2 for free bandwidth due to Bandwitdth Alliance)
- free static page from Netifly (I can redirect to this with cloudflare in case my VPS falls over or something to provide info/links)
- If I want to look at logs or something I rsync it my local machine (if I cared I could set up a process to push logs/backup etc to private B2 bucket)
You may not need exact same setup, I am optimizing for caching and cheap storage because my site stores/serves lots of media files.
That's basically all of software development for your entire career. Never not had a day or a week not like that.
Here are examples of what I mean:
- An undergraduate Networking/Security course may not provide practice on appropriately salting passwords. It is merely discussed as part of some larger conceptual model. Students are browbeaten in earlier courses to not simply copy/paste code they find on the internet
- Debugging practice has to come from the student's own generated code, but if they made a mistake, they already are showing they do not fully grasp the material. There have been efforts to explicitly train debugging [1] but they are still in early stages of researching their benefits.
[1] The Code Mangler - https://dl.acm.org/doi/pdf/10.1145/3017680.3017704
I wouldn't want to read (or write) that code, but thanks for the article.
A major subtopic of this thread is "different situations call for different setups."
Saying "I won't work with PHP" is like saying "Gluten will make me shit my brains out." It is not virtue signalling.
Step 1:
Copy Peter Levels stack:
https://www.nocsdegree.com/pieter-levels-learn-coding/
If he serves hundreds of thousands of monthly users and makes a million a month with a single VPS, you certainly won't have scaling issues when you start out or just have tens of thousands of users.
Step 2:
If you really scale beyond that, resist the urge to bloat your stack. Think long and hard about every piece you add to it. Really understand each piece you add to it. Don't fall into the trap of paid services. Don't fall into the trap of "best practices".