Caching
Strategie zur temporären Speicherung häufig genutzter Daten zur Reduktion von Latenz und Last. Umfasst Formen wie In-Memory-, HTTP- und CDN-Caches sowie Regeln für Konsistenz, Invalidation und Kapazitätsmanagement.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Cache-Incoherence bei unzureichender Invalidierung
- Hotspots und Thundering-Herd-Probleme
- Erhöhte Kosten durch redundanten Speicherbedarf
- Explizite Invalidation-Strategien und versionierte Keys
- Verwendung von Cache-Metriken für Kapazitätsentscheidungen
- Definierte Fallbacks und Retry-Strategien bei Cache-Ausfall
I/O & Ressourcen
- Lastprofile und Abfrage-Metriken
- Datenzugriffs-Muster (Hotspots)
- Betriebsanforderungen (SLAs, Konsistenz)
- Reduzierte Latenz und Backend-Last
- Metriken zu Trefferquote und Evictions
- Dokumentierte Cache-Topologie und Policies
Beschreibung
Caching reduziert Latenz und Last, indem häufig genutzte Daten temporär näher an Verbraucher gehalten werden. Es umfasst Strategien für Platzierung, Konsistenz, Invalidation und Kapazitätsmanagement sowie verschiedene Cache-Typen (in-memory, CDN, HTTP, Datenbank). Geeignet für Performance-Optimierung, erfordert jedoch Trade-offs bei Konsistenz und Komplexität.
✔Vorteile
- Reduzierte Latenz und schnellere Antwortzeiten
- Geringere Last auf Backend-Systemen
- Bessere Skalierbarkeit bei Lese-intensiven Workloads
✖Limitationen
- Staleness: Caches liefern eventuell veraltete Daten
- Komplexität bei Invalidierung und Konsistenz
- Zusätzlicher Betriebsaufwand (Monitoring, Kapazitätsplanung)
Trade-offs
Metriken
- Trefferquote
Verhältnis von Cache-Treffern zu Gesamtabfragen; Indikator für Effektivität.
- Latenz (P95)
95. Perzentil der Antwortzeiten mit Cache im Pfad; misst Nutzererfahrung.
- Evictions pro Sekunde
Anzahl der Cache-Auschlüsse aufgrund von Speicherknappheit; zeigt Kapazitätsprobleme.
Beispiele & Implementierungen
Redis als L2-Cache für Nutzerprofile
Einsatz eines zentralen Redis-Clusters zur Entlastung der Datenbank-Leseoperationen und Verbesserung der Antwortzeiten für zugriffsintensive Profilabfragen.
CDN-Caching für statische Web-Assets
Bereitstellung statischer Assets über ein CDN mit kontrollierten Cache-Control-Headern und gezieltem Cache-Busting bei Deployments.
HTTP-Response-Caching mit RFC-konformen Headern
Verwendung von Expires, Cache-Control und ETag zur effektiven Nutzung von Browser- und Proxy-Caches für öffentliche Inhalte.
Implementierungsschritte
Analyse der Zugriffsmuster und Identifikation geeigneter Cache-Grenzen
Auswahl von Cache-Typ und Technologie, Konfiguration von TTL und Invalidation
Einführung von Monitoring, Load-Tests und schrittweiser Rollout
⚠️ Technische Schulden & Engpässe
Tech Debt
- Ad-hoc implementierte Cache-Keys ohne Versionierung
- Keine dokumentierten Invalidierungsregeln
- Monolithische Cache-Instanzen, die schwer zu skalieren sind
Bekannte Engpässe
Beispiele für Missbrauch
- Caching hochfrequent schreibender Datensätze ohne geeignete Konsistenzlösungen
- Verwendung von sehr langen TTLs für kritische, sich schnell ändernde Daten
- Fehlende Überwachung von Evictions und Memory-Pressure-Indikatoren
Typische Fallen
- Unterschätzung von Cache-Invaliderungs-Komplexität
- Nicht beachten von Sicherheits- und Datenschutzaspekten bei geteilten Caches
- Fehlende Berücksichtigung von Netzwerk-Latenz zwischen Cache und Clients
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Begrenzter Arbeitsspeicher auf Knoten
- • Latenz zwischen Cache-Standorten
- • Regulatorische Vorgaben für Datenhaltung