Die Leute rund um GitHub veröffentlichten eine Reihe von Artikeln, welche die Details ihrer neuen Umgebung erläutern. Mehrheitlich verwenden sie Ruby im bewährten Unix-Stil (für jeden Job das passende kleine Tool).
Auf Schnelligkeit getrimmt
Eine Anfrage an GitHub (ob nun via HTTP, SSH oder GIT) wird durch diverse Proxy-Systeme und Ruby-Skripte gerouted um schlussendlich am richtigen Ort zu landen. GitHub-Benutzer haben dabei sicher bemerkt, dass dies seit dem Umzug innert kürzester Zeit geschieht.
Hauptartikel im GitHub Blog: How We Made GitHub Fast
Unicorn
Ein interessantes Detail ist die Verwendung von Unicorn als Webapplicationsserver für das Web-Fronted, für welches Ruby on Rails verwendet wird. Ein Nebenartikel erläutert die Funktionsweise und den Vorteil von Unicorn, geht aber auch darauf ein, wieso Unicorn unter Umständen nicht für andere Andwendungsfälle geeignet ist, beziehungsweise wieso Passenger die bessere Wahl sein könnte.
BERT
Weiter ist auch die Verwendung eines neuen, eigenen RPC-Mechanismus (BERT – Binary ERlang Term) interessant. Dieser wird verwendet um die Git-Repositories als Webservice verfügbar zu machen und bringt ein eigenes Serialisierungsformat mit sich. Der Artikel erläutert dabei auch, wieso sich die Leute rund um GitHub dazu entschieden haben eine eigene Schnittstelle zu entwicklen und wieso XML-RPC und SOAP für sie keine Lösung darstellten.
Artikel: Introducing BERT and BERT-RPC
Fazit
GitHub hat mittlerweile hohen Ansprüchen an Bandbreite zu genügen und eine stattliche Anzahl an Site-Hits zu bewältigen. Dank einem ausgeklügelten Zusammenspiel von bewährten Konzepten, neuen Technologien und nicht zuletzt mit Ruby, Rails sowie einem bisschen Erlang kann die neue Infrastruktur diesen Anforderungen vollumfänglich gerecht werden.
Bei Puzzle verwenden wir Git übrigens schon seit einiger Zeit und halten uns auf GitHub unter http://github.com/puzzle/ eine steigende Anzahl an öffentlichen Repositories.