Die Notwendigkeit der Dienstzuverlässigkeit mit der Notwendigkeit, neue Funktionen zu veröffentlichen, in Einklang bringen.
→Ein Service Level Objective (SLO) definieren (z. B. 99,9 % Verfügbarkeit). Die verbleibenden 0,1 % sind das Fehlerbudget. Ist das Budget weitgehend intakt, Funktionen ausliefern. Ist das Budget aufgebraucht, Funktionsveröffentlichungen stoppen und sich auf Zuverlässigkeitsverbesserungen konzentrieren.
Warum: Das Fehlerbudget bietet einen datengesteuerten Rahmen für Risikobewertungen und stimmt Engineering-, Produkt-- und Business-Teams auf ein gemeinsames Ziel ab.
Aus Vorfällen lernen, um deren Wiederholung zu verhindern, und gleichzeitig eine Kultur der psychologischen Sicherheit fördern.
→Nach Vorfällen schuldfreie Postmortems durchführen. Die Untersuchung auf systemische Faktoren, Prozesslücken und Tooling-Fehler konzentrieren, nicht auf die Zuweisung von Schuld an Einzelpersonen. Das Ergebnis sollte eine Liste umsetzbarer Verbesserungsmaßnahmen sein.
Warum: Eine schuldfreie Kultur fördert eine ehrliche und offene Kommunikation, was zu einem genaueren Verständnis der Ursachen eines Vorfalls und effektiveren Präventionsmaßnahmen führt.
Die Reaktion auf einen schwerwiegenden Vorfall effektiv koordinieren, um Verwirrung und doppelte Anstrengungen zu vermeiden.
→Ein Incident Command System (ICS) mit klar definierten Rollen implementieren: Incident Commander (Gesamtkoordination), Operations Lead (technische Untersuchung/Behebung) und Communications Lead (Stakeholder-Updates).
Warum: ICS bietet eine standardisierte, skalierbare Struktur für die Incident Response, die klare Autoritäts- und Kommunikationslinien gewährleistet, was für die schnelle Lösung komplexer Probleme entscheidend ist.
Die Leistung einer Softwarelieferorganisation messen.
→Die vier wichtigen DORA-Metriken verfolgen: Bereitstellungshäufigkeit (wie oft), Vorlaufzeit für Änderungen (wie schnell vom Commit zur Bereitstellung), Änderungsfehlerrate (welcher Prozentsatz der Bereitstellungen führt zu Fehlern) und Zeit zur Wiederherstellung des Dienstes (MTTR).
Warum: Diese vier Metriken bieten eine ausgewogene Sicht auf die Entwicklungsgeschwindigkeit und die Betriebs stabilität und haben sich als korrelierend mit hochleistungsfähigen Organisationen erwiesen.
Ein SRE-Team verbringt zu viel Zeit mit manuellen, repetitiven Betriebsaufgaben (Toil), wodurch keine Zeit für Engineering-Projekte bleibt.
→Die zeitaufwändigsten Toil-Aufgaben identifizieren und quantifizieren. Diese Aufgaben priorisieren und automatisieren (z. B. Autoscaling statt manueller Skalierung implementieren, automatische Behebung für häufige Alerts). Toil auf < 50 % der Ingenieurzeit begrenzen.
Warum: Toil beeinträchtigt Produktivität und Moral. Eine systematische Reduzierung durch Automatisierung gibt Ingenieuren die Freiheit, an langfristigen Zuverlässigkeitsverbesserungen zu arbeiten.
Cloud-Kosten in einer gemeinsamen Infrastruktur präzise verschiedenen Teams, Diensten oder Umgebungen zuordnen.
→Eine konsistente Labeling-/Tagging-Strategie implementieren. Diese Labels verwenden, um in Cloud Billing-Berichten zu filtern. Für GKE die GKE-Kostenverteilung aktivieren, um Kosten nach Namespace oder Workload aufzuschlüsseln.
Warum: Eine genaue Kostenverteilung schafft Transparenz, was die Verantwortlichkeit fördert. Teams, die ihre Ausgaben sehen können, sind in der Lage, diese zu optimieren.
Compute-Kosten für eine vielfältige Reihe von Workloads (stabil, unterbrechbar, Entwicklungs-/Testumgebungen) optimieren.
→Die Workload an das Preismodell anpassen. Committed Use Discounts (CUDs) für stabile, 24/7 Workloads verwenden. Spot VMs für fehlertolerante, unterbrechbare Jobs (z. B. Batch-Verarbeitung) nutzen. Entwicklungs-/Testumgebungen so planen, dass sie außerhalb der Geschäftszeiten heruntergefahren werden.
Warum: Ein „Einheits“-Ansatz für die Compute-Preisgestaltung ist ineffizient. Die Verwendung des richtigen Tools für die jeweilige Aufgabe kann zu erheblichen Einsparungen (>70%) führen, ohne die Leistung zu beeinträchtigen.
GKE-Kosten und -Leistung optimieren, indem sichergestellt wird, dass Pods angemessene Mengen an CPU und Speicher anfordern.
→Den Vertical Pod Autoscaler (VPA) im `recommendation`-Modus bereitstellen. Seine Vorschläge analysieren, um die Pod-Ressourcenanforderungen (`requests`) anzupassen. Nach Überprüfung in den `auto`-Modus für kontinuierliches Right-Sizing wechseln.
Warum: Die Überprovisionierung von Pods verschwendet Geld, während die Unterprovisionierung Leistungsprobleme (Drosselung, OOMKilled) verursacht. VPA verwendet tatsächliche Nutzungsdaten, um genaue Größenempfehlungen zu geben und so Effizienz und Stabilität zu verbessern.
Latenz, die durch Kaltstarts für einen Cloud Run-Dienst verursacht wird, reduzieren.
→Einen `min-instances`-Wert konfigurieren, um eine Reihe von Instanzen warm zu halten. Zusätzlich das Container-Image (kleineres Basis-Image, weniger Schichten) und den Anwendungsstartcode (Lazy Initialization) optimieren.
Warum: `min-instances` ist der direkteste Weg, Kaltstarts zu reduzieren, hat aber Kosten. Die Kombination mit Container- und Code-Optimierung bietet einen ausgewogenen Ansatz für Leistung und Kosten.
Kosten für eine groß angelegte BigQuery-Analyse-Workload mit variablen Abfragemustern optimieren.
→Von On-Demand-Preisen zu BigQuery Editions (Slots) wechseln. Eine Basis-Slot-Zusage für vorhersehbare Last kaufen und Autoscaling für Spitzenlasten aktivieren. Zusätzlich Abfragen durch die Verwendung partitionierter/geclusterter Tabellen und Vermeidung von `SELECT *` optimieren.
Warum: Für konsistente Workloads ist das slotbasierte Pricing kostengünstiger als On-Demand. Autoscaling bietet Flexibilität für Lastspitzen bei gleichzeitiger Kostenkontrolle. Abfrage- und Tabellenoptimierung reduziert die verarbeitete Datenmenge, was die Kosten direkt senkt.
Hohe Netzwerk-Egress-Kosten für eine global verteilte Anwendung reduzieren.
→Cloud CDN verwenden, um statische Inhalte am Edge, näher an den Benutzern, zwischenzuspeichern. Für dynamischen Traffic die geeignete Network Service Tier wählen (Premium für Leistung, Standard für Kosteneinsparungen). Daten regional verarbeiten, um regionsübergreifenden Traffic zu minimieren.
Warum: Egress ist ein wesentlicher Kostentreiber. CDN entlastet den Ursprungsserver, wodurch der Egress direkt reduziert wird. Der durchdachte Einsatz von Netzwerk-Tiers und regionaler Datenverarbeitung kann die Kosten erheblich senken.