/perspective/production/

Teil VIII · Produktion

Einmal funktionieren ist nicht in Produktion funktionieren.

Eine Demo verantwortet sich nur vor ihrem Autor, in einem Prozess, ein Mal. Produktion verantwortet sich vor Fremden, über Neustarts hinweg, nebenläufig — während niemand zusieht. Drei Fragen trennen beides, und je höher du die Leiter erklimmst, desto teurer wird es, jede davon zu ignorieren.

Ein Lauf, aufgefächert in drei Linsen Truth Durability Visibility
ein RunTruthWas ist jetzt wahr?DurabilityÜbersteht es einen Neustart?VisibilityIm Nachhinein sichtbar?

Beantworte alle drei und das System ist verlässlich. Die Leiter zu erklimmen — ein einzelner Kopf, dann Workflows, dann Spezialisten — macht es leistungsfähiger. Das sind verschiedene Achsen: Leistungsfähigkeit ist nicht Verlässlichkeit, und erklimmen ist nicht ausliefern. Sieh, wie sie zusammenkommen →

Frage eins · Truth

Was ist wahr gerade jetzt?

Jeder Node liest und schreibt eine geteilte Wahrheit. In Produktion muss diese Wahrheit an der Grenze sauber geformt sein — und sicher zu schreiben, wenn mehr als eine Hand sie berührt.

State-Vertrag an der Grenze

Unzulässige Felder schlagen laut fehl — nicht still, drei Knoten später.

messages: Message[]deklariert
plan: Step[]deklariert
scratch_note: "…"abgelehnt

Merge-Regeln für geteilte Keys

Wie zwei Writes auf denselben Key kombiniert werden.

append
Messages aus vielen Nodes hinzufügen; nach id deduplizieren.
concatenate
Teilergebnisse aus parallelen Zweigen zusammenfügen.
custom
Set-artige Felder, Zähler, fachliche Merge-Regeln.
last-writer-winsdie Standardfalle
keine Regel bedeutet, der letzte Write ersetzt still den Rest.
Fan-in — zwei Writes, ein Key
Kein Reducer

Letzter Write gewinnt

Branch A["a1","a2"]Branch B["b1"]results
ErgebnisBeide Branches schreiben auf results. Der Store behält nur den letzten Write, der landet.
Mit Reducer

Writes kombiniert

Branch A["a1","a2"]Branch B["b1"]results
ErgebnisDer Reducer (hier: Anhängen) definiert, wie A und B kombiniert werden — die Reihenfolge über Branches hinweg ist nicht garantiert, aber nichts geht verloren.
Step 1 / 3Zwei parallele Branches schreiben denselben Key.
Der Vorteil

Fehler treten am Rand zutage

Ein unzulässiger Write wird dort abgefangen, wo er passiert. Fan-out und Fan-in setzen sich korrekt wieder zusammen, weil jeder geteilte Key eine Regel hat.

Die Herausforderung — und der Aufstieg

Die Schwierigkeit skaliert mit den Händen am State

Trivial, wenn ein einzelner Kopf allein loopt. Real, sobald Schritte Grenzen überqueren. Zentral, sobald Spezialisten nebenläufig über einer geteilten Wahrheit arbeiten.

Auf der LeiterL1L2L3
Schritt 1 von 4
Frage zwei · Durability

Was überlebt einen Neustart?

State muss den Prozess überdauern, der ihn erzeugt hat. Ein System, das nicht fortsetzen kann, startet neu — und ein Neustart verliert jede laufende Entscheidung.

Das Durability-Spektrum — platziere deinen Store darauf

 

 

Nebenläufigkeit
Ausfallsicherheit
Vorgesehener Einsatz
Links im Spektrum

In-Memory

Einzelner Prozess
Bei Neustart verloren
Nur Demos & Notebooks
Mitte

Single-Writer

Ein Writer gleichzeitig
Übersteht Neustart, auf Platte
Lokale Single-User-Apps
Rechts im Spektrum

Nebenläufiger ausfallsicherer Store

Viele Writer, Row-Level
Ausfallsicher & konsistent
Produktions-Nebenläufigkeit
Nebenläufigkeit — ein Burst, zwei Stores

Single-Writer-Store

ein Lock
Write🔒 gesperrt
Committed
0
Timeout
0

Nebenläufiger, ausfallsicherer Store

Row-Level-Locks
WriteRow-Locks
Committed
0
Timeout
0
Step 1 / 3Ein Burst nebenläufiger Writes trifft beide Stores.
Der Vorteil

Fortsetzen statt neu starten

Ausfallsicherer State bedeutet: ein Absturz setzt vom letzten Checkpoint fort, eine menschliche Prüfung kann den Lauf pausieren, und ein Retry ist sicher zu wiederholen.

Die Herausforderung

Nebenläufigkeit und replay-sichere Merges

Viele Writer über einer Wahrheit; Merges, die einen Replay ohne Doppelzählung überstehen müssen. Genau das verschafft dir die operative Schicht.

Schritt 1 von 4
Frage drei · Visibility

Was kannst du sehen im Nachhinein?

Ein laufendes System muss inspizierbar sein, nachdem es gelaufen ist. Wenn du nicht sehen kannst, was passiert ist, kannst du es weder debuggen noch verbessern noch dafür einstehen.

Was ein Span erfasst

Warum jedes Feld seinen Platz verdient.

Inputs & Outputs
machen den Span in sich abgeschlossen — Replay ohne erneuten Lauf.
Tool-Calls
legen die Integrationsfläche offen, mit Argumenten und Ergebnissen.
Tokens & Latenz
legen die Hotspots offen — wohin Zeit und Geld gehen.
Fehler
erklären die Retries, die auf sie folgen.

Wo Traces leben

Eine Entscheidung — per Policy festgelegt.

Managed — geringe operative Last, Daten verlassen deine Grenze.
Self-hosted — du betreibst es, Daten bleiben in deiner Grenze.
Evals ergänzen Traces — prüfen, dass die nächste Änderung besser ist, nicht nur anders.forward
Trace — ein Agenten-Run, Span für Span
0 msLatenz →3.200 ms
Orchestrator
3.200 ms
Planner
450 ms
Model-Call
700 ms · 6,1k Tok
Tool: Suche
1.280 ms langsam
Model-Call
440 ms · 3,4k Tok
Validator
Fehler: Schema
Wohin die Kosten des Runs gingen
Tool-I/O
Model-Tokens
Planung
Retry
Der Latenz-Hotspot

Der langsame Span ist das Tool, nicht das Modell

Vierzig Prozent der Wall-Clock-Zeit gehen auf einen einzigen externen Call — sichtbar nur, weil er im Trace auftaucht. Cache ihn, parallelisiere ihn oder setze ein Timeout.

Der Kosten-Hotspot

Bei den Tokens liegt das Geld

Token-Zahlen pro Span machen aus einer vagen Rechnung einen Posten, den du angehen kannst.

Fehler & Kosten

Eine fehlgeschlagene Validierung kostet einen kompletten Retry

Der Fehler-Span erklärt das Retry-Segment im Kosten-Balken. Ohne den Trace sind diese Ausgaben unsichtbar.

Step 1 / 3Der Run zeichnet sich selbst auf, Span für Span.
Die Herausforderung · Visibility vor jedem Loop

Der Reflexions-Loop, den du nicht sehen kannst.

Ein selbstkorrigierender Agent kritisiert seine eigene Ausgabe und versucht es erneut. Ohne Traces darunter sind Oszillation, themenfremde Wiederholungen und stille Token-Explosion allesamt unsichtbar — der Score überschreitet nie die Schwelle, während jeder Zyklus einen weiteren kompletten Generierungsdurchlauf an Tokens verbrennt. Der Lauf stürzt nicht ab. Er kostet einfach still das Zehnfache dessen, was er sollte.

Die VoraussetzungSetze zuerst Tracing auf. Ein Loop, den du nicht inspizieren kannst, ist ein Loop, dem du nicht trauen kannst — begrenze die Rekursion, verlange, dass der Score sich verbessert, und trace jede Iteration.
Akzeptanzschwelle
Iteration 0 / Limit 8Tokens 0
Sieh zu, wie der Score unter der Linie pendelt, während die Tokens steigen.
Auf der LeiterL4
Schritt 1 von 4
Der Abschluss

Ein System ist produktionsreif, wenn es alle drei beantworten kann — Truth, Durability, Visibility.

PRODUKTIONSREIF — alle drei beantwortetDependability — was du schuldestCapability — die Leiter, die du baust →TruthDurabilityVisibilityL1L2L3L4leistungsfähignoch auszuliefern
Die These

Die Leiter zu erklimmen ist nicht dasselbe wie auszuliefern.

Die Leiter ist die Leistungsfähigkeit, die du aufbaust — ein einzelner Kopf, dann Workflows, dann Spezialisten, dann die operative Schicht. Die drei Fragen sind die Verlässlichkeit, die du schuldest. Es sind orthogonale Achsen: Erklimmen macht das System leistungsfähiger; es macht es nicht verlässlich. Beides zusammen ist Produktion.

Suche

Patterns, Frameworks und Seiten durchsuchen.