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. Die Anwendung basierte damals überwiegend auf Ruby on Rails.

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

  • 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 →

Im Webarchiv suchen