After 11 years in the industry, Node.js, SQLite and Bash (for automation/deployments) hosted on a single VPS is my go to stack.
Arguments for:
- You can get a LOT of mileage out of vertical scaling.
- Automated testing with SQLite is a dream. You can spin up and tear down hundreds or thousands of in memory database instances in under a second.
- Extremely low hosting costs.
- In my experience, most VPSs have > 99.8% uptime.
- A simple, comprehensible stack that can run locally = improved velocity and DX.
- Less infrastructure = lower risk of making a blunder and having a security misconfiguration. Not to mention less time creating, testing and maintaining infrastructure.
- Having no requirement...
After 11 years in the industry, Node.js, SQLite and Bash (for automation/deployments) hosted on a single VPS is my go to stack.
Arguments for:
- You can get a LOT of mileage out of vertical scaling.
- Automated testing with SQLite is a dream. You can spin up and tear down hundreds or thousands of in memory database instances in under a second.
- Extremely low hosting costs.
- In my experience, most VPSs have > 99.8% uptime.
- A simple, comprehensible stack that can run locally = improved velocity and DX.
- Less infrastructure = lower risk of making a blunder and having a security misconfiguration. Not to mention less time creating, testing and maintaining infrastructure.
- Having no requirement for horizontal scalability simplifies implementation a great deal.
- Your bash scripts and database queries will still work in 20 years.
- I could go on...
Optional, useful add-ons:
- S3 (or alternative) for assets & things like DB backups (2 lines of bash).
- CDN for improved asset load times.
- Separate VPS running Grafana/Loki.
"BUT THIS WON'T SCALE!"
If the magic day comes where you have thousands of concurrent users, and after exhausting caching and optimisation possibilities, NSBV can no longer keep up, congratulations! You have a successful product, and with it, revenue, business buy-in or an easy journey to raising venture capital. THIS is the time to start investing into horizontal scalability.
"WHAT IF THE SERVER GOES DOWN!"
Calculate the cost of ~30 minutes of downtime. Now compare it to the cost of hiring (arbitrarily) 2.5 more engineers to compensate for the lost velocity of a complex architecture and extra SRE overhead. Unless you're building something seriously important, the likelihood is that downtime is an optimal outcome, and good value for money.
Keen to hear your thoughts, if anyone can think of a better name than NSBV, and if anyone would find a template repo useful.