1

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?

asked Oct 9, 2016 at 4:08

2 Answers 2

10

Never over architect from the get-go. You will spend most of your time on the architecture and not the actual business case you are implementing. (This is especially true if you are trying out a new architecture approach, like micro services)

When I start out with something new and especially something that I have no idea if anyone will ever use, I always go simple and quick. This does not mean you have to write crappy spaghetti code. As you said you still want to modularize your code and separate your concerns within your monolith so it is easy to factor out later if needed.

answered Oct 9, 2016 at 9:02
0

Certainly it makes some sense to modularise as you see fit for future expansion and management needs regardless of whether you end up deploying on one server buy as c_maker says, strike a useful and economic balance as far as your time is concerned.

That said I'd have at least 2 servers in there. You need a public facing one for the front end and anything else directly open to the clients. Everything else should be on a separate server preferably not in the DMZ, secured in a different (i.e. more appropriate) way and accessed by the front-end via service accounts. Minimise the code that goes on servers accessible to the outside world.

answered Oct 10, 2016 at 5:11

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.