Durch Teilen und Netzwerken. Der Code sollte für einen oder mehrere Server identisch sein.
Sie können Daten über Datenbanken, Speicher mit Dingen wie Memcache, die Last mit einem Balancer, etc. teilen. Wenn Sie Server spezialisieren wie Google tut (einige holen URL, einige halten Daten, einige tun Zahlenknirschen, usw.) Hardware zur Hand kann besser genutzt werden.
Der Code kann Dispatch-Logik verwenden (normalerweise über eine API abstrahiert), so dass es funktioniert, wenn es einen Server oder Millionen von ihnen gibt.
IPC (Inter Process Communication) kann netzwerkfähig sein und eine engere Verbindung von Diensten ermöglichen. Google hat sogar ein protocol buffer Projekt, um dabei zu helfen.
Grundsätzlich müssen Server teilen, um echte Vorteile zu erhalten (über Failover/Backup hinaus), der Code muss eine Abstraktionsebene verwenden, um die Freigabe zu erleichtern. Die tatsächliche Freigabe verwendet normalerweise Round-Robin oder Map/Reduce Logik.