An Introduction to Residuality Theory - Barry O'Reilly - NDC Oslo 2023 (Рубрика Architecture)
Интересное выступление про residuality theory от Barry O'Reilly, автора теории. Автор делает подход к созданию теории, что поможет инженерам прокачиваться в архитектуру не просто набивая опыт, а используя достижения complexity theory, но без погружения во всю ее сложность. Для этого автор начинает с определения упорядоченных и неупорядоченных систем, а дальше он показывает как стрессоры (неизвестные факторы) могут негативно влиять на архитектуру. С учетом вариативности окружающего мира проанализировать все состояния системы и влияние стрессоров на систему в этом состоянии не представляется возможным. Поэтому автор предлагает рассматривать систему не целиком, а изучать то, что остается от системы, если случается пи... (стрессор X). Эти остатки определяют будущее системы и могут быть использованы для управления архитектурой программного обеспечения. Для моделирования стрессоров нам поможет метод Монте-Карло с его рандомизацией, которую мы можем применить к возможным стрессорам.
Дальше автор вводит рассказывает про аттракторы как устойчивые состояния, в которые скатывается система. Он приходит к ним через NK модель Кауффмана. У нас есть система с N элементами, принимающими значение 0 или 1, параметром K характеризующим связность (например, максимум связей одного элемента). Суть в том, чтобы показать, что при росте N и K у нас в системе увеличивается количество аттракторов. Заодно там появляется вероятностная характеристика P, которая характеризует bias связей между элементами. Финалом размышлений становится вывод некоторой выпуклой кривой критичности, которая вырисовывается в пространстве N и K, где мы играем с количеством элементов и связей между ними (еще один способ определить количество сервисов и связей между ними).
В общем, для каждого стрессора, который ломает нашу начальную наивную архитектуру, мы придумывает доработку, которая позволяет архитектуре системы пережить наступление этого стрессора. Пробежавшись по всем стрессорам, мы получаем крутую residual architecture для нашей системы.
Дальше автор приводит крутые примеры из дизайна системы для управления зарядными станциями для электромобилей. Ребята учли corner cases, которые бывают с зарядкой электромобилей и это помогло потом упростить решение проблем с людьми, что оставляют заряжать машины на целый день, а также с ребятами, что занимались саботажем. А вообще история прикольная и рекомендую посмотреть ее в оригинале.
Ну и в финале автор рассказывает про составление матриц для описания связей между компонентами системы и факторами стресса. Эти матрицы помогают выявить нефункциональные требования и уязвимости в системе. В этой матрице у нас в строках приведены стрессоры, а в колонках - компоненты системы. В итоге, мы анализируем для каждого стрессора влияет ли он на компонент. Если несколько компонентов подвержены одному стрессору, то вероятно у них есть неявная связь (implicit coupling), с которой хорошо бы разобраться.
В конце автор приводит способ померить крутость нашей residual architecture по сравнению с ее наивной версией. Схема выглядит так, что нам надо подсчитать для каждого стрессора
- Переживает ли наша наивная архитектура его наступление
- Переживает ли его наступление residual architecture
- Из значения успехов для residual architecture вычесть количество успехов для наивной архитектуры, а потом отнормировать на общее количество стрессоров
- Полученное число показывает насколько мы хорошо как архитекторы прокачали нашу начальную архитектуру:)
В общем, все звучит достаточно логично и напоминает мне подход генеративно-состязательных сетей, но только к архитектуре. Дальше я планирую прочитать whitepaper "Residuality Theory, random simulation, and attractor networks" от автора доклада и рассказать про него:)
#DistributedSystems #SystemDesign #Math #Engineering #Architecture #SoftwareArchitecture #ComplexityTheory #Software #Processes