Введение 4
Обзор литературы 7
Цели и задачи 9
Глава 1. Анализ и оценка качества интеграции компонентов
ИС СПбГУ 11
1.1. Передача файла 13
1.2. Общая база данных 13
1.3. Удаленный вызов процедуры 17
1.4. Обмен сообщениями 18
1.5. Другие способы 19
1.5.1. Использование ETL-средств 20
1.5.2. Пакетная загрузка данных через UI-интерфейс 22
1.6. Альтернативная классификация интеграционных методов 23
1.7. Выводы 24
Глава 2. Анализ интеграционных инструментов 29
Глава 3. Использование техник непрерывной интеграции при решении
задач интеграции приложений 33
Глава 4. Интеграция между подсистемой “Обучающиеся” и ЭБИС 36
4.1. Описание сценария взаимодействия между
модулем “Карточка студента” и ЭБИС 37
4.2. Анализ исходного решения 39
24.3. Реализация интеграционного решения
на основе механизма обмена сообщениями 41
4.3.1. Описание алгоритма 41
4.3.2. Преимущества 42
4.3.3. Доставка сообщений в брокер 44
4.3.4. Обеспечение атомарности операций изменения данных и
доставки событий в очередь 47
4.3.5. Инкапсуляция логики создания читательских записей 49
4.4. Выводы 50
Глава 5. Интеграция между подсистемой “Обучающиеся” и СЭДД
“Дело” 53
5.1. Анализ проблем 54
5.2. Решение проблем исходной реализации 55
5.2.1. Достижение отказоустойчивости 55
5.2.2. Задача упорядочивания событий в распределенной системе 59
Тестирование 61
Дальнейшее развитие 63
Заключение 65
Список литературы 66
Приложение
В настоящее время довольно сложно представить себе работу
организации, которая не задействовала бы информационные технологии для
автоматизации и оптимизации различного рода бизнес-процессов.
Если говорить о Санкт-Петербургском государственном университете
(СПбГУ) , рассматривая эволюцию развития правил обучения в период с
1991 года и по настоящее время, то можно сказать, что он, как организация,
прошел достаточно сложный и неоднозначный путь.
На настоящее время в СПбГУ, только в рамках информационной
системы “Обучение” насчитывается более десяти самостоятельных
комплексных приложений, каждое из которых предназначено для
выполнения некоторого обособленного набор задач. В свою очередь,
упомянутые приложения сами могут состоять из множества различных
условно независимых компонент.
Например, в рамках ИС “Обучение” на момент написания работы в
эксплуатации находятся такие подсистемы как “Обучающиеся” (“Карточка
студента” “Дисциплины”, “Учебные планы”, “Педагогические поручения”,
ИС “Выпускник”, или же такие, более известные для абитуриентов и
студентов СПбГУ как “Прием”, или “Электронное расписание”.
Стоит отметить, что несмотря, на первый взгляд, на достаточно разные
задачи, зачастую, для реализации какого-либо бизнес-процесса, необходимо
обеспечить взаимодействие некоторого набора подсистем друг с другом.
Например, фиксация зачисления абитуриента в СПбГУ осуществляется в
рамках подсистемы “Прием”, а основной учет студенческих данных (номер
курса, группы, осуществление процессов перевода, ведение успеваемости и
т.п.) в подсистеме “Обучающиеся”. Соответственно, каждый год, после
окончания приемной кампании, возникает задача импорта данных о
зачисленных студентах из одной подсистемы в другую.
4Описанный случай достаточно тривиален, однако, в действительности,
существуют и более сложные процессы, которые могут задействовать более
двух систем, требовать реализации синхронизации данных в разных
направлениях (из одной системы в другую и обратно) и при этом
обеспечивать допустимый показатель задержки синхронизации. Реализацию
такого рода механизмов взаимодействия между системами будем называть
интеграцией, а бизнес-процесс, для осуществления которого требуется
обеспечение взаимодействия - интеграционным сценарием.
Существует множество технических способов реализации механизмов
взаимодействия между системами. Анализ такого рода способов, с
подробным описанием достоинств и недостатков каждого из них, как
правило, можно найти в литературе, посвященной вопросам интеграции
корпоративных приложений. Каждый из авторов может отдавать
предпочтение и уделять большее внимание какому-то одному из
существующих способов интеграции, однако, все специалисты, как правило,
сходятся в одном - любая реализация интеграционной логики всегда
повышает сложность поддержки информационной системы.
Стоит отметить, что на момент написания данной работы, автор
являлся сотрудником Управления-Службы Информационных технологий
СПбГУ, в обязанности которого входила разработка и поддержка некоторого
набора из озвученных ранее подсистем ИС СПбГУ. В рамках выполнения
своих должностных обязанностей, автору пришлось столкнуться со всем
многообразием существующих в организации систем и интеграционных
решений. Можно говорить о том, что сделанные в ходе работы наблюдения и
заметки относительно существующих технологических решений послужили
началом написания данной диссертации.
Был обнаружен ряд недостатков, присущих существующим процессам
и механизмам взаимодействия между системами. В свою очередь, можно
5говорить о том, что эти недостатки вели к снижению эффективности
поддержки, разработки, и, что самое главное, эксплуатации (то есть удобства
для конечных пользователей) существующих приложений.
Анализу такого рода проблем, выявлению недостатков и выработке
путей улучшения существующих систем и интеграционных процессов между
ними посвящена данная работа
В рамках данной работы был осуществлен сбор информации о
ключевых программных компонентах, входящих в состав ИС СПбГУ и
способах их интеграции. Была собрана информация о технической
реализации данных решений, выявлены основные классы проблем, и
представлена оценка степени их влияния на эффективность поддержки,
разработки и эксплуатации компонентов ИС.
С целью оценки возможностей улучшения существующих механизмов
взаимодействия между компонентами, была исследована литература,
посвященная вопросам интеграции корпоративных приложений.
Были изучены подходы и инструменты, направленные на упрощение
тестирования и развертывания сложных многокомпонентных систем.
На основе изученной информации и инструментов, была осуществлена
модификация двух существующих интеграционных решений с целью
минимизации ресурсов на поддержку и эксплуатацию в сравнении с
исходным вариантом. Была осуществлена оценка возможности
переиспользования полученных результатов в ходе решения других интеграционных задач.
Результаты осуществленного тестирования полученных решений
показали уменьшение ошибок в ходе эксплуатации и увеличение
производительности отдельных компонентов ИС, что может говорить о
достижении цели работы в их контексте.
1. Хоп Г., Вульф Б. Шаблоны интеграции корпоративных приложений
//М.: Вильямс. – 2007. 672 с.
2. Bussler C. B2B integration: Concepts and architecture. –
Springer Science & Business Media, 2013 . 418 c.
3. Gilbert S., Lynch N. Perspectives on the CAP Theorem // Computer. – 2012.
– Т. 45. – №. 2. – С. 30-36.
4. Таненбаум Э. и др. Распределенные системы. Принципы и парадигмы.
– СПб.: Питер, 2003.880 с.
5. Косяков М. С. Введение в распределенные вычисления //
Санкт-Петербург: НИУ ИТМО. – 2014. 155 с.
6. Continuous Integration
//URL: https://martinfowler.com/articles/continuousIntegration.html (дата
обращения: 24.05.2017).
7. Stolberg S. Enabling agile testing through continuous integration //Agile
Conference, 2009. AGILE'09. – IEEE, 2009. – С. 369-374.
8. Chen L. Continuous delivery: Huge benefits, but challenges too //IEEE
Software. – 2015. – Т. 32. – №. 2. – С. 50-54.
9. Development Sandboxes: An Agile 'Best Practice'
//URL: http://www.agiledata.org/essays/sandboxes.html (дата обращения:
24.05.2017).
6610.Stubbs J., Moreira W., Dooley R. Distributed systems of microservices
using docker and serfnode //Science Gateways (IWSG), 2015 7th
International Workshop on. – IEEE, 2015. – С. 34-39.
11.Thönes J. Microservices //IEEE Software. – 2015. – Т. 32. – №. 1. – С.
116-116
12.Serrano N., Hernantes J., Gallardo G. Service-oriented architecture and
legacy systems //IEEE software. – 2014. – Т. 31. – №. 5. – С. 15-19.
13.Zhu Y., An L., Liu S. Data updating and query in real-time data warehouse
system //Computer science and software engineering, 2008 international
conference on. – IEEE, 2008. – Т. 5. – С. 1295-1297.
14.de Hullu C. Evaluating .NET-Based Enterprise Service Bus Solutions.
University of Twente. Department of Computer Science. – 2012.
https://www.utwente.nl/ewi/trese/graduation_projects/2012/RT-003.pdf
15.Nguyen V. N., Tran V. C. An Efficient Log Management System //VNU
Journal of Computer Science and Communication Engineering. – 2016. – Т.
32. – №. 2. – С. 43-48.
16.Взаимодействие компонентов ИС СПбГУ
//URL:https://drive.google.com/file/d/0B3oR8zRXOvKUUHBMTmpjTHNi
M1E/ (дата обращения: 24.05.2017).
17.Семенов С. П., Серегин В. Д., Татаринцев П. Б. Обеспечение слабой
связанности интегрируемых информационных систем посредством
асинхронного обмена сообщениями через сервисную шину //Вестник
Югорского государственного университета. – 2011. – №. 3 (22).
6718.Alonso G. et al. Exotica/FMQM: A persistent message-based architecture
for distributed workflow management //Information Systems Development
for Decentralized Organizations. – Springer US, 1995. – С. 1-18.
19.Choosing the Right ESB for Your Integration Needs
//URL: https://www.infoq.com/articles/ESB-Integration (дата обращения:
24.05.2017).
20.RabbitMQ Management Plugin
//URL:https://www.rabbitmq.com/management.html (дата обращения:
24.05.2017).
21.NServiceBus license
//URL: https://particular.net/licensing (дата обращения: 24.05.2017).
22.Continuous integration and deployment
/URL: https://www.visualstudio.com/en-us/docs/build/overview (дата
обращения: 24.05.2017).
23.SQL Server Service Broker
//URL: https://msdn.microsoft.com/ru-ru/library/bb522893.aspx (дата
обращения: 24.05.2017).
24.About Change Data Capture (SQL Server)
//URL:https://docs.microsoft.com/en-us/sql/relational-databases/track-chang
es/about-change-data-capture-sql-server (дата обращения: 24.05.2017).
25.Joona-Pekka Kokko. Distributed document migration between ERP systems
by means of messaging and event sourcing // Lappeenranta University of
Technology. 2013. URL:http://www.doria.fi/handle/10024/94341
(дата обращения: 24.05.2017).
6826.Customize the Audit Trail System
//URL:https://documentation.devexpress.com/#eXpressAppFramework/Cust
omDocument112783 (дата обращения: 24.05.2017).
27.XAF Audit Trail
URL:https://www.devexpress.com/Support/Center/Question/Details/T32098
9 (дата обращения: 24.05.2017).
28.State Machine Module Overview
//URL:https://documentation.devexpress.com/#eXpressAppFramework/Cust
omDocument113713 (дата обращения: 24.05.2017).
29.Swarm mode overview
//URL: https://docs.docker.com/engine/swarm/ (дата обращения:
24.05.2017).
30.Kubernetes
//URL: https://kubernetes.io/ (дата обращения: 24.05.2017).
31.The Open Source Elastic Stack
//URL: https://www.elastic.co/products (дата обращения: 24.05.2017).
32.Betts D. et al. Exploring CQRS and Event Sourcing: A journey into high
scalability, availability, and maintainability with Windows Azure. – 2013.
33.JBoss Fuse or ETL?
//URL:http://wei-meilin.blogspot.ru/2015/04/jboss-fuse-jboss-fuse-or-etl.ht
ml (дата обращения: 24.05.2017).