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
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.