Тот факт, что многослойный протокол накладывает ограничения и одновременно раскрепощает систему, имеет решающее значение. Я хочу, чтобы вы это твердо усвоили, так что вот вам еще один пример. Вернемся опять к многослойной экипировке и рассмотрим целый ряд возможных вариантов для каждого слоя. Скажем, уровень утепления (его ограничивающий протокол – удерживать тепло тела) в качестве входящих условий допускает все типы одежды, а исходящих – различные варианты костюма. Это может быть плащ-накидка из медвежьей шкуры с шерстяными штанами, пальто из шерстяной ткани с кашемировым свитером и штанами из овчины, куртка из полипропиленового флиса с норковым жилетом и брюки из прорезиненной ткани для гидрокостюмов. Ваша одежда может застегиваться на молнию или надеваться через голову, это может быть комбинезон или комплект из куртки со штанами. Возможен высокий отворачивающийся воротник, а манжеты и низ штанов могут быть на резинке, но это необязательно. Цвет и размер – любые. Протокол слоя утепления, несмотря на ограничения (удерживать тепло тела), одновременно снимает ограничения разными способами, что предоставляет вам широчайший выбор. По Дарвину, это естественный отбор признаков вида. Мы видим, как приспособляемость позволяет слою эволюционировать от накидки из медвежьей шкуры до куртки из полипропиленового флиса цвета фуксии, размера L, с капюшоном и на молнии. И с карманами. Это наглядная иллюстрация важнейшего свойства многослойной архитектуры – она разрешает изменения, которые происходят в течение длительного времени, от нарядов Фреда и Уилмы Флинтстоунов до костюма
Многослойная архитектура, при всей своей гибкости, не лишена недостатков. Давайте добавим к вышеописанным преобразованиям теплой одежды новое условие – костюм должен быть «стильным». Это уже задачка потруднее. Чем больше в протоколе условий, тем жестче ограничения. В этом смысле унифицированная система без многослойных процессов будет работать лучше, потому что в ней нет независимых протоколов для каждой функции. Не забудьте, что протокол – это комплекс правил, или технических условий, который предопределяет допустимые интерфейсы, или взаимодействия, как внутри слоя, так и между слоями. Проще было бы взять дорогой материал, который убережет вас от холода и сырости, и сшить один удобный, легкий и практичный комбинезон. Кинул его в дорожную сумку, а когда понадобится – быстро надел. Возможно, вы будете выглядеть в нем даже стройнее и более стильно! Тогда вам хватило бы одного этого предмета одежды на всю оставшуюся жизнь. Мечта!
Однако для сложной системы единообразная функциональная структура – не лучший вариант, ведь из-за одной малейшей неполадки весь процесс может пойти насмарку, да к тому же такую систему труднее усовершенствовать. Напоретесь на гвоздь, порвете одну штанину своего идеального комбинезона, и он пропадет весь целиком. В многослойной системе у вас хотя бы оставались резервные части, и починить ее или что-то в ней заменить было дешевле и легче. Мало ли, вдруг изобретут более качественный, дышащий материал? Чтобы получить такой бонус, придется выбросить старый костюм и купить новый, а это дорого. На обслуживание унифицированной системы требуется больше времени, энергии и средств, то есть вы идете на компромисс и за более высокую эффективность получаете более дорогую и не такую устойчивую систему. Система, каждый слой которой обеспечивает выполнение различных функций, – более гибкая в целом, что дает ей огромное преимущество в изменчивой внешней среде. С точки зрения эволюции, это идеальный тип структуры, потому что слабых мест не так уж много, а возможностей для модификации – великое множество. Когда в окружающей среде что-то поменяется, такие системы смогут адаптироваться быстрее и легче. В общем, для сложной системы наиболее выгодна многослойная архитектура, так как ее проще восстановить и адаптировать к новым условиям, она требует меньших затрат и лучше развивается.
Вместе с тем многослойные системы не застрахованы от сбоев в протоколе. Если система сломается, окажется в кризисной ситуации или даже будет захвачена, могут наступить катастрофические последствия. Например, из-за нарушения протокола на уровне шитья разойдутся швы на ваших шерстяных штанах, и тогда одежда перестанет выполнять свои функции – с тем же успехом вы могли бы облачиться в дикарскую юбку из травы и листьев. Если биологическая система – ваш организм и будут атакованы протоколы иммунной системы, у вас может развиться аутоиммунное заболевание. Из-за множества компонентов и уровней подсистем эффект от взаимодействий в сложной системе может быть непредсказуемым. Небольшая ошибка в каком-нибудь фрагменте системы может не слишком сильно повлиять на его частные локальные функции, но при его взаимодействии с другими фрагментами значение такой ошибки вырастет и она повлияет на работу всей системы. Такое непредсказуемое взаимодействие может привести к гибели системы[24].