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

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

Есть запрос на внедрение?

Напиши нашим консультантам и назначьте встречу

Клиент

Стартап «АТИМО» — участник акселератора 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. Система легко масштабируется. Клиент сам копирует и настраивает новые точки подключения по инструкции. Человек без опыта разработки может добавить таксопарк за пару часов.

Оглавление
Другие кейсы

Смотреть все

Интеграция IT-инфраструктуры e-Commerce-проекта с маркетплейсами при помощи сервисной шины WSO2 ESB

Подробнее

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

Подробнее

Интеграция Akeneo PIM в инфраструктуру B2B-портала LAPP Group

Подробнее

Смотреть все

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

Ок