Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm a software developer with experience setting up hosting environments for small applications and no more than 5k hits a day type of traffic. I just built a SaaS application and I'm wondering how to setup and plan my server configuration to scale and grow with the business. I want to do this right from the beginning and so I need advice on the proper way to setup and host a SaaS web application.

The info:

  • SaaS website application, will be the primary website for the business, so it will need to handle that kind of traffic.

  • Single and separate database for every site. (there are specific reasons it's not a single database for all sites)

My thoughts:

  • Could setup on largest AWS server and host hundreds of sites on a single instance? If so, should I use the largest memory server or CPU? I'm caching a lot of data, so I tend to think memory.
  • Could setup Amazon aws smaller servers and load balance across the stack?
  • Should I setup database on the actual webserver itself or should I do that on RDS?
  • Should I even use Amazon?

Thank you for your time and help.

share|improve this question

closed as too broad by DanBig, Nathan C, sciurus, mdpc, Ward Sep 26 '13 at 17:16

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs. If this question can be reworded to fit the rules in the help center, please edit the question.

    
Have you read our FAQ? –  Nathan C Sep 26 '13 at 16:06
    
Where is the appropriate place to ask a question like this? It's an honest question and I just need some input. Sorry if that doesn't fit the exact format of the site. –  FAtBalloon Sep 26 '13 at 17:38

1 Answer 1

No.

The largest AWS server is a bit of a strange beast. A strange and expensive beast.

What you want to do (or rather, what I'd do in your position) ...

Break your application into services, and then start servers to run those services.

A service should be able to communicate with other services over some kind of scalable communication bus. HTTP is a good choice, RabbitMQ is an alternative.

Then you can start with lots of small servers, t1.micro or m2.small, and then see how your application performs. When you reach a bottleneck, you'll be able to see where the problems are, as you've got greater visibility, and can't just say "Well, it's in this big wibbly-wobbly mass of timey-wime stuff"

RDS is probably a sane choice, at least to begin with. You might find that it doesn't scale well, at which point, you can revisit that decision and try something else.

Amazon Web Services is as good a choice as any, probably with the best community, and shallowest learning curve.

You should totally take a look at AWS OpsWorks for managing your server stack and environments.

Oh, and there's no such thing as doing it right from the beginning.

share|improve this answer
    
Thank you Tom. Much appreciated. Do you know of any articles that outline what you're talking about in a bit more detail? Thanks again! –  FAtBalloon Sep 26 '13 at 17:40
    
Hmm. Off the top of my head, no. For OpsWorks, have a read of packtpub.com/learning-aws-opsworks/book .. I reviewed it before it went to print ;) –  Tom O'Connor Sep 26 '13 at 22:27

Not the answer you're looking for? Browse other questions tagged or ask your own question.