El primer paso generalmente es separar el servidor que ejecuta el código de Python real y el servidor de la base de datos. Cualquier trabajo en segundo plano que realice el procesamiento probablemente se ejecute en el servidor de la base de datos. Supongo que cuando dices servidor front-end, en realidad te refieres a un servidor que ejecuta el código Python.
Ahora, como toda solicitud tendrá que hacer una serie de consultas a la base de datos, la latencia entre el servidor web y el servidor de la base de datos es muy importante. No sé si Slicehost tiene alguna función que te permita crear dos máquinas virtuales que están "cerca" en términos de latencia de la red (una búsqueda rápida en Google no encontró nada). Parecen buenos chicos, así que tal vez podría preguntarles si tienen ese servicio o podrían hacer una excepción.
De todos modos, cuando tienes dos máquinas en Slicehost, puedes verificar la latencia entre ellas simplemente haciendo un ping entre ellas. Cuando tengas el resultado, probablemente sabrás si esto es factible o no.
Otros pasos dependen de su aplicación. Si se trata de medios pesados, entonces tal vez usar un servidor de medios separado tendría sentido. De lo contrario, el paso normal es agregar más servidores web.
-
Como nota al margen, yo personalmente creo que tiene más sentido invertir en servidores dedicados reales con equipos de red dedicada para este tipo de configuración. Esto, por supuesto, depende del presupuesto en el que se encuentre.
También sugiero buscar en Amazon EC2, donde se pueden aprovisionar servidores mágicamente cercanos entre sí.
¿Cuál es el origen de la carga de sus servidores? ¿Es CPU? ¿Base de datos? ¿Disco? Múltiples servidores de aplicaciones para el usuario de Apache/nginx tiene menos sentido que una interfaz de usuario de apache/nginx y múltiples servidores back-end, ¿hay otro problema a pie? –
Esta pregunta es imposible de responder sin saber lo que está haciendo y cómo no funciona. –