What can you give as advise for a small web based software company for hosting different web apps for different clients... ?

We develop custom Rails, Django or Lithium(php5.3) apps for our customers (small business). We host these apps and maintain them as well.

We just got a Rackspace Cloud Servers account and can fire up multiple servers instances quickly.

We are looking for a smart way to organize ourselves for hosting these apps...

First, we are thinking to create a server for each different app to keep things completely separated, and to make easy backups, mails etc...

Rackspaces prices encourages this idea as a server with 512MB RAM costs exactly half one of 1GB. As our app instances generally don't need more than 512MB it's fine...

  • Is it a kludge?
  • Can we simplify this with vhosts? And one server with 2 or more GB of RAM?
  • If so, how do you keep things separated and organized between apps?
    Let's say backups, logs and all that stuffs?
    We should keep 'em near app folders or in the same place (/var/log for example)
  • Each app is a user in the server?
  • Any guide out there for help?

Why it's better to have one server for many apps that costs X, rather than bunch of smaller servers that costs X as well ... ?

Thanks guys for your help and advise !

link|improve this question
2  
This is an enormous pile of "it depends" ..... – mfinni Jun 13 '11 at 18:22
Hahahaha :-) Can you help me to put me in the right direction, and disambiguating things ? – Jason Lince Jun 13 '11 at 18:34
Have you done any testing at all to give you a hint of how these things scale? – mfinni Jun 13 '11 at 18:38
Yes, I mounted 2 images and configured things and deployed just 1 app... But for deploying a second one I don't have enough background to make a decision... Go with another server or add a vhost – Jason Lince Jun 13 '11 at 18:42
feedback

closed as not constructive by Jim B, Scott Pack, Holocryptic, Miles Erickson, Ben Pilbrow Jun 15 '11 at 7:06

This question is not a good fit to our Q&A format. We expect answers to generally involve facts, references, or specific expertise; this question will likely solicit opinion, debate, arguments, polling, or extended discussion. See the FAQ for guidance on how to improve it.

2 Answers

Have multiple server with multiple apps. All load balanced and redundancy on the database. If you see that there is more load then your app servers can do you can fire up a new instance to share the load. For the database if you use rdbms there are not many options unless you shard horizontally, if not just two big enough boxes will do well in a cluster.

link|improve this answer
feedback

It depends.

That's what I meant by testing. Try it one way, put some load against it, and track the performance. Reconfigure everything the other way, put the exact same load against it, and track the performance. Performance means both the response times from the POV of clients, and load on the system ( primarily : CPU, IO wait, used RAM )

Also worth noting is how easy it is to add/change/remove customers in each of the different configs. If the performance is a wash, but your operations are easier one way, do it that way.

link|improve this answer
feedback

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