The first step, as a rule, is to separate the server from the actual Python code and the database server. Any background jobs that perform processing are likely to run on the database server. I assume that when you tell a server with an interface, you actually mean a server running Python code.
Now, since each query must fulfill several database queries, latency between the web server and the database server is very important. I don’t know if Slicehost has some function that allows you to create two virtual machines that “close” in terms of network latency (a quick search on Google did not find anything). They seem like good guys, so maybe you could ask them if they have such a service or can make an exception.
In any case, when you have two machines on Slicehost, you can check the latency between them, just ping between them. When you have a result, you will probably find out how possible or not.
What to do next depends on your application. If this is heavy media, perhaps using a separate media server will make sense. Otherwise, the usual step is to add additional web servers.
-
As a side note, I personally think that it makes sense to invest in real dedicated servers with dedicated network equipment for this kind of setup. This, of course, depends on what budget you use.
I would also suggest exploring Amazon EC2, where you can provide servers that are magically close to each other.
knutin
source share