Предсказуемость — это скрытое измерение сетевой производительности

Те, кто работает с базовой сетью, любят обсуждать TPS, задержку и пропускную способность. Эти показатели, конечно, важны, но они отвечают только на один вопрос: как быстро она может работать? — и почти не отвечают на другой, куда более ключевой: насколько стабильно она работает во время работы?
Протокол Kadcast от Dusk заставил меня об этом снова задуматься. Он не пошёл по привычному маршруту случайного распространения сплетен, а использовал структурированную покрывающую сеть, чтобы зафиксировать пути передачи. В итоге дело не в том, что стало быстрее один раз — а в том, что каждый раз примерно одинаково быстро. Задержка из вероятностного распределения превратилась в почти константу.
Этот разрыв, как только доходит до уровня приложений, даёт огромный эффект. Непредсказуемая сеть эквивалентна сообщению разработчикам: «Я не обязательно надёжен — разбирайтесь сами». Тогда возникают таймауты, повторы, экспоненциальная задержка, резервное кэширование… целый набор сложностей, которые должны были оставаться внизу, внезапно перекладывается на уровень приложения. Хуже того, именно этот код обычно самый трудно тестируемый и самый подверженный ошибкам.
Поэтому сейчас я предпочитаю определять производительность так: хорошая сеть — это не та, которая заставляет разработчиков писать ещё более быстрый код, а та, которая позволяет им писать значительно меньше кода, которого вообще не должно быть.
В финансовых сценариях это особенно губительно. В торговых системах самое дорогое — не машина, а когнитивная нагрузка: когда на вопрос «будет ли сеть дёргаться» уходит всё внимание, уже невозможно сосредоточиться на вещах, которые действительно создают ценность, — на логике сопоставления и стратегиях риск-контроля. Главная ценность предсказуемости в том, что она позволяет разработчикам выкинуть предположения из кода.
Лучшая инфраструктура — это такая, о которой после развёртывания почти не вспоминают, потому что она продолжает работать.
@Dusk #dusk $DUSK