Внедрили масштабируемую сервисную шину для «АТИМО»

Клиент

Стартап «АТИМО» — участник акселератора StartupDrive от «Газпром Нефть». Команда «АТИМО» разработала приложение для таксопарков и автопарков, которое автоматизирует получение путевых листов. Благодаря ему таксопаркам не нужно держать в штате медицинских работников для предрейсовых осмотров водителей и механиков для проверки автомобилей.

На март 2023 года приложением «АТИМО» пользовалось уже 20 таксопарков, а в базе данных хранилось более 35 тысяч записей о водителях и машинах.

Проблема: с первоначальной архитектурой было сложно масштабироваться

В первые месяцы стартап «АТИМО» работал с тремя контрагентами, у каждого из которых было по одной базе данных. Система напрямую подключалась к нужной БД, скачивала данные о водителях и машинах и формировала путевые листы. По тому же принципу работала передача в обратную сторону: таксопарк получал доступ к БД «АТИМО» и скачивал путевые листы и журналы.

На старте такое решение работало хорошо, но масштабирование на новых контрагентов было не таким очевидным. Для каждой точки подключения нужно настроить прямое соединение, затем определить формат данных в базах таксопарка и «научить» систему приводить их к нужному виду.

Кроме того, прямое соединение требует больших ресурсов. Опрос одной точки занимал от 1 до 4 Гб памяти на сервере «АТИМО», а всего было доступно 32 Гб. При существующих ресурсах клиент мог добавить в систему еще 8−10 крупных таксопарков. Большее число новых контрагентов вызвало бы заметные задержки и ошибки при получении данных.

Наконец, прямое соединение не гарантировало безопасность. Если бы злоумышленники взломали инфраструктуру любого подключенного таксопарка, через нее они могли бы получить доступ к системам АТИМО.

Масштабирование системы стало медленным, сложным и ресурсоемким. Чтобы решить эту проблему, «АТИМО» обратился к KT.Team.
  • можно быстро добавить новую базу данных контрагента;

  • опрос одного таксопарка будет требовать меньше памяти;.

  • Помогли сократить сроки согласования нестандартных заказов и как результат — срок ожидания для конечного клиента.

  • у контрагента не будет прямого доступа к серверу и БД АТИМО;

  • получать актуальные данные можно будет каждые 20 минут или чаще.
KT.Team работала только с частью бизнес-процессов клиента, которая касается соединения с базами таксопарков. То, как «АТИМО» получает информацию от автоматизированных точек осмотра, обрабатывает ее и формирует путевые листы, осталось за рамками задачи.
Нужно наладить такое подключение таксопарка к системе клиента, при котором

Задача: упростить масштабирование, сэкономить ресурсы сервера и обезопасить систему клиента

  • номер мобильного телефона;

  • ФИО водителя;

  • его дата рождения;

  • данные о водительском удостоверении;

  • свидетельство о регистрации автомобиля;

  • номер страхового полиса ОСАГО.
Приложение должно подключиться к базе данных (БД) таксопарка, чтобы забрать их.

У одного таксопарка может быть несколько баз данных. Например, разные филиалы пользуются разными базами или таксопарк поддерживает отдельно БД по водителям и БД по автомобилям. У каждого из таксопарков есть свои правила хранения информации: могут отличаться названия полей в таблицах и форматы данных. Это нужно учитывать и приводить все поля к единому виду, чтобы система могла их обработать.
Перед рейсом каждый водитель таксопарка должен получить путевой лист с данными о здоровье водителя и состоянии автомобиля. Для этого таксопарку нужно либо иметь в штате врача и механика, либо пользоваться услугами сторонних организаций.

«АТИМО» предложил таксопаркам упростить взаимодействие с подрядчиками по получению путевых листов. Стартап предоставляет своим клиентам доступ к автоматизированным точкам, где работают врач и механик. Водитель авторизуется в такой точке по номеру телефона, затем его осматривает врач, а машину проверяет механик. Все данные загружаются в систему, обрабатываются и на их основе формируется электронный путевой лист.

Чтобы сформировать путевой лист, приложению «АТИМО» нужны данные о водителях и автомобилях:

Контекст

Журналы медицинских и технических осмотров, готовые путевые лист хранятся на сервере «АТИМО». Если таксопарку нужно получить эти данные, он подключается к серверу, авторизуется и скачивает их.
KT.Team спроектировала новую схему передачи данных так, чтобы у системы «АТИМО» осталась одна точка подключения — сервисная шина (ESB). То есть таксопарки больше не могут напрямую соединяться с БД «АТИМО», чтобы передать или получить данные. Безопасность взаимодействия повысилась для всех участников схемы.

Шина подключается к БД таксопарка, скачивает данные о водителях и автомобилях и загружает их в собственное хранилище. Оттуда данные отправляются в «АТИМО».
Затем «АТИМО» возвращает шине готовые путевые листы. ESB скачивает их и загружает во второе хранилище. После этого любой таксопарк может отправить шине запрос и получить путевые листы для своих водителей.

ESB форматирует данные из БД таксопарков, чтобы передать их системе «АТИМО» в готовом к обработке виде. Внутри каждого сервиса настроены правила маппинга.
Пример маппинга

KT.Team внедрила сервисную шину для передачи данных от таксопарков к «АТИМО» и обратно

KT.Team меняла архитектуру решения трижды, чтобы добиться оптимального результата. В первой версии шина опрашивала все БД с помощью одного сервиса.
Первая версия архитектуры системы АТИМО
Такой подход хорошо экономил ресурсы сервера, но не был отказоустойчивым. Из-за того, что все запросы шли друг за другом, ошибка при подключении к первому таксопарку могла оборвать все последующие.

Во второй версии архитектуры шина подключалась к каждой базе через отдельный сервис. Это требовало чуть больше ресурсов сервера, но исключало массовый сбой из-за одной недоступной БД или другой ошибки.
Вторая версия архитектуры системы АТИМО
Кроме того, в этом решении было много дополнительных этапов, например, сбор и запись в лог всех ошибок. Они требовали дополнительного времени и памяти для обработки, поэтому архитектуру нужно было облегчить и упростить.

Итоговая версия архитектуры также основана на отдельных сервисах для каждой точки подключения.
rus: Финальная версия архитектуры системы АТИМО
Все сервисы работают одинаково:
Инструкция по добавлению нового таксопарка
  • подключаются к БД таксопарка;

  • скачивают данные;

  • приводят их к формату, который использует система клиента;

  • записывают новые данные в хранилище;

  • удаляют неактуальные данные.
Чтобы добавить новый таксопарк, нужно скопировать один из существующих сервисов и настроить его: например, заменить правила маппинга. Чтобы упростить для клиента эту задачу, KT. Team использовала low-code-решение Mule как основу шины. Этот инструмент не требует навыков программирования, поэтому работать с ним может любой сотрудник «АТИМО».

Кроме того, KT. Team подготовила пошаговую инструкцию для настройки точки подключения, в которой описаны все нюансы.

Результаты

  • Сервисная шина позволила «АТИМО» подключить 20 таксопарков. Это 42 отдельных точки подключения, так как у многих контрагентов больше одной базы данных.
  • Шина подключается к каждому таксопарку через отдельный сервис. Даже если один из сервисов выйдет из строя или БД таксопарка окажется недоступна, это никак не повлияет на данные других контрагентов.
  • Подключение к БД таксопарка занимает меньше 1 секунды для большинства контрагентов.
  • На⦁весь процесс от⦁подключения к⦁таксопарку до⦁загрузки готовой информации в⦁БД «АТИМО» уходит максимум две минуты. Причем, это значение справедливо для⦁самых «медленных» контрагентов с⦁устаревшими системами управления⦁БД или низкой скоростью соединения.
  • Отдельные сервисы для каждой БД и простая схема их работы помогли сэкономить ресурсы сервера. Каждый запрос теперь требует 300−500 Мб вместо 1−4 Гб. Подключаться можно ко всем таксопаркам одновременно.
  • Таксопарки не подключаются напрямую к «АТИМО», то есть нет риска, что систему клиента взломают через плохо защищенную БД контрагента.
  • Система легко масштабируется. Клиент сам копирует и настраивает новые точки подключения по инструкции. Человек без опыта разработки может добавить таксопарк за пару часов.

ВАШ ПЕРСОНАЛЬНЫЙ МЕНЕДЖЕР

rus: Сергей Влазнев Персональный менеджер
Сергей Влазнев
Менеджер по продажам
Сергей проведет первичную консультацию, запланирует встречу с нашей командой, оценит ваш проект и оформит все протоколы встреч.
Email:
Telegram:
WhatsApp:
Телефон:
Заполните форму — и мы свяжемся с вами