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

В октябре 2001 года корпорация IBM опубликовала манифест, утверждавший, что главное препятствие на пути дальнейшего развития ИТ-отрасли — это зреющий кризис сложности программного обеспечения [1]. Специалисты корпорации имели в виду программы, содержащие десятки миллионов строк кода, для установки, конфигурации, настройки и поддержки которых необходимы высококвалифицированные ИТ-специалисты.

В манифесте отмечается, что трудности управления современными вычислительными системами выходят за рамки администрирования отдельных программных сред. Необходимость интеграции нескольких гетерогенных сред в общекорпоративные вычислительные системы и стремление выйти за пределы компании, подключившись к Internet, формируют новый уровень сложности. Сложность вычислительных систем, по-видимому, скоро достигнет пределов возможностей человека. К тому же, темпы увеличения внутренних связей и интеграции в дальнейшем будут только расти.

При такой тенденции мечта о повсеместных вычислениях, когда триллионы вычислительных устройств подключены к Сети, может обернуться настоящим кошмаром. Новые возможности языков программирования позволяют инженерам проектировать все более крупные и сложные системы, но нельзя полагаться исключительно на дальнейшее совершенствование методов программирования, надеясь, что они позволят преодолеть назревший кризис сложности.

По мере увеличения разнообразия и объема внутренних связей в системах разработчики все в меньшей степени способны прогнозировать и проектировать взаимодействия между компонентами. Вскоре системы станут настолько массивными, что их будет крайне сложно устанавливать, конфигурировать, оптимизировать, обслуживать и объединять даже самым квалифицированным специалистов. И своевременно, адекватно реагировать на быстрый поток изменений и предпринимать необходимые действия по устранению коллизий будет попросту невозможно.

Саморегуляция

В этой ситуации есть единственный выход — саморегулирующиеся вычисления (autonomic computing), т. е. вычислительные системы, способные сами управлять своей работой с учетом целей, поставленных администратором. Когда старший вице-президент IBM по исследованиям Пол Хорн рассказывал об этой концепции на заседании Национальной инженерной академии инженеров в Гарвардском университете в марте 2001 года, он умышленно выбрал термин, имеющий биологический оттенок. Саморегулирующаяся нервная система управляет ритмом сердца и температурой тела, освобождая наш мозг от нагрузки, связанной с необходимостью выполнять эту и многие другие низкоуровневые, но жизненно важные функции.

Термин «саморегулирующиеся вычисления» символизирует огромную и несколько запутанную иерархию естественных самоуправляемых систем, многие их которых состоят из мириадов взаимодействующих, самоуправляемых компонентов, содержащих, в свою очередь, огромное количество взаимодействующих, автономных, самоуправляемых компонентов следующего, более низкого уровня. Большой масштаб, от молекулярных машин внутри клеток до рынков, сообществ людей и глобальной социоэкономики, отражает столь же значительный диапазон вычислительных систем, которые работают на самых разных структурах, от отдельных устройств до Internet. В силу этого мы считаем, что было бы разумно искать решение в самоуправляемых социальных и экономических, а также в чисто биологических системах.

Развитие концепции саморегулирующихся вычислений — грандиозная задача, которая выходит за рамки отдельной организации. Ее выполнение потребует координированной, долговременной работы специалистов в самых разных областях со всего мира. В первую очередь необходимо подумать о том, как могут выглядеть саморегулирующиеся вычислительные системы, какими функциями они могут обладать и с какими трудностями столкнутся исследователи при их проектировании и при попытках понять их поведение.

Самоуправление

Суть саморегулирующихся вычислительных — самоуправление (self-management), цель которого состоит в том, чтобы избавить администраторов от необходимости детального контроля работы системы и ее обслуживания и вместе с тем обеспечить возможность работать с пиковой производительностью круглосуточно, семь дней в неделю.

Как и их биологические аналоги, саморегулирующиеся системы будут поддерживать и настраивать свою работу с учетом изменений в компонентах, рабочей нагрузки, требований и внешних условий, а также в случае аппаратных и программных сбоев, как преднамеренных, так и случайных. Саморегулирующаяся система может постоянно отслеживать свое использование и проверять, к примеру, изменились ли компоненты. Если система считает, что декларируемые характеристики модернизаций заслуживают внимания, она установит эти модернизации, переконфигурирует себя в случае необходимости и запустит регрессионный тест, чтобы убедиться в корректности своего состояния. В случае обнаружения ошибок система вернется к более старой версии, пока его алгоритмы автоматического выявления проблем пытаются изолировать источник ошибки. Рис. 1 показывает, как это может происходить в случае модернизации саморегулирующейся бухгалтерской системы.

Рис. 1. Диагностика возможных проблем при модернизации в саморегулирующейся системе. Модернизация касается пяти программных модулей, каждый из которых является саморегулирующимся элементом. Через несколько минут после установки регрессионные тесты обнаружили неверные результаты в трех из новых модулей, и система мгновенно вернула их в старое состояние. Модуль выявления проблем, саморегулирующийся элемент, получает информацию о зависимостях между элементами (линии между элементами) из модуля анализа зависимостей, еще одного саморегулирующегося элемента, который периодически тестирует систему (не показан). С учетом его знаний о взаимозависимостях между элементами, модуль выявления проблем анализирует файлы регистрации и делает вывод о том, какие из трех потенциально ошибочных модулей «виноваты» в возникшей проблеме. Он генерирует описание проблемы, содержащее диагностическую информацию, и посылает его разработчику программного обеспечения, который отлаживает модуль и предлагает его для последующих модернизаций

В IBM часто упоминают о четырех аспектах самоуправления, которые кратко описаны в таблице 1. Сначала саморегулирующие системы могут трактовать эти аспекты как независимые, при этом разные группы по продуктам создают решения, которые ориентированы отдельно на каждый из этих аспектов. В конечном итоге, эти аспекты станут свойствами общей архитектуры, и различия постепенно будут сходить на нет, сливаясь в более общем понятии самообслуживания.

Путь к полностью саморегулирующимся вычислениям будет долог, но на этом пути есть несколько важных и значимых этапов. Сначала автоматизированные функции будут просто собирать и объединять информацию для поддержки решений, принимаемых администраторами-людьми. Позже они будут выступать в роли советников, предлагающих возможные варианты действий, которые имеет смысл рассматривать людям. По мере развития технологий саморегуляции и укрепления нашего доверия к ним, мы будет перекладывать на саморегулирующиеся системы принятие низкоуровневых решений (и действие на основе этих решений). Со временем людям придется достаточно редко принимать решения, причем главным образом высокого уровня, и эти решения система будет автоматически выполнять посредством множества низкоуровневых решений и действий.

В конченом итоге, системные администраторы и конечные пользователи станут воспринимать преимущества саморегулирующихся вычислений как нечто само собой разумеющееся. Самоуправляемые системы будут казаться абсолютно естественными и ничем не примечательными, так же как и модернизации промежуточного программного обеспечения. Детальные шаблоны переноса приложений или данных будут нам столь же неинтересны, как и подробности перенаправления телефонного звонка.

Самоконфигурирование

Установка, конфигурирование и интеграция крупных, сложных систем — вещь трудная, требующая больших затрат времени и способствующая возникновению множества ошибок, даже когда ею занимаются эксперты. Большинство крупных корпоративных центров обработки данных расширяются за счет произвольного добавления серверов, маршрутизаторов, баз данных и других технологий на различных платформах разных производителей. В силу этого группам даже высококвалифицированных специалистов может потребоваться несколько месяцев на объединение двух систем или установку крупного приложения электронной коммерции.

Саморегулирующиеся системы будут сами автоматически конфигурироваться в соответствии с высокоуровневыми правилами (представляющими, например, общие цели компании), которые определяют, что именно необходимо сделать, а не каким образом этого можно добиться. После того, как компонент представлен, он будет интегрироваться сам, не вызывая никаких конфликтов, и остальная часть системы будет адаптироваться к его присутствию (как новая клетка тела или новый человек в коллективе). Например, когда в саморегулирующейся бухгалтерской системе представлен новый компонент, как показано на рис. 1, информация о нем поступит автоматически и будет учтена при формировании и конфигурировании системы. Компонент зарегистрируется сам и зарегистрирует свои функции таким образом, что другие компоненты смогут либо использовать его, либо соответствующим образом изменить свое собственное поведение.

Самооптимизация

Сложное промежуточное программное обеспечение, такое как WebSphere, или СУБД, подобные Oracle или DB2, могут иметь сотни настраиваемых параметров, которые необходимо корректно установить в системе для ее оптимальной работы, при том, что очень немногие знают, как эти параметры настроить. Такие системы часто интегрируются с другими, столь же сложными системами. Как следствие, настройка производительности одной крупной подсистемы может непредвиденным образом повлиять на работу системы в целом.

Саморегулирующиеся системы будут постоянно изыскивать пути совершенствования своих операций, выявляя и используя возможности для того, чтобы стать более эффективными с точки зрения производительности или затрат. Точно так же, как мускулы становятся сильнее от физических упражнений, а мозг меняет свою структуру во время обучения, саморегулирующиеся системы будут отслеживать, опробовать и настраивать свои параметры и учиться делать правильный выбор относительно того, следует ли сохранить функции или передать их на независимое сопровождение. Они стремятся заранее модернизировать свою функцию, выполняя поиск последних модернизаций, проверяя и выполняя их.

Самовосстановление

В IBM и других ведущих ИТ-компаниях существуют огромные отделы, занимающиеся идентификацией, поиском и определением глубинных причин возникновения сбоев в сложных вычислительных системах. Серьезные проблемы, возникшие у клиентов, могут заставить группы программистов потратить несколько недель на поиск и устранение ошибок, а иногда проблема волшебным образом исчезает без сколько-нибудь разумного объяснения.

Саморегулирующиеся вычислительные системы будут обнаруживать, диагностировать и устранять локализованные проблемы, возникающие из-за ошибок или сбоев в программном и аппаратном обеспечении — возможно, с помощью регрессионных тестов (рис. 1). Используя знания о системной конфигурации, компонент диагностирования проблем (базирующийся, к примеру, на механизме байесовых сетей) будет анализировать информацию из файлов регистрации, возможно дополненную данными со вспомогательных мониторов, которые он затребовал. Затем система сравнит диагноз с известными программными заплатами (или уведомит программиста, если таковой заплаты не существует), установит соответствующую заплатку и проведет повторное тестирование.

Самозащита

Несмотря на наличие межсетевых экранов и средств обнаружения вторжений, сейчас людям приходится самим решать, как защитить системы от вредоносных атак и непреднамеренных неверных действий, порождающих целую цепочку ошибок.

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

Вопросы архитектуры

Саморегулирующиеся системы будут представлять собой наборы саморегулирующихся элементов (autonomic elements) — системных компонентов, содержащих ресурсы и предоставляющих услуги людям или другим саморегулирующимся элементам. Саморегулирующиеся элементы будут управлять своим внутренним поведением и своими взаимоотношениями с другими саморегулирующимися элементами в соответствии с правилами, установленными людьми или другими элементами. Системное самоуправление возникнет, как минимум, как из множества взаимодействий между саморегулирующимися элементами, так и из внутреннего самоуправления отдельных саморегулирующихся элементов, точно так же, как социальный интеллект любой колонии муравьев возникает как результат взаимодействия друг с другом отдельных муравьем. Саморегулирующиеся элементы и их взаимодействия будет поддерживать распределенная, ориентированная на службы инфраструктура.

Рис. 2. Структура саморегулирующегося элемента. Элементы взаимодействуют друг с другом и программистами через своих саморегулирующихся менеджеров

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

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

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

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

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

На более низких уровнях диапазон внутреннего поведения элемента и его связи с другими элементами, а также набор элементов, с которыми он может взаимодействовать, могут быть довольно ограничены и жестко очерчены. В частности, на уровне отдельных компонентов, прочно утвердившиеся методы, многие из которых подпадают под категорию отказоустойчивости, приводят к разработке элементов, на которых редко возникает сбой, что является одним из важных аспектов саморегулируемости. Десятилетия развития методов обеспечения отказоустойчивости привели к появлению таких уникальных инженерных решений, как серверы IBM zSeries, для которых время между сбоями исчисляется десятилетиями.

На более высоких уровнях фиксированное поведение, связи и взаимоотношения дадут возможность увеличить динамизм и гибкость. Все эти аспекты саморегулирующихся элементов будут выражены в более высокоуровневых, ориентированных на конкретные цели терминах. При этом за принятие решений на более детальном уровне будут отвечать сами элементы.

Жестко определенное поведение даст возможность описывать поведение в виде целей более высокого уровня, таких как «максимизировать использование функции данной утилиты» или «найти приемлемую службу передачи сообщений». Постоянные соединения между элементами дадут возможность существенно сократить прямое указание партнеров для элементов, от спецификации по физическим адресам до спецификации по имени и, наконец, спецификации по функции, при этом личность партнера будет устанавливаться только тогда, когда это потребуется.

Постоянные связи будут преобразовываться в гибкие связи, которые устанавливаются в результате переговоров. Элементы будут автоматически обрабатывать новые режимы ошибки, такие как нарушение контрактов поставщиком, без вмешательства человека.

Концепции архитектуры, ориентированной на службы, такие как Web и Grid [2, 3], будут играть фундаментальную роль, однако приемлемая основа для саморегулирующихся вычислений требует большего. Во-первых, будучи поставщиками услуг, саморегулирующиеся элементы, в отличие от обычных Web-служб или объектов в объектно-ориентированной среде, не будут предоставлять свои услуги по первому требованию. Они предложат услугу только в том случае, если это согласуется с их целями. Во-вторых, будучи потребителями, саморегулирующиеся элементы будут независимо и заранее выдавать запросы другим элементам для выполнения своих задач.

Наконец, саморегулирующиеся элементы будут иметь сложные жизненные циклы, постоянно принимая участие в различных процессах, и постоянно воспринимая и реагируя на среду, в которой они находятся. Независимость, заблаговременность и ориентированное на выполнение своих задач взаимодействие со средой — вот отличительные особенности программных агентов. Восприятие саморегулирующихся элементов как агентов, а саморегулирующихся систем как мультиагентных систем, позволяет четко понять, что концепции архитектур, ориентированных на агенты, приобретут критическое значение [4].

Нерешенные инженерные задачи

Практически все аспекты саморегулирующихся вычислений ставят серьезные инженерные задачи. В процессе жизненного цикла отдельного саморегулирующегося элемента или при поддержке отношений между саморегулирующимися элементами возникает целый ряд проблем. Есть и немало трудностей в обеспечении работы системы как единого целого, и еще больше проблем связано с организацией интерфейса между человеком и саморегулирующимися системами.

Жизненный цикл саморегулирующегося элемента

Жизненный цикл саморегулирующегося элемента начинается с проектирования и реализации, продолжается при тестировании и проверке корректности, а затем наступают этапы установки, конфигурирования, оптимизации, модернизации, мониторинга, выявления проблем и восстановления. Завершается все удалением или заменой. Каждый из этих этапов ставит свои вопросы и создает свои трудности.

Проектирование, тестирование и проверка корректности. Программирование саморегулирующегося элемента будет означать расширение Web-служб и служб распределенных вычислений с помощью инструментальных средств и методик программирования, которые помогают в управлении связей с другими саморегулирующимися элементами. Поскольку саморегулирующиеся элементы получают и предлагают услуги, декларация потребностей и предпочтений будет столь же важным, как представление возможностей. Программистам потребуются инструменты, которые помогут им получать и декларировать политики (высокоуровневые спецификации целей и ограничений, обычно описываемые в виде правил или вспомогательных функций) и отобразить их на действия более низкого уровня. Им также понадобятся инструменты для создания элементов, которые могут устанавливать, контролировать и поддерживать соглашения.

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

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

Потенциальные пользователи этого элемента также, возможно, захотят протестировать его поведение, как до утверждения сервисного соглашения, так и во время его реализации. Один из подходов, касающихся саморегулирующихся элементов, заключается в присоединении метода тестирования к описанию службы этого элемента.

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

Мониторинг и выявление проблем. Мониторинг станет существенной функцией саморегулирующихся элементов. Элементы будут постоянно проводить собственный мониторинг с целью убедиться, что они добиваются своих собственных целей, и будут регистрировать эту информацию, которая послужит основой для адаптации, самооптимизации и переконфигурирования. Они также будут постоянно выполнять мониторинг своих поставщиков, проверяя, что они получают оговоренный уровень обслуживания, а их клиенты — не превышают установленного уровня использования. Специальные контролирующие элементы могут выполнять мониторинг других элементов и посылать уведомления заинтересованным участникам в случае каких-либо нарушений.

Вместе с корреляцией событий и другими формами анализа мониторинг будет играть важную роль для поддержки выявления проблем и восстановления в случае обнаружения ошибки или подозрения о ее наличии. Мониторинг, проверка корректности и тестирование всех необходимых точек таким образом, чтобы не создавать дополнительную нагрузку на системы за счет использования чрезмерной полосы пропускания или процессорных ресурсов, будут крайне непросты. Здесь могут оказаться весьма полезными технологии, позволяющие выполнять статистическую проверку или тестирование по образцу в динамической среде.

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

В иных ситуациях, однако необходимо точно определить, почему один или несколько элементов действуют некорректно, причем предпочтительно сделать это без выключения и перезагрузки всей системы. Такое решение теоретически требует инструментов трассировки, моделирования и выявления проблем в сложных динамических средах. В частности, когда саморегулирующиеся элементы (или приложения, базирующиеся на взаимодействиях между множеством элементов) имеют обширную информацию о состоянии, элегантное и быстрое восстановление после сбоя или перезапуск приложений после модернизации программного обеспечение или переноса функции новые машины, будет чрезвычайно сложным. Дэвид Паттерсон и его коллеги из университета Беркли и Стэнфордского университета (Калифорния) уже добились значительных результатов в этой области [5].

Модернизация. Саморегулирующимся элементам время от времени необходимо себя модернизировать. Они могут подписаться на особую службу, которая уведомит их о наличии соответствующих модернизаций и примет за них решение, когда следует провести модернизацию, вероятно под руководством другого элемента или человека. С другой стороны, система могла бы в рамках модернизации создавать полностью новые элементы, удалив устаревшие элементы только убедившись, что новые элементы работают корректно.

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

Связи между саморегулирующимися элементами

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

Спецификация. Саморегулирующийся элемент должен иметь связанный с ним набор выходных услуг, которые он может предоставлять, и набор входных услуг, которые ему необходимы, выраженные в стандартном формате таким образом, чтобы другие саморегулирующиеся элементы могли их воспринимать. Как правило, элемент будет регистрироваться в таких реестрах, как Universal Description, Discovery and Integration [6] или реестр Open Grid Services Architecture [3], предоставляя описание своих возможностей и данные об адресах и протоколах, которые другие элементы или люди могут использовать для связи с ним.

Создание стандартной онтологии служб и стандартных синтаксиса и семантики описания служб, которые позволяют машинам интерпретировать и воспринимать их, сейчас является областью активных исследований. Примером таких усилий является проект Semantic Web [7], предпринятый DARPA.

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

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

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

Переговоры. Как только элемент нашел потенциальных провайдеров входных услуг, он должен «обсудить» с ними условия получения услуги.

Под переговорами мы понимаем любой процесс, при котором достигается соглашение. Во время переговоров элемент, предоставляющий услуги, является зависимым от того элемента, который эти услуги запрашивает, и провайдер должен предоставлять услуги до тех пор, пока у него есть необходимые для этого ресурсы. Еще одна простая форма переговоров — предоставление услуг по принципу «первый пришел, первого обслужили». В этом случае провайдер удовлетворяет все запросы до тех пор, пока не достигнет ограничений на ресурсы. В переговорах с предоставлением информации о стоимости провайдер устанавливает цену на свои услуги, а элемент, обращающийся за услугами, должен либо ее принять, либо отказаться от услуг.

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

Именно на этапе переговоров при саморегулирующихся вычислениях возникает целый круг инженерных и научных задач. Элементам необходимы гибкие решения, позволяющие выражать требования к многочисленным параметрам и возможностям, и им нужны механизмы, позволяющие получить описание этих требований от человека или вычислительных систем. Им также требуются эффективные стратегии и протоколы, которые определяют правила ведения переговоров и управляют потоком сообщений, которыми обмениваются стороны. Должны существовать языки, позволяющие описывать соглашения об обслуживании — результат успешных переговоров — в их промежуточном и окончательном вариантах.

Попытки стандартизировать представление соглашений уже предпринимаются, но механизмы ведения переговоров, контроля выполнения достигнутых соглашений и восприятия соглашений отсутствуют, также как и методы, позволяющие преобразовывать их в реальные планы действий.

Предоставление. Как только два элемента пришли к соглашению, они должны предоставить свои внутренние ресурсы. Процедура предоставления может быть очень простой и сводиться к отметке в списке доступа, с помощью которого конкретный элемент в будущем может затребовать услугу. Либо эта процедура может формировать дополнительные взаимоотношения с другими элементами, которые становятся субподрядчиками в предоставлении определенной части оговоренной услуги или выполнении некоторой задачи.

Функционирование. После того как стороны обеспечили корректное предоставление услуг, они действуют в рамках достигнутого при переговорах соглашения. Саморегулирующийся менеджер провайдера услуг следит за работой своего управляемого элемента, контролирует ее с тем, чтобы гарантировать выполнение соглашения. Уровень обслуживания может также контролировать и субъект, затребовавший услугу.

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

Окончание действия соглашения. Когда стороны принимают решение об окончании действия соглашения, они освобождают свои внутренние ресурсы и направляют их на выполнение другой работы, а также завершают соглашение на входные услуги, в которых больше нет необходимости. Стороны могут локально хранить необходимую информацию о взаимном предоставлении услуг, либо размещать ее в базе данных со сведениями о «репутации» элементов.

Общесистемные вопросы

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

Для саморегулирующихся вычислительных систем будут актуальны все те же вопросы безопасности, которые решаются и для традиционных вычислительных систем. Саморегулирующимся элементам и системам потребуется устанавливать и выполнять правила организации защиты таким образом, как сейчас это делают системные администраторы. Более того, им придется делать это понятным и надежным образом.

Системы, которые охватывают несколько административных доменов (особенно выходящие за рамки одной компании), сталкиваются с теми же трудностями, которые возникают при развитии электронной коммерции. К ним, в частности, относятся аутентификация, предоставление прав, шифрование, цифровые подписи, контроль и мониторинг защиты, запрещение отказа от авторства, объединение данных и маскирование личности, а также выполнение сложных юридических требований, своих в каждом штате и в каждой стране.

Инфраструктура саморегулирующихся систем должна позволять саморегулирующимся элементам идентифицировать себя, проверять идентичность других субъектов, с которыми они взаимодействуют, проверять, что сообщение не было изменено при передаче, а также гарантировать, что субъекты, не имеющие прав доступа, не смогут прочитать сообщения и другие данные. Чтобы выполнять правила и законы обеспечения конфиденциальности, элементы должны также корректно защищать частную информацию, поступающую в их распоряжение. Меры, которые обеспечивают изоляцию данных в соответствии с их источниками и назначением, должны распространяться на мир саморегулирующихся элементов, поскольку только в этом случае удастся выполнить все установленные правила работы и юридические требования.

Саморегулирующиеся системы должны быть надежно защищены от новых и злонамеренных видов атак, которые в своих целях используют самоуправление на основе правил высокого уровня. Изменяя или иным образом манипулируя высокоуровневыми правилами, хакер может получить значительно больше, чем позволяют системы, не поддерживающие самоуправление. Предотвращение таких ситуаций может потребовать новых мер по обеспечению компьютерной безопасности, препятствующие мошенничеству и «обману» саморегулирующихся элементов.

В более общем смысле саморегулирующиеся элементы будут агентами, а саморегулирующиеся системы, по существу, мультиагентными системами, созданными на основе Web-служб и инфраструктуры OGSA. Саморегулирующиеся системы должны содержать промежуточных агентов [8], которые сыграют роль посредников различных типов, включая службы каталогов, средства установки соответствий, брокеры, средства проведения аукционов, системы консолидации данных, менеджеры зависимостей, системы корреляции событий, анализ защиты, установки временных методов, контрольные датчики и другие виды мониторов, оценивающие состояние других элементов или системы в целом.

Традиционно многие из этих служб являются частью системной инфраструктуры. В мультиагентной, саморегулирующейся среде изъятие их из инфраструктуры и оформление в виде саморегулирующихся элементов станет более естественным и гибким.

Описание целей

Хотя предполагается, что саморегулирующиеся системы возьмут на себя значительно большую нагрузку, касающуюся работы систем и их интеграции, правила функционирования этих систем по-прежнему будут устанавливать люди, т. е. именно они будут определять цели и ограничения, определяющие действия систем. Использование саморегулирующихся систем значительно снизит нагрузку на человека, но при этом последствия сделанных им ошибок могут оказаться более серьезными.

Косвенное влияние правил работы на конфигурирование и поведение системы еще больше усугубляет ситуацию, поскольку выявление и исправление ошибок будет весьма непростой задачей. В силу чего крайне важно убедиться в том, что конкретные цели указывают на то, что действительно требуется. При таком подходе возникают две серьезные инженерные задачи: во-первых, гарантировать, что цели указаны корректно, а, во-вторых, гарантировать, что система ведет себя «разумно», даже если цели определены неправильно.

Во многих случаях набор целей, которые следует определить, будет сложным, многопараметрическим и противоречивым. Даже такая простая на первый взгляд цель, как «максимизировать использование утилиты» требует, чтобы человек описал ее, возможно, очень сложные функции. Сократить число возможных ошибок можно за счет упрощения и четкого описания средств, с помощью которых человек указывает компьютеру, какие цели он преследует.

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

Вторая задача — гарантировать разумное поведение системы в случае неверных входных данных — это оборотная сторона надежности. Саморегулирующиеся системы должны защищать себя в тех случаях, когда поставленные цели не являются согласованными, практически осуществимыми, безопасными или выполнимыми при имеющихся ресурсах. Саморегулирующиеся системы будут подвергать такую входную информацию дополнительной проверке, а в случае неадекватности мер самозащиты, будут использовать глубинные представления о том, что является приемлемым поведением, чтобы выявить проблемы и устранить их. В некоторых случаях, например, при нехватке ресурсов, они будут информировать операторов о природе возникших проблем и предлагать альтернативные решения.

Научные задачи

Успех саморегулирующихся вычислений будет зависеть от того, насколько корректно теоретики смогут определить общие принципы, охватывающие множество уровней, на которых могут существовать саморегулирующиеся системы — от отдельных компьютеров до предприятий и целых стран.

Поведенческие абстракции

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

Понимание соответствия между локальным и глобальным поведением — необходимое, но недостаточное условие для управления и проектирования саморегулирующихся систем. Необходимо выяснить, как использовать инверсные связи: каким образом можно вывести набор правил поведения и взаимодействия, которые при реализации их в отдельных саморегулирующихся элементах обеспечат требуемое глобальное поведение? Нелинейность поведения совокупности элементов делает такую инверсию весьма нетривиальной.

Один из возможных подходов предусматривает объединение перспективных методов поиска и оптимизации с параметризованными моделями зависимостей между локальным и глобальным поведением и вероятным набором воздействий среды, которым будет подвержена система. Мелани Митчелл и ее коллеги [9] первыми применили такой подход, используя общие алгоритмы для развития локальных правил преобразования простого клеточного автомата для достижения требуемого глобального поведения. Дэвид Вулперт и его коллеги [10] изучили алгоритм, который, учитывая высокоуровневую глобальную цель, определяет конкретные цели для отдельных агентов. Когда каждый агент добивается своих собственных целей, в результате удается получить требуемое глобальное поведение.

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

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

Теория надежности

Главная задача — разработать теорию надежности саморегулирующихся систем, в том числе выработать определения и провести анализ надежности, разнообразия, избыточности и оптимальности, а также их связь друг с другом.

Теория обучения и оптимизации

Машинное обучение с помощью одного агента в относительно статических средах хорошо изучено, и подтверждается серьезными теоретическими результатами. Однако в более сложных саморегулирующихся системах отдельные элементы будут агентами, которые постоянно адаптируются к своей среде, которая, в основном, состоит из других агентов. Таким образом, даже при стабильных внешних условиях агенты адаптируются друг к другу, что не соответствует традиционным предположениям, на которых базируются теории обучения для одного агента.

Нет никаких гарантий сходимости. Фактически, в таких случаях наблюдаются интересные формы нестабильности [11]. Обучение в мультиагентных системах — задача крайне сложная и довольно плохо изученная. Здесь нет практически никаких теорем; существует лишь несколько практических результатов.

Не менее сложной, чем обучение в мультиагентной системе проблемой становится и оптимизация. Основная тому причина — та же самая. Вне зависимости от того, выполняют ли они обучение или оптимизацию, агенты меняют свое поведение, что заставляет других агентов тоже изменять свое поведение, а это может привести к нестабильности. Оптимизация в такой среде должна иметь дело с динамикой, создавая коллективный режим колебания, а не смещения сигнала среды. Методики оптимизации, которые предполагают, что среда остается стационарной, оказываются абсолютно неподходящими для мультиагентных систем [12], в силу чего их необходимо либо модернизировать, либо заменить новыми методами.

Теория переговоров

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

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

Автоматизированное статистическое моделирование

Статистические модели крупных сетевых систем позволят саморегулирующимся элементам или системам определять или прогнозировать нехватку общей производительности на основе потока данных, получаемых с отдельных устройств. В течение длительного периода (во время которого меняется конфигурация системы) мы ищем методы, которые автоматизируют сбор статистических параметров для того, чтобы сократить масштаб проблемы до размера, приемлемого для адаптивных методов обучения и оптимизации, рассчитанных на меньший масштаб времени.

Можно ли справиться с грандиозными задачами саморегулирующихся вычислений, не прибегая к магии и не решая полностью задачу искусственного интеллекта? Можно, но это потребует времени и терпения. Задолго до того, как будут решены более сложные проблемы, менее автоматизированные реализации саморегулирующихся систем станут весьма полезными, а их польза будет постоянно возрастать по мере совершенствования технологии саморегулирующихся вычислений и завоевать большее доверие и популярность.

Представление такого масштаба требует объединения знаний из многих компьютерных дисциплин, а также таких дисциплин, которые выходят за рамки традиционных вычислительных систем. Надо обратиться к ученым, занимающихся вопросами нелинейной динамики и сложности, в поисках новых теорий явления совокупного поведения и обеспечения надежности. Надо обратиться к экономистам и специалистам по электронной коммерции в поисках идей и технологий, касающихся переговоров и сетей поставки. Надо обратиться к психологам и ученым, изучающим человеческий фактор в поисках новых определений целей и парадигм визуализации и путей помощи людям в создании доверительных отношений в саморегулирующихся системах. Надо обратиться к специалистам в области права, поскольку многие аналогичные вопросы, возникающие в контексте электронной коммерции, окажутся важными и для саморегулирующихся систем, которые действуют в рамках организаций или целых государств.

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

Литература
  1. IBM, "Autonomic Computing: IBM's Perspective on the State of Information Technology"; http://www-1.ibm.com/industries/government/doc/ content/resource/thought/278606109.html.
  2. H. Kreger, "Web Services Conceptual Architecture", 2001; http://www-4.ibm.com/software/solutions/ webservices/pdf/WSCA.pdf.
  3. I. Foster et al., "The Physiology of the Grid: An Open Grid Services Architecture for Distributed Systems Integration", Feb. 2002; http://www.globus.org/research/ papers/ogsa.pdf.
  4. N.R. Jennings, "On Agent-Based Software Engineering", Artificial Intelligence, vol. 177, no. 2, 2000.
  5. D. Patterson et al., Recovery-Oriented Computing (ROC): Motivation, Definition, Techniques, and Case Studies, tech. report CSD-02-1175, Computer Science Dept., Univ. of Calif., Berkeley, Calif., 2002. Mar.
  6. Ariba, IBM, Microsoft, "UDDI Technical White Paper", 2000; http://www.uddi.org/whitepapers.html.
  7. T. Berners-Lee, J. Hendler, O. Lassila, "The Semantic Web", Scientific American, 2001. May
  8. H. Wong, K. Sycara, "A Taxonomy of Middle Agents for the Internet", Proc. 4th Int'l Conf. Multiagent Systems, IEEE CS Press, 2000.
  9. R. Das et al., "Evolving Globally Synchronized Cellular Automata", Proc. 6th Int'l Conf. Genetic Algorithms, L. Eshelman, ed., Morgan Kaufmann, 1995.
  10. D. Wolpert, K. Wheeler, K. Tumer, Collective Intelligence for Control of Distributed Dynamical Systems, tech. report NASA-ARC-IC-99-44, NASA, Ames, Iowa, 1999.
  11. J.O. Kephart, G.J. Tesauro, "Pseudo-Convergent Q-Learning by Competitive Pricebots", Proc. 17th Int'l Conf. Machine Learning, Morgan Kaufmann, 2000.
  12. J.O. Kephart et al., "Pricing Information Bundles in a Dynamic Environment", Proc. 3rd ACM Conf. Electronic Commerce, 2001, ACM Press.

Джеффри Кефарт (kephart@us.ibm.com) руководит группой Исследовательского центра им. Томаса Уотсона корпорации IBM. К области его научных интересов относятся применение аналогий из биологии и экономики к распределенным вычислительными системам, особенно в области саморегулирующихся вычислений, электронной коммерции и технологии антивирусов. Дэвид Чесс (chess@us.ibm.com) — научный сотрудник Исследовательского центра им. Томаса Уотсона корпорации IBM. Он специализируется на вопросах саморегулирующихся вычислений и защиты компьютерных систем.


Jeffrey O. Kephart, David M. Chess, The Vision of Autonomic Computing. Computer, January 2003. IEEE Computer Society. All rights reserved. Reprinted with permission.