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

Содержание

Клиент

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

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

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

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

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

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

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

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

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

Нужно наладить такое подключение таксопарка к системе клиента, при котором

  • можно быстро добавить новую базу данных контрагента;
  • опрос одного таксопарка будет требовать меньше памяти;
  • у контрагента не будет прямого доступа к серверу и БД АТИМО;
  • получать актуальные данные можно будет каждые 20 минут или чаще.

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

Контекст

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

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

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

  • номер мобильного телефона;
  • ФИО водителя;
  • его дата рождения;
  • данные о водительском удостоверении;
  • свидетельство о регистрации автомобиля;
  • номер страхового полиса ОСАГО.

Приложение должно подключиться к базе данных (БД) таксопарка, чтобы забрать их.

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

Одни и те же данные у разных таксопарков хранятся в разных форматах

Журналы медицинских и технических осмотров, готовые путевые лист хранятся на сервере «АТИМО». Если таксопарку нужно получить эти данные, он подключается к серверу, авторизуется и скачивает их.

Схема взаимодействия сервисов до начала проекта

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

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

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

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

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

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

Такой подход хорошо экономил ресурсы сервера, но не был отказоустойчивым. Из-за того, что все запросы шли друг за другом, ошибка при подключении к первому таксопарку могла оборвать все последующие.

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

Кроме того, в этом решении было много дополнительных этапов, например, сбор и запись в лог всех ошибок. Они требовали дополнительного времени и памяти для обработки, поэтому архитектуру нужно было облегчить и упростить.

Итоговая версия архитектуры также основана на отдельных сервисах для каждой точки подключения.

Все сервисы работают одинаково:

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

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

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

Результаты

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

Другие кейсы

Смотреть все

Разработка международной платформы для хакатона на Python

Подробнее

Разработка мультибрендового интернет-магазина

Подробнее

Помогли «Асконе» обеспечить рост бизнеса за счёт обновлённой IT-инфраструктуры

Подробнее

Смотреть все

Ваша заявка отправлена успешно

Отправить снова

Давайте обсудим ваш проект

С вами свяжется персональный менеджер Сергей Влазнев

Мы используем файлы cookie, чтобы предоставить наилучшие возможности сайта

Ок