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

I'm asking this question to find out what are you best practices to prepare your system for scaling, I know that basically you don't have to over optimized before really having to, and that's the best thing would be to monitor almost any aspects of the server/system and see where are your bottle neck and then act, but still.

I am not an expert but the common sense led me to virtualize my dedicated server and separate the different services (for greater security too), in order to migrate them later to other physical servers in case I need to grow fast and with minimal downtime.

I'm interested to hear what's your best techniques, what are you doing to ensure that when your product/service get traction, you'll have enough time to react and scale.

Thanks

share|improve this question
1  
Scaling what? Why would it scale? –  Gleb Sep 26 '09 at 13:34
    
I like this idea in theory. Being able to take a VM and move it to much greater hardware without a reinstall is a nice idea. However, I've found that virtualization itself has a substantial (and disappointing) performance impact. I've now gone back to the "better to just spend the labor to reinstall on bare metal" camp due to performance reasons. :-( –  Brian Knoblauch Jul 26 '10 at 13:56
add comment

2 Answers

up vote 2 down vote accepted

Scalability encompasses a wide array of possibilities. I'll start with presuming you're running "everything" off one server, like I happen to do at the moment.

Since you have a dedicated server, this will be somewhat easier :)

If you want to be able to eventually move certain services around as you grow, I would look at the primary functions the server is doing now (say: web, mail, db, ldap, svn), and copy the current server's hardware on an internal/lab machine.

Replicate the server but using ESX or Xen or similar, and create one VM per "function" - using my above example, that would be 5 VMs on the host.

Presuming you have more existing capacity than you need, each of those VMs can be run on your main server, and you would eventually be able to migrate them to other physical hardware via an automated tool like Vmotion or manual migration if you find one or more are being used more heavily than the existing hardware can handle.

Adding more physical hardware, and moving the VM is a [relatively] trivial matter once they're setup :)

share|improve this answer
add comment

One way to look at scaling would be to replicate the existing VM onto another physical machine and then load-balance between the two. This could be done fairly quickly with virtualisation.

share|improve this answer
    
If the site has any state that isn't stored in a shared db, look at sticky connections on the load balancer. –  Ryaner Sep 26 '09 at 14:22
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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