Skaliert wird heute vor allem horizontal. Wenn man mit hohen Anforderungen konfrontiert ist, ist es oft einfacher und sogar günstiger zehn Server aufzustellen, welche diese Last zusammen tragen, als einen Server, der mit dieser Last selber umgehen kann. Zudem kann man horizontal endlos (naja, je nach finanziellen Ressourcen) kaufen, während ein einzelner Server irgendwann nicht mehr ausgebaut werden kann. Jedes Betriebssystem hat irgend eine Grenze bei der Anzahl Prozessoren und der RAM kann auch nicht endlos gross werden.
Verschiedene Anwendungen lassen sich jedoch unterschiedlich gut horizontal skalieren.
HTTP kann relativ einfach horizontal skaliert werden. Subdomains, Redirects, DNS Round Robin, Load Balancer und Accelerating Proxies lassen sich zu einer beliebigen Mischung zusammen mixen und können - richtig verwendet - zu einer sehr skalierbaren und ausfallsicheren Seite führen. Wobei, wenn selbst Google ausfallen kann, dann muss man das Wort Ausfallsicherheit wohl ein wenig relativ sehen.
Horizontal zu skalieren funktioniert jedoch nicht überall gleich gut und kann teilweise ziemlich schwierig sein. Zum Beispiel bietet MySQL eine sehr gute Replikation an. Jedoch funktioniert diese nur für read-only Zugriffe wirklich gut. Die Schreibzugriffe müssen normalerweise auf einem zentralen Server erfolgen (Für Details warum und wann diese Aussage nicht stimmt, siehe High Performance MySQL von Jeremy D. Zawodny ab Seite 165).
Lotus Notes bietet schon seit Jahren eine sehr gute Replikation an, bei welcher auf verschiedenen Servern gleichzeitig geschrieben werden kann. Jedoch kommt es da auch oft zu Replikationskonflikten, welche manuell gelöst werden müssen. In den meisten Umgebungen ist das nicht praktikabel und bei einer relationalen Datenbank (was Notes nicht ist) kann dies katastrophal sein.
Und jetzt komme ich endlich zum Punkt. Der Punkt ist ein Vortrag von Adam Bosworth, seit einigen Monaten Mitarbeiter bei der wohl am extremsten skalierten Webseite der Welt (hat jemand Google gesagt?). Der Vortrag Database Requirements in the Age of Scalable Services wurde an der MySQL Konferenz gehalten und präsentiert einige innovative und wahrscheinlich auch kontroverse Ideen, wie Datenbanken skaliert werden könnten.
Ich habe seinen Vortrag vorher mal angehört und werde das wohl noch ein paar mal wiederholen müssen, bevor ich ihm richtig folgen kann. An dieser ganzen Thematik habe ich jedoch ein grosses Interesse. So versuche ich nebenbei noch eine Web Server Performance HOWTO zusammen zu stellen.
(Via lesscode.org.)