Эмерджентность
Эмерджентное свойство проявляется у системы благодаря взаимодействию частей, хотя отдельно ни одна часть этим свойством не обладает.
Примеры:
- пропускная способность конвейера определяется сочетанием этапов и очередей, а не одним обработчиком;
- доступность кластера зависит от репликации, кворума, сети и процедур восстановления;
- взаимная блокировка возникает из порядка захвата ресурсов несколькими потоками;
- пробка образуется из локально разумных действий водителей.
Это не означает, что свойство невозможно объяснить. Оно означает, что объяснение находится на уровне связей и коллективного поведения, а не в изолированной детали.
Как распознать
- Компоненты по отдельности проходят проверку, но целевой результат системы нарушен.
- Изменение связи влияет сильнее, чем замена компонента.
- Эффект зависит от масштаба, порядка событий или задержки.
- Поведение появляется только при определённой нагрузке или конфигурации.
Инженерный вывод
Компонентные тесты не заменяют интеграционные, нагрузочные и отказоустойчивые проверки. Нельзя вывести SLO сервиса простым сложением SLO его зависимостей.
Для анализа:
- построить граф взаимодействий;
- найти циклы обратной связи;
- проверить пограничные режимы и отказ нескольких элементов;
- измерять результат всего потока;
- сравнить модель с реальным наблюдением.
Похожие, но не равные понятия
- синергия подчёркивает полезное усиление совместной работы;
- системный эффект бывает как положительным, так и отрицательным;
- нелинейность — одна из причин эмерджентности, но не её синоним.
Связано: Сложные системы, Положительная и отрицательная обратная связь.
Самопроверка
- Почему deadlock — свойство взаимодействия, а не одного потока?
- Какие виды тестов обнаруживают эмерджентные эффекты?
- Всегда ли эмерджентность означает непредсказуемость?