bk99.de entertain the web since 1997

Wie GitHub seine Anwendung beschleunigte

Zusammenfassung

GitHub beschreibt den Umbau seiner frühen Architektur durch Messungen, Caching, Hintergrundarbeit und gezielte Datenbankoptimierungen.

Ideen

  • Profiler ordnen langsame Seiten konkreten Methoden und Abfragen zu.
  • Caches vermeiden wiederholte Berechnung häufig gelesener Repositorydaten.
  • Hintergrundjobs entfernen teure Arbeit aus interaktiven Anfragen.
  • Datenbankindizes beschleunigen bekannte Zugriffsmuster erheblich.
  • Denormalisierte Werte tauschen zusätzlichen Schreibaufwand gegen schnellere Lesewege.
  • Schrittweise Änderungen halten Verbesserungen messbar und rückrollbar.

Einsichten

  • Performancearbeit beginnt bei Wartezeitverteilungen und nicht bei Architekturmoden.
  • Caching lohnt sich erst mit verstandener Gültigkeit und klarer Invalidierung.
  • Asynchronität verbessert Antwortzeiten, verschiebt Fehler jedoch in andere Systeme.
  • Wachsende Produkte brauchen Beobachtbarkeit, bevor sie mehr Infrastruktur benötigen.

Fakten

  • GitHub veröffentlichte den Architekturbericht im Oktober 2009.
  • Die Anwendung basierte damals überwiegend auf Ruby on Rails.
  • Memcached spielte bei häufig gelesenen Daten eine wichtige Rolle.
  • Hintergrundprozesse übernahmen nicht interaktive Aufgaben.

Empfehlungen

  • Profile langsame Endpunkte vor jeder strukturellen Änderung.
  • Definiere Cachelebensdauer und Invalidierung gemeinsam.
  • Überwache Hintergrundjobs auf Alter, Fehler und Wiederholungen.

Referenzen

Originalartikel lesen →