Скачать 398.15 Kb.
|
Сравнение EAI платформ на примере реализации импорта информации о сделкахВ качестве Enterprise Application Integration (EAI) платформ для сравнения использовались:
Были разработаны 2 решения одной интеграционной задачи на каждой из платформ и написаны программы, представляющие собой исходную и целевую системы для интеграции. Тестовый веб-сервис генерирует файл со сделками для импорта, который обрабатывается EAI платформой. Сделки импортируются через веб-сервис бухгалтерской системы, результат загрузки также обрабатывается EAI и передается обратно в тестовый веб-сервис для сохранения результата. Общая схема реализованного мной решения такова: Интерфейсы системВ нашем примере интеграции интерфейсом исходной системы (системы управления портфелем) является XML схема, в которой система публикует информацию о сделках. Была разработана следующая схема (SourceTradeSchema.xsd):
Наш сценарий предусматривает, что система управления портфелем имеет возможность сохранить результат загрузки сделки. В нашей реализации это будет сделано с помощью метода веб-сервиса с простой сигнатурой: public void StoreTestResult(string testTradeId, string errorMessage, bool posted) Параметр testTradeId должен содержать уникальный идентификатор сделки, отправленной системой в файле запроса. Целевая система нашей интеграции, - бухгалтерская система,- предоставляет веб-сервис TradeImportService с одним методом ImportTrades: public LoaderOutput ImportTrades(TradeLoader trades)
Данный метод принимает массив записей Trade, проверяет для каждой условия целостности и корректности данных (наличие ценной бумаги, кода прайм брокера, стратегии и типа сделки, а, также, что общая стоимость сделки не превосходит установленный лимит) и для каждой записи возвращает запись TradeUploadStatus, куда копируется внешний идентификатор сделки и результат валидации. Наше интеграционное решение в первую очередь должно осуществлять корректную трансформацию между схемой TradeRequest (системы управления портфелем) и TradeLoader (бухгалтерской системы). Логика трансформации должна учитывать допустимые значения в целевой системе, например, TradeType может быть только BY, SL, SH и BC, для того, чтобы сделка была обработана бухгалтерской системой. Реализация на Microsoft BizTalkИнтеграционное решение на Microsoft BizTalk состоит из двух процедур обработки сообщений (в терминах BizTalk – orchestration): TradesToAccountingSystem.odx – принимает файл со сделками, вызывает веб-сервис бухгалтерской системы и обрабатывает результат:
ImportStatusRouter.odx – реализация шаблона проектирования Message Router [EIP]. Принимает сообщение с результатами загрузки, разбивает на массив результатов по каждой записи и в зависимости от типа записи, перенаправляет сообщение в исходную систему:
ImportStatus = xpath(ImportStatuses, "/*[local-name()='ImportStatus']/*[local-name()='EntityImportStatus']["+position+"]");
System.Convert.ToString(xpath(ImportStatus, "string(/*[local-name()='EntityImportStatus']/*[local-name()='EntityType'])")) == "Trade"
Реализация на IBM Message BrokerПодобное решение было разработано и на IBM WebShere Message Broker, были написаны две процедуры обработки сообщений (в терминах Message Broker – message flow). TradesToAccountingSystem.msgflow – запускается при появлении xml файла со сделками в определенной директории, производит отображение данных в формат веб-сервиса бухгалтерской системы, вызывает метод загрузки сделок на этом веб-сервисе и передает статусы загрузки в очередь MQ:
RouteImportStatus.msgflow – реализация Message Router в нашем интеграционном решении:
$Body/Ent:EntityImportStatus/EntityType = 'Trade'
Развитие интеграционного решенияТеперь проанализируем, какие изменения нужно будет сделать в наших двух интеграционных решениях на BizTalk и IBM Message Broker, если нужно будет внести следующую новую функциональность. Добавление еще одной системы, отправляющей данные по сделкам. Для того, чтобы поддержать еще одну исходную систему, нужно добавить процедуру обработки сообщений (в случае BizTalk – orchestration, IBM Message Broker – message flow) аналогичную уже существующей. Если вторая система публикует данные в XML файл того же формата, что и первая, то это не будет необходимым. Также, можно сделать процедуру, которая приводит формат данных второй системы к уже поддерживаемому, и потом просто вызвать процедуру загрузки сделок. В процедуру обработки статусов загрузки нужно добавить отсылку статусов во вторую систему. Таким образом, наш диспетчер статусов (message router) при обработке статуса загрузки сделки (ветка Trade в обеих реализациях) отправит статус два раза - в первую и вторую систему. Требованием к системам будет корректно обрабатывать статусы на те идентификаторы сделок, что не были отправлены данной системой. Если это условие не исполняется, то нужно добавлять дополнительное поле в схему EntityImportStatus (например, SourceSystem), которое будет обозначать исходную систему, заполнять этот параметр в процедуре загрузки сделок (для каждой из исходной систем) и создавать еще один диспетчер, который отправляет статус загрузки в правильную исходную систему в зависимости от значение этого поля. Добавление еще одной сущности, которую нужно загружать в бухгалтерскую систему. Например, помимо сделок, нужно также иметь интеграцию между системой получения информации о ценных бумагах и бухгалтерской системой. Во-первых, бухгалтерская система должна иметь интерфейс загрузки данных о ценных бумагах. Во-вторых, в интеграционном решении должна быть добавлена процедура, принимающая от исходной системы данные о ценных бумагах, вызывающая интерфейс бухгалтерской системы для их сохранения и возвращающая результат сохранения по уже определенной схеме EntityImportStatus, но с полем EntityStatus заданным как “Security”. Процедура обработки статусов потребует при этом минимальных изменений. Диспетчеру статусов нужно будет добавить еще одно условие для “Security”, за которым следует отправка статуса загрузки в исходную систему. Тестирование производительностиДля проверки правильности работы и быстродействия созданного интеграционного решения был написан инструмент для тестирования. Запускаемые тесты имеют следующую структуру:
Тестовая база данных имеет следующие таблицы: Тестовые сделки генерируются в базе данных на основе набора данных по акциям, входящим в состав индекса S&P Global BMI, списка возможных значений портфеля, брокера, прайм брокера, стратегии и типа сделки. Хранимая процедура принимает на вход количество записей, которое нужно сгенерировать, делает выборку этого количества случайных записей из таблицы SecData (данные по акциям) и затем подставляет случайные значения для остальных свойств сделки. Результаты сохраняются в таблицу GeneratedTrade. Запуск теста осуществляется веб-сервисом TestStartService, который имеет два метода:
public void StartTest(string testName, string targetSystemName)
public void StoreTestResult(string testTradeId, string errorMessage, bool posted) Этот веб-сервис был написан на Microsoft .NET 3.5, для работы с базой данных использовалась технология Linq to SQL. Результаты тестированияИспользуя созданный тестовый инструмент было проведено тестирование производительности интеграционных решений, созданных на Microsoft BizTalk и IBM WebShere Message Broker на основании шести тестов:
Тестирование проводилось на компьютере с операционной системой Microsoft Windows XP Service Pack 3, процессор Intel Core2 2.13 Ггц, операционная память 2.0 Гб. Все компоненты интеграционного решения, тестового веб-сервиса и веб-сервиса бухгалтерской системы были развернуты на одном компьютере:
Как видно из результатов выполнения тестов, решение на Microsoft BizTalk, существенно медленнее обрабатывает сообщения большого объема. Дополнительный анализ показал, что причина низкой производительности кроется в выбранном способе разбиения сообщения с набором записей EntityImportStatus на отдельные сообщения (в процедуре ImportStatusRouter.odx). Дело, вероятно, в скорости работы цикла (узел Loop) и в том, что на каждом шаге этого цикла, создается новое сообщение, которое сначала сохраняется BizTalk в свою базу данных, и лишь за тем обрабатывается. Для оптимизации можно предложить другой способ разбиения сообщений (через компонент BizTalk для парсинга сообщений - pipeline), либо написать собственный адаптер для веб-сервиса, который будет разбивать сообщения более быстро, либо потребовать от исходной системы метод, позволяющий сохранять статусы для целого набора сделок, а не по одной. Последний вариант убирает необходимость разбивать сообщения в принципе. Тем не менее, верно то, что BizTalk не подходит для обработки больших объемов данных. С точки зрения легкости освоения и простоты разработки, две рассматриваемые системы весьма схожи, и нельзя отдать предпочтение какой-либо из систем. На разработку и отладку решения на BizTalk, мне потребовалось порядка 14ти часов работы, на IBM Message Broker – 18 часов. При этом я уже имел опыт разработки на BizTalk, помимо этой работы, а платформу IBM я осваивал с нуля. В пользу BizTalk говорит то, что выражения для обработки сообщений (за рамками средства визуального построения трансформаций) можно писать на C# и XPath, тогда как в IBM Message Broker для тех же задач используется собственный внутренний язык EQSL, который нужно изучать дополнительно. Преимуществом IBM Message Broker, безусловно, является скорость работы, кроме этого эта система поддерживает большинство операционных систем (Windows, Linux, IBM z/OS, Solaris), BizTalk же работает только на Windows. Стоимость лицензии выше у IBM Message Broker и составляет 97300$ для Enterprise Edition, 25000$ для Starter Edition (до 10ти message flow) [Сравнение EAI]. Кроме этого для работы системы потребуется IBM WebSphere MQ. Лицензия Microsoft BizTalk обойдется в 35000$ за Enterprise edition и 8500$ за Standard edition (ограничение на работу только пяти приложений на BizTalk сервере) [BizTalk Pricing & Licensing]. Кроме этого, потребуются лицензии Microsoft SQL Server Standard Edition для баз данных BizTalk и Microsoft Visual Studio для разработки приложений. В случае, когда интегрируемые системы созданы на разных программных платформах и велики требования к производительности интеграции и объемам передаваемых данных, по моему мнению, следует использовать IBM WebSphere Message Broker. Microsoft BizTalk хорошо подходит для интеграции систем на технологиях Microsoft, особенно в тех случаях, когда автоматизируются длительные и сложные бизнес-процесы. |
Математико-механический факультет Государственное образовательное учреждение высшего профессионального образования | Обзор современных систем управления бизнес-процессами Агапова Татьяна, математико-механический факультет, 2 курс | ||
Математико-механический факультет asmpy ассемблер python compiled (*. pyc ) файлов Государственное образовательное учреждение высшего профессионального образования | Санкт-Петербургский Государственный Университет Математико-механический факультет Сергей Николаевич Кучер, проректор краевого государственного образовательного учреждения дополнительного профессионального образования... | ||
Санкт-Петербургский государственный университет Математико-механический факультет Министерством образования и науки Российской Федерации. В 2012-2013 учебном году литературное образование в школе на базовом уровне... | 1. Основные понятия и определения теории анализа и принятия решений... Вводные понятия теории анализа и принятия решений. Области применения. Лицо, принимающее решение (лпр). Альтернативы и критерии в... | ||
Кафедра системного программирования Построение риторических деревьев текста на основе машинного обучения в рамках задачи автоматического реферирования | Юридический факультет Кафедра гражданского и предпринимательского права Понятие финансовой аренды (лизинга) и договора финансовой аренды (лизинга), история развития лизинга | ||
Рабочая программа по дисциплине «Операционные системы» Кроме того, целью преподавания является формирование у студентов системного мышления, теоретической и практической базы системного... | Факультет экономики и управления Кафедра менеджмента Рабочая программа... Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки магистра... | ||
Презентация «Решение задач с помощью кругов Эйлера». Презентация... Интегрированное занятие математического кружка (математика + информатика) в 5-м классе по теме "Решение задач с помощью кругов Эйлера.... | Программа дисциплины «Информационные технологии в индустрии гостеприимства и туризме» Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления 080200. 68 Менеджмент... | ||
Программа учебной дисциплины «Финансы, денежное обращение, кредит» Целью данного предмета является изучение основных видов финансовых рынков. При этом развиваются навыки анализа финансовой документации,... | Программа дисциплины «Сетевые формы организации в индустрии гостеприимства и туризма» Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления 080200. 68 «Менеджмент»... | ||
Реферат по дисциплине "Информационные и коммуникационные технологии... В связи с этим на электронные системы ложится обязанность автоматизации всех процедур работы с документами, а также интеграции совместных... | Энергетический факультет Механический расчет линии электропередачи напряжением 110 кв с увеличенным сечением провода на металлических опорах |