Infra

Senior

Wie groß sollte mein Cluster sein, und welche Autoscaling-Policy passt zu diesem Workload?

Die richtige Cluster-Größe ist keine Zahl, die man einmal festlegt — es ist eine Policy, die Sie aus dem tatsächlichen Verhalten Ihres Workloads ableiten und überprüfen, wenn sich dieses Verhalten ändert.

Lesen auf:
Steady-State-Baseline Normale Varianz Gelegentlicher Peak
Die Auslastungskurve eines Workloads — die Form, die Ihre Unter- und Obergrenze bestimmen sollte.

„Wie groß sollte mein Cluster sein“ ist die falsche Frage. Die richtige lautet: „Welche Auslastungskurve produziert dieser Workload tatsächlich, und welche Policy passt zu dieser Kurve“ — ein Batch-Job mit scharfem stündlichem Peak braucht eine völlig andere Antwort als ein Steady-State-Streaming-Job.

Die Untergrenze aus Steady-State-Last setzen, nicht aus dem Peak

Ihr Autoscaling-Minimum sollte die Grundlast mit Puffer für normale Varianz abdecken — nicht den Peak, den Sie gelegentlich sehen. Die Untergrenze auf Peak-Last zu dimensionieren bedeutet, für Kapazität zu zahlen, die Sie nur einen Bruchteil der Zeit nutzen — genau das „Fixe-Cluster-Größe“-Kostenproblem, das Autoscaling lösen soll, nur mit Umweg neu erschaffen.

Die Obergrenze aus einem echten Kostengespräch setzen, nicht aus „so hoch wie nötig“

Ein unbegrenztes Autoscaling-Maximum schützt die Verfügbarkeit, entfernt aber jede Kostenobergrenze — eine außer Kontrolle geratene Query, ein Retry-Sturm oder ein unerwarteter Traffic-Peak kann einen Cluster (und seine Rechnung) weit über das hinaus skalieren, was jemand beabsichtigt hat. Setzen Sie das Maximum aus einer expliziten „Was ist der schlimmste Fall, für den wir zu zahlen bereit sind“-Zahl, nicht nur aus technischer Kapazität allein.

Scale-up-Sensitivität an die Form Ihres Jobs anpassen

Ein Batch-Workload mit scharfem, vorhersehbarem Peak (ein stündlicher ETL-Lauf etwa) profitiert von aggressivem Scale-up — lieber kurz überprovisionieren, als dass der Job hinter langsamem Scale-up in der Warteschlange hängt. Ein Steady-State-Streaming-Job profitiert vom Gegenteil: langsameres, konservativeres Scale-up vermeidet Thrashing (hoch- und sofort wieder runterskalieren) bei normaler Minute-zu-Minute-Varianz, was selbst Kosten durch Provisionierungs-/Deprovisionierungs-Overhead verursacht.

Die Zahl, die diese Entscheidung tatsächlich treiben sollte: durchschnittliche CPU-/Speicher- Auslastung über Executor während echter Läufe, nicht während eines synthetischen Lasttests. Die Instanzanzahl- Regel von opti-pipe vergleicht Ihre aktuell konfigurierte Executor-Anzahl mit der in Ihrem Event-Log tatsächlich beobachteten Auslastung und feuert erneut mit angepasster Zahl, falls ein späterer Upload zeigt, dass die Auslastung seit der letzten genehmigten Änderung gedriftet ist — sie geht nicht mehr davon aus, dass die Form Ihres Workloads statisch ist, als sie sollte.

Sehen Sie, wie das bei Ihrer eigenen Pipeline aussieht.

Laden Sie ein echtes Spark-Event-Log, ein dbt run_results.json oder einen Flink-Metrics-Export hoch und erhalten Sie konkrete, vor der Anwendung zu genehmigende Empfehlungen zurück — keine weitere Faustregel.