ДИНАМИЧЕСКОЕ ОРКЕСТРОВКЕ REST-СЕРВИСОВ С ИСПОЛЬЗОВАНИЕМ БАЗЫ ЗНАНИЙ
Ключевые слова:
сервисно-ориентированная архитектура (СОА), REST, оркестровки сервисов, база знаний, графовая база данныхАннотация
Рассматривается подход к организации автоматизированного процесса выполнения вычислений с использованием веб-сервисов (в частности, REST-сервисов). Данное решение позволит упростить процедуру внедрения новой функциональности в прикладных системах, построенных на принципах сервисно-ориентированной архитектуры и микросервиснои архитектуры. Главная идея данного решения в том, чтобы максимально разделить разработку серверной логики системы и логику клиентских приложений, когда клиенты используются для постановки абстрактных вычислительных задач без привязки к имеющимся прикладных сервисов. При этом предлагается использовать централизованную схему организации вычислений (так называемое оркестровки) и разместить набор правил, по которым в несколько этапов с абстрактной постановки задачи строятся конкретные вычислительные сценарии, в базе знаний. К программной архитектуры прикладной системы предлагается включить подсистему выполнения вычислительных задач. В состав подсистемы входят сервисы обслуживания запросов на выполнение задач, реестр прикладных сервисов с базой знаний о сервисах, и сервис оркестровки. Клиенты посылают запросы к подсистеме выполнения задач без указаний на реальные сервисы, которые нужно выполнить. Реестр сервисов ищет в базе знаний соответствующий шаблон входящего запроса, для которого дальше ищет описание абстрактной операции, которая ему соответствует. Каждая абстрактная операция может иметь реализацию в форме рабочего процесса, составленного из вызовов операций реальных прикладных сервисов. При отсутствии такого готового соответствия в базе знаний рабочий процесс можно синтезировать динамично согласно входных и выходных данных и описания функциональности абстрактной операции по запросу и имеющихся в реестре сервисов. Рабочие процессы выполняются оркестровщика. Таким образом, добавление новых функций на стороне клиента может быть введено без изменений серверной стороны, только за счет повторного использования сервисов. С другой стороны, добавление новых сервисов может повлиять на фактическое выполнение вычислений без обновления клиентов.