Эмерджентность

Эмерджентное свойство проявляется у системы благодаря взаимодействию частей, хотя отдельно ни одна часть этим свойством не обладает.

Примеры:

  • пропускная способность конвейера определяется сочетанием этапов и очередей, а не одним обработчиком;
  • доступность кластера зависит от репликации, кворума, сети и процедур восстановления;
  • взаимная блокировка возникает из порядка захвата ресурсов несколькими потоками;
  • пробка образуется из локально разумных действий водителей.

Это не означает, что свойство невозможно объяснить. Оно означает, что объяснение находится на уровне связей и коллективного поведения, а не в изолированной детали.

Как распознать

  1. Компоненты по отдельности проходят проверку, но целевой результат системы нарушен.
  2. Изменение связи влияет сильнее, чем замена компонента.
  3. Эффект зависит от масштаба, порядка событий или задержки.
  4. Поведение появляется только при определённой нагрузке или конфигурации.

Инженерный вывод

Компонентные тесты не заменяют интеграционные, нагрузочные и отказоустойчивые проверки. Нельзя вывести SLO сервиса простым сложением SLO его зависимостей.

Для анализа:

  • построить граф взаимодействий;
  • найти циклы обратной связи;
  • проверить пограничные режимы и отказ нескольких элементов;
  • измерять результат всего потока;
  • сравнить модель с реальным наблюдением.

Похожие, но не равные понятия

  • синергия подчёркивает полезное усиление совместной работы;
  • системный эффект бывает как положительным, так и отрицательным;
  • нелинейность — одна из причин эмерджентности, но не её синоним.

Связано: Сложные системы, Положительная и отрицательная обратная связь.

Самопроверка

  • Почему deadlock — свойство взаимодействия, а не одного потока?
  • Какие виды тестов обнаруживают эмерджентные эффекты?
  • Всегда ли эмерджентность означает непредсказуемость?