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
Der Link zur Originalquelle öffnet einen neuen Tab.