-------------------------------------
Public Routes:
- API (nodejs / 1+ instances)
- WebSockets (nodejs / 1+ instances)
- Object Storage (proxy)
Private Routes:
- Redis (docker / cluster)
- RabbitMQ (docker / cluster)
- MySQL (standalone / cluster)
Hidden (connects to Public/Private routes):
- worker1 (nodejs)
- worker2 (nodejs)
- worker3 (nodejs)
-------------------------------------
In researching environments for hosting, I found 3 options:
1) VPS/Docker for each service
2) All services in a single Bare metal server
3) Kubernetes
There are downsides to each. But, looking at costs, bare metal server would be the most economical, and Kubernetes is way outside my budget.
My budget is roughly $100, and my time is just as limited.
The webapp is scale ready, but that's not very important if I have no users on launch day.
What environment recommendations do you have that would let me run such a configuration for my webapp?
Setup your servers using ansible, puppet or similar to lower the requirements for redundancy and backups (if you cant take a little downtime in case of accident)
If you're Europe based, one suggestion is to get two ~$50 servers from Hetzner and run all services in plain docker. (i.e. two servers for redundancy)
Depending on your setup and requirements, it might even be enough to have one server + a cheap CDN and in that case you might even be able to run the server at home or a friends office.
Better to package/run these as docker components on 2 beefy VM's w/ a LB from a provider like DigitalOcean, Vultr, Linode or Hetzner. You can pick up AWS etc, but be mindful of all the costs that add up.
Kubernetes is a no-no unless you have some level of proficiency in kubernetes, or are willing to invest the time.
For hosting, consider Heroku and Heroku add-ons for MySQL, Redis, and RabbitMQ. You could run workers in Heroku as well.
It would be possible to run this entirely in a VPS as well and fairly straightforward. I've also had success running the web app (with postgres and redis) in Heroku but the workers on a VPS.