К основному содержимому
к выпуску
краткая расшифровка выпуска2026

Как граф зависимостей превращается в модель надёжности

Александр Поломодов и Анатолий Красновский разбирают, как превратить трассы распределённой системы в исполняемую модель надёжности. Идея не заменяет chaos engineering: граф быстро и дёшево ранжирует гипотезы, а живой эксперимент проверяет динамику, коррелированные сбои и всё, чего нет в топологии.

30 июля 2026 г.Research Insights Made Simple #256 минут

Конспект собран по локальной Whisper-расшифровке аудиоверсии Podster и сверен с двуязычными слайдами: YouTube не предоставил субтитры. Материал сокращён и отредактирован — это не дословная стенограмма.

Основные моменты истории
01

От телеметрии к виртуальным отказам

Практическая проблема начинается с ручной архитектурной схемы: она полезна для разговора, но устаревает быстрее системы и плохо подходит для регулярного расчёта. В работе Красновского модель обнаруживается автоматически. Jaeger показывает наблюдаемые блокирующие вызовы, deployment-данные — число экземпляров, а профиль нагрузки — вес пользовательских операций. Получается версионируемый граф с provenance, который можно пересобирать после изменения топологии.

Далее Monte Carlo многократно выбирает фиксированную долю отказавших контейнеров и проверяет, сохранился ли обязательный путь для каждого endpoint. Модель считает долю успешных запросов, а живой стенд — запросы без 5xx, разрывов соединения и таймаутов. Семантика ребра критична: необязательный или асинхронный вызов нельзя автоматически считать блокирующим, иначе расчёт отвечает уже на другой вопрос.

02

Сильный тренд не отменяет границы модели

Эксперимент использует Social Network из DeathStarBench: длинные синхронные цепочки, fan-out и три взвешенных сценария — home timeline, user timeline и compose post. Сравнивались режимы без реплик и с тремя экземплярами пяти ключевых сервисов. При доле отказов 0,3 модель и стенд с репликацией дали 0,3054; по десяти точкам расширенной матрицы корреляция составила около 0,992.

Это хорошая способность ранжировать риск, а не сертификат точной доступности. Базовая модель предполагает бинарный fail-stop, независимые отказы и статическую топологию. Она не видит retries, деградацию по latency, backpressure, общую зону размещения, shared control plane или состояние хранилища. Поэтому при малой доле отказов оценка может быть пессимистичной, а при высокой — оптимистичной: знак ошибки меняют реальные механизмы восстановления и каскады.

03

Из статьи — в платформенный контур

Следующий эксперимент на OpenTelemetry Demo собирает граф уже из отдельных трасс и добавляет асинхронную Kafka-ветку. Её влияние зависит от SLO: для ответа заказа fraud detection не блокирует успех, но станет обязательным, если результат проверки входит в ожидаемый исход. Этот пример показывает, что полнота телеметрии недостаточна без явной семантики пользовательского сценария и границы измеряемого результата.

В открытом наборе инструментов Procrustes проверяет, достаточно ли артефактов для модели, Bering обнаруживает граф, а Sheaft симулирует сценарии. Расчёт можно поставить release gate с порогом для endpoint или выводить в runtime-панель при изменении топологии. Начинать предлагается не со всей компании, а с одной критичной операции: собрать доступный срез, задать SLO и вероятности по истории, выбрать три риска и один сравнить с fault injection.

Выводы

Что стоит унести с собой

  1. 01Графовая симуляция сокращает пространство дорогих chaos-экспериментов, но не доказывает надёжность системы.
  2. 02Качество расчёта определяется не только полнотой трасс, но и правильной семантикой обязательных, optional и async-зависимостей.
  3. 03Высокая корреляция показывает верное направление изменения риска, но может скрывать систематическую ошибку абсолютной оценки.
  4. 04Практический результат модели — приоритизированный backlog проверок с явными допущениями и регулярной калибровкой по живой системе.
Поделиться
TelegramLinkedIn