Modeling Reliability from a Dependency Graph
Episode participants
What we discussed on the recording
Alexander Polomodov and Anatoly Krasnovsky show how traces become an executable reliability model. Jaeger supplies blocking calls, deployment data gives instance counts, and the workload profile weights operations. The versioned graph has provenance, can be rebuilt, and filters hypotheses before chaos engineering.
Monte Carlo selects failed containers and checks each endpoint’s mandatory path. In DeathStarBench, model and live results both reached 0.3054 at a 0.3 failure fraction, with about 0.992 correlation across ten points. Optional or asynchronous calls cannot be treated as blocking by default.
This ranks risk but does not predict exact availability. The model assumes fail-stop behavior, independent failures, and static topology; it cannot see retries, latency degradation, backpressure, shared placement, a common control plane, or storage. Load, recovery, and cascades can change the error.
OpenTelemetry Demo adds a graph from traces and a Kafka branch whose importance depends on the SLO. Procrustes checks artifacts, Bering discovers the graph, and Sheaft simulates scenarios. Start with one critical operation: define its SLO, rank three risks, and validate one through fault injection before creating a release gate.