I have decided to start building a SAAS app. I wish to keep hosting costs low initially, whilst still providing a good user experience. Here are the components that will make up my app:
- Front End
- Reverse Proxy (Nginx)
- Auth Service
- Web API
- Worker Service A (processes data imports)
- Worker Service B (makes batches of external API calls)
All requests will go through the proxy, and auth will be handled via JWT.
I initially thought I would have all of these components on separate servers, but looking at hosting providers and pricing, that seems like an expensive option starting out (especially with 0 paying customers).
So it seems a cost effective way to do this would be to use a single server. Essentially each component would just be a separate piece of isolated code. Using this approach, I would still use the reverse proxy, and still use JWTs for auth - I feel like that way everything can be moved to separate servers more easily in the future.
What are the drawbacks of a single server approach like this (aside from the obvious monolithic negatives)?
Assuming this is an acceptable approach starting out, is using a service like Elastic Beanstalk enough in terms of handling High Availability?