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.


  • 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

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 :)


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.

  • 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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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