Как стать автором
Обновить

Платформа Visary: как мы пришли к микросервисам и low-code

Время на прочтение 8 мин
Количество просмотров 23K
Давайте знакомиться. Мы Научно-производственный центр «БизнесАвтоматика» — российский разработчик интеллектуальных информационно-аналитических систем. Сегодня мы хотим рассказать о нашей ключевой разработке — платформе Visary. На ней реализованы десятки информационных систем различного уровня и комплексные решения для крупного бизнеса.

В основе Visary — современный стек технологий, а набор сервисов позволяет строить системы от ERP и BPM до систем класса ГИС, BI, SCM.

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

Что такое Visary
Наша разработка — это не коробочное решение, основные пользователи платформы — представители крупного российского и международного бизнеса.
Visary — это универсальная open source платформа для создания разного типа информационных систем, к которым предъявляются серьезные требования по безопасности и работе под высокой нагрузкой. Платформа построена на сервисно-ориентированной архитектуре, сервисы собраны в программные высокопроизводительные кластеры. По сути, это большой хорошо структурированный фреймворк, на базе которого можно быстро строить различные IT-решения. Существующие типовые модули — это BPM, BI, СЭД, SCM, WMS, проектное управление, ГИС.
Платформа построена на открытом коде: наша основа — это .Net и ряд других открытых библиотек и фреймворков.
В Visary реализованы технологии, поддерживающие Low-code и No-code концепции. Они позволяют создавать системы силами аналитика или администратора. Есть широкий пласт настроек ролевых моделей, интерфейсов системы и процессов, который не требует привлечения разработчиков, например:
  • визуальный конструктор автоматизированного проектирования предметной области — позволяет модифицировать модель данных программного решения;
  • визуальный конструктор регламентных процессов — позволяет изменять логику работы приложения, а также конструировать любые организационные и технологические процессы из шаблонных блоков;
  • визуальный конструктор меню — позволяет создавать меню для каждой пользовательской роли системы;
  • конструктор рабочего стола — позволяет настраивать внешний вид и отображаемые виджеты на рабочем столе для каждой пользовательской роли системы;
  • конструктор справочников и классификаторов позволяет добавлять новые типы и виды объектов.
Конечно, это не «золотой молоток», который позволяет в одиночку строить масштабные системы, сопоставимые по охвату, к примеру, с «Госуслугами», но уже готовый инструмент для бизнес-проектирования.
Наша платформа напоминает конструктор Lego: можно оперировать заранее собранными фигурками и создавать из них нужный ландшафт. Но если требуется, условно говоря, поменять цвет глаз у одного из персонажей или добавить машине пятое колесо, этот объект легко разбирается на кубики, и старый блок заменяется на новый.
Под внешней простотой скрывается серьезная техническая начинка. В основе платформы лежат микросервисы и .Net Core 3.1. В качестве базы данных используется PostgreSQL, распределенный кеш построен на Redis. Поисковые Б Д — на Elastic/Elasticsearch, в качестве брокера сообщений применяется RabbitMQ. Клиентская часть разработана на Vue.js. Основной код Visary написан на C# и JavaScript, для работы с базой данных мы используем Entity Framework Core. ASP.Net Core позволяет собирать приложения под Linux, Mac и Windows.
К такому стеку технологий мы пришли не сразу, начиналось все с готовых фреймворков. Но постепенно наработки и опыт позволили нам найти свою нишу.
Когда готовых фреймворков недостаточно
Первые информационные системы разрабатывались на заказ в 2011—2013 годах на стеке готовых технологий с применением фреймворка XAF. Он позволял значительно сократить рутинное программирование за счет автоматического создания интерфейса на базе определений бизнес-объектов.
Но постоянно возникала проблема: заказчикам все время хотелось чего-то нестандартного: перенести в другое место или перекрасить кнопку, присвоить ей интересное поведение. XAF, конечно, позволяет кое-что настроить, но с ограничениями. В итоге ради мелкой фичи порой требовалось переписать половину «коробки». Вскоре это надоело, и мы решили, что проще взять за основу некоторые фреймворки и написать на них свое контролируемое решение. Так начал формироваться собственный фреймворк, который к 2014 году дорос до того, чтобы стать платформой — Visary.
Монолитный период
Изначально платформа рассматривалась как ядро для автоматизации бизнес-процессов крупных заказчиков и основа для управления проектами. Был разработан workflow-движок, который оказался универсальным и подходил для автоматизации различных сфер деятельности. Мы создавали проекты на его базе, а потом дописывали узкоспециализированные компоненты под конкретные требования заказчиков.
Разрабатываемые на основе этих требований фичи складывались в модульные решения. С самого начала сформировался BPM-модуль. Модуль ГИС появился после реализации большого заказа со стороны правительства Московской области. Модуль CRM был создан в результате работы с крупной коммерческой структурой. Ну, а модуль BI вобрал в себя наработки с разных проектов, где заказчикам требовались красивые отчёты.
Сначала мы пошли по пути создания монолитного решения с расширенной функциональностью. Например, workflow-движок был очень навороченным по возможностям, но трудоемким в настройке. Нужно было очень хорошо знать BPMN, ориентироваться в хитросплетении связей внутри системы. Пользователю требовалось специализированное обучение, чтобы хотя бы начать применять этот инструмент. Поняв, что заказчикам нужно как раз обратное, мы начали совершенствовать платформу в сторону упрощения настроек через визуальные интерфейсы и конструкторы.
С технической стороны тоже шли доработки: для максимальной независимости от иностранных проприетарных продуктов — операционных систем и СУБД — мы решили реализовать кроссплатформенность. В 2015 году появилось решение с использованием Mono, а затем и на .Net Core.
Вперед, к микросервисам
По ходу развития платформы в ней возникали некие прототипы сервисных элементов в виде интеграционных шин и интерфейсов взаимодействия. И когда в 2017 году мы решили перейти к сервисно-ориентированной архитектуре с использованием микросервисов, задел уже был. Но все равно пришлось потрудиться: раздробить весь прежде сформированный монолит и все полезное переписать под новую платформу.
В результате Visary стала хоститься на Linux. Для управления контейнерами развернули Kubernetes. Сложность разработки выросла, но зато появились новые возможности кластеризации и создания высоконагруженных систем.
В 2018—2019 году мы активно развивали новые сервисы. Например, появился сервис отчетности для работы с BigData — открытый веб-ориентированный конструктор отчетов, который не требует отдельного толстого клиента. Можно прямо в браузере создавать и настраивать отчеты, дашборды и другие элементы.
Началась разработка сервисов, использующих методы искусственного интеллекта. Это Machine learning на основе нейросетей, продукционные экспертные системы, системы распознавания текста. Часть алгоритмов мы пишем сами, часть берем из открытых промышленных библиотек, а некоторые передовые наработки появляются при сотрудничестве со специалистами МГТУ имени Баумана, РЭА имени Плеханова, Вятским госуниверситетом.
Параллельно мы осваиваем новые предметные области. Например, разработано комплексное решение по навигации для логистического модуля. Мы запустили навигационные серверы, стали самостоятельно программировать и выпускать собственные устройства — трекеры для автотранспорта с аппаратной фильтрацией значений.
Тем не менее основной упор в развитии Visary мы делаем на улучшение UX/UI-дизайна платформы. Чтобы фронтенд был максимально отзывчивый и реактивный, на лету обновлял данные и показывал состояние системы в реальном времени.
Еще одно важное направление развития — разработка визуальных средств, которые сокращают объем разработки при развертывании систем. Это набор конструкторов для настройки ролей, бизнес-процессов, справочников, модели данных. Для работы с ними не требуется программистских скилов, достаточно иметь системное мышление, понимание, что с чем связано и как любое изменение отразится на системе. А еще нужно знание предметной области, понимание базовых принципов объектного подхода, проектирования БД и ролевой модели. Это вполне вписывается в квалификацию системного аналитика и в некотором объеме может вестись силами заказчика.
Как живут разработчики Visary
Платформа — это не только километры кода и сотни микросервисов., но еще и люди, которые все это пишут. Наши команды разработчиков живут по Agile и активно участвуют в принятии решений, связанных с дальнейшим развитием платформы. О некоторых нюансах хочется рассказать поподробнее.
Внутренняя миграция
Работа в компании делится на две части: реализация проектов и развитие платформы. Реализация проектов — это практическое применение Visary, разработка решений под конкретные предметные области. Развитие платформы — это создание новых сервисов, рефакторинг старых, создание моделей, развитие архитектуры. Наши разработчики могут мигрировать из одного направления в другое. Если надоела проектная работа, можно заняться развитием системы, и наоборот.
Раз в три месяца каждый разработчик проходит ревью, на котором может поделиться своими пожеланиями и при необходимости перейти из проекта в проект или заняться развитием Visary.
Новые фичи
Новые идеи по развитию системы обычно рождаются в процессе работы над проектами из запросов заказчика. Некоторые фичи появляются в системных доработках внутри команды. Это уже архитектурные решения, которые принимаются совместно на обсуждениях. Наконец, совершенно новые направления, которые только должны «выстрелить» на рынке, нам подкидывает на проработку топ-менеджмент компании.
Полный Scrum
Работа над платформой и проектами идет по методологии Scrum. Lego-структура платформы хорошо ложится на этот метод разработки. Так как проекты в основном большие, работу над ними ведут несколько scrum-команд, в каждую входит обычно до восьми программистов и тестировщиков, а также аналитики, РП-шник и scrum-мастер.
Спринты чаще всего недельные, так как наши заказчики хотят каждую неделю получать обновления, видеть прогресс, давать обратную связь. Внутри коллектива проводится ревью всего, что делают разработчики. Если находится что-то плохое или, наоборот, хорошее, то это выносится на общее обсуждение. Разработчики уже привыкли, что их деятельность полностью открыта внутри команды, и нормально относятся к критике. Это позволяет нам быстро корректировать ход разработки и быть в курсе всех процессов.
Условия работы
Условия, в которых работают наши разработчики платформы, типичны для современных технологических компаний. Это возможность смешанной и удаленной работы, спортзал, удобные рабочие места, любая необходимая для работы техника, никакого дресс-кода и тапочки в офисе. Но все-таки главная мотивация для сотрудников — это технологии и методологии, которые используются при разработке платформы. В России не так много компаний, которые используют такой богатый современный инструментарий.
Что дальше?
Мы продолжаем разработку платформы, насыщая ее новыми полезными сервисами, оптимизируя код и обновляя ее самыми свежими технологиями. Более того, в ближайшее время планируем выложить в открытый доступ часть разработанного нами фреймворка, который может быть полезен другим разработчикам.
Описание существующих сервисов и модульных решений, созданных на базе Visary, вы найдете по ссылке. А вы пишите в комментариях, какие функции нужны платформе разработки информационных систем, обсудим, что нам стоит добавить в работу.
Теги:
Хабы:
+19
Комментарии 31
Комментарии Комментарии 31