Разработка сервис-ориентированной информационной системы для кафедры «иипо» на базе связующего
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Объект исследования: архитектуры информационных систем.
Результаты, полученные лично автором: спроектирована архитектура на базе сервисной шины предприятия, разработано ядро системы, ответственное за хранение информации о контингенте кафедры.
На кафедре «Информатика и программное обеспечение» («ИиПО») возникла потребность в автоматизации большинства бизнес-процессов, с целью оптимизации трудовых и временных затрат. Министерство образования не предоставляет программных средств, способных помочь преподавательскому и руководящему составу кафедры сократить объёмы человеко-часов на выполнение рутинных задач, а сторонние готовые решения либо обладают высокой стоимостью, либо не учитывают всех особенности конкретного структурного подразделения ВУЗа. Поэтому было принято решение разработать собственную информационную систему силами преподавателей и студентов кафедры «ИиПО». Особенностью данного решения является то, что подсистемы, решающие бизнес-задачи, будут разрабатываться самими студентами в рамках курсовых и дипломных работ.
Первым шагом в разработке информационной системы является разработка её ядра. Именно эту задачу, выполнение которой находится на финальном этапе, поставило руководство кафедры. Разработанное ядро следует принципам сервис-ориентированной архитектуры. Оно включает в себя сервисы, решающие строго отведённый круг системных или прикладных задач, а также средство коммуникации между службами – промежуточное программное обеспечение. Ядро включает следующие службы:
а) сервис аутентификации по паре логин/пароль (генерирует JWT токен);
б) сервис авторизации на базе ABAC подхода;
в) сервис учёта контингента (хранилище информации о преподавателях, студентах и учебных группах).
Сервисы не общаются на прямую, а используют, как было отмечено выше, промежуточное программное обеспечение – сервисную шину предприятия
«Enterprise Service Bus» от компании «WSO2». Шина предоставляет широкий спектр функций, которые в будущем могут пригодиться, но на данный момент используются только функции проксирования запросов и широковещательная рассылка сообщений с гарантией доставки до адресата. Подробнее архитектура ядра изображена на рис.
В качестве основного хранилища данных о людях используется сервер «OpenLDAP», который уже предоставляет средства по управлению аккаунтами, хранению информации о пользователях в заранее заготовленных разработчиками схемах данных по принципу «один ключ – несколько значений». Это уже позволяет хранить адреса, домашние телефоны, должности и другие данные, а также осуществлять регистронезависимый поиск по ним. К сожалению, «OpenLDAP» не является реляционным хранилищем. Для сохранения реляционных данных, а также данных, которые не поддерживают схемы «OpenLDAP», используется СУБД «PostgreSQL».
Рис.1. Ядро программного комплекса
Сервис авторизации предоставляет всего лишь одну услугу для сторонних служб: отвечает на вопрос «можно ли субъекту X выполнить действие Y над ресурсом Z», используя заложенные в него политики безопасности. Агрегация политик безопасности в одной службе мотивировано тем, что системой в таком случае будет проще управлять, а так же снизит сложность конечных служб. Сами политики безопасности могут быть произвольной сложности.
Отдельно необходимо отметить, почему была выбрана именно программная платформа «Node.js». С её помощью можно прототипировать небольшие сервисы с меньшими трудозатратами, чем на «C#» или «Java», тем самым быстрее тестировать глобальные архитектурные решения.
В настоящий момент ядро программного комплекса находится в стадии опытной эксплуатации. На его основе разрабатываются несколько выпускных квалификационных работ (как бакалавров так и магистров).
Использование разработанного ядра позволяет, привлекать к разработке подсистем и сервисов студентов без понижения безопасности и отказоустойчивости всего программного комплекса в целом, гибко распределять нагрузку и оперативно реагировать сервисам на изменения в данных и других сервисах.
Материал поступил в редколлегию 20.04.2017
УДК 004.7:004.891
А.А. Вершинин, Е.А. Козлов
Научный руководитель: заведующий кафедрой «Информатика и программное обеспечение», к.т.н., доцент А.Г. Подвесовский