Форма для связи
Внедрили масштабируемую сервисную шину для АТИМО
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbc2f_644f7e01c509da60cfc233cb_ilya-chunin-KTz_99Oi.jpeg)
Клиент
Стартап «АТИМО» — участник акселератора StartupDrive от «Газпром Нефть». Команда «АТИМО» разработала приложение для таксопарков и автопарков, которое автоматизирует получение путевых листов. Благодаря ему таксопаркам не нужно держать в штате медицинских работников для предрейсовых осмотров водителей и механиков для проверки автомобилей.
На март 2023 года приложением «АТИМО» пользовалось уже 20 таксопарков, а в базе данных хранилось более 35 тысяч записей о водителях и машинах.
Проблема: с первоначальной архитектурой было сложно масштабироваться
В первые месяцы стартап «АТИМО» работал с тремя контрагентами, у каждого из которых было по одной базе данных. Система напрямую подключалась к нужной БД, скачивала данные о водителях и машинах и формировала путевые листы. По тому же принципу работала передача в обратную сторону: таксопарк получал доступ к БД «АТИМО» и скачивал путевые листы и журналы.
На старте такое решение работало хорошо, но масштабирование на новых контрагентов было не таким очевидным. Для каждой точки подключения нужно настроить прямое соединение, затем определить формат данных в базах таксопарка и «научить» систему приводить их к нужному виду.
Кроме того, прямое соединение требует больших ресурсов. Опрос одной точки занимал от 1 до 4 Гб памяти на сервере «АТИМО», а всего было доступно 32 Гб. При существующих ресурсах клиент мог добавить в систему еще 8–10 крупных таксопарков. Большее число новых контрагентов вызвало бы заметные задержки и ошибки при получении данных.
Наконец, прямое соединение не гарантировало безопасность. Если бы злоумышленники взломали инфраструктуру любого подключенного таксопарка, через нее они могли бы получить доступ к системам АТИМО.
Масштабирование системы стало медленным, сложным и ресурсоемким. ****Чтобы решить эту проблему, «АТИМО» обратился к KT.Team.
Задача: упростить масштабирование, сэкономить ресурсы сервера и обезопасить систему клиента
Нужно наладить такое подключение таксопарка к системе клиента, при котором
- можно быстро добавить новую базу данных контрагента;
- опрос одного таксопарка будет требовать меньше памяти;
- у контрагента не будет прямого доступа к серверу и БД АТИМО;
- получать актуальные данные можно будет каждые 20 минут или чаще.
KT.Team работала только с частью бизнес-процессов клиента, которая касается соединения с базами таксопарков. То, как «АТИМО» получает информацию от автоматизированных точек осмотра, обрабатывает ее и формирует путевые листы, осталось за рамками задачи.
Контекст
Перед рейсом каждый водитель таксопарка должен получить путевой лист с данными о здоровье водителя и состоянии автомобиля. Для этого таксопарку нужно либо иметь в штате врача и механика, либо пользоваться услугами сторонних организаций.
«АТИМО» предложил таксопаркам упростить взаимодействие с подрядчиками по получению путевых листов. Стартап предоставляет своим клиентам доступ к автоматизированным точкам, где работают врач и механик. Водитель авторизуется в такой точке по номеру телефона, затем его осматривает врач, а машину проверяет механик. Все данные загружаются в систему, обрабатываются и на их основе формируется электронный путевой лист.
Чтобы сформировать путевой лист, приложению «АТИМО» нужны данные о водителях и автомобилях:
- номер мобильного телефона;
- ФИО водителя;
- его дата рождения;
- данные о водительском удостоверении;
- свидетельство о регистрации автомобиля;
- номер страхового полиса ОСАГО.
Приложение должно подключиться к базе данных (БД) таксопарка, чтобы забрать их.
У одного таксопарка может быть несколько баз данных. Например, разные филиалы пользуются разными базами или таксопарк поддерживает отдельно БД по водителям и БД по автомобилям. У каждого из таксопарков есть свои правила хранения информации: могут отличаться названия полей в таблицах и форматы данных. Это нужно учитывать и приводить все поля к единому виду, чтобы система могла их обработать.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbca8_644f7c2f9f2cf13c2b6b7ae5_Frame%25201171275537.jpeg)
Одни и те же данные у разных таксопарков хранятся в разных форматах
Журналы медицинских и технических осмотров, готовые путевые лист хранятся на сервере «АТИМО». Если таксопарку нужно получить эти данные, он подключается к серверу, авторизуется и скачивает их.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbc9c_644f7c44497f30b9078d8475_Frame%25201171275562.jpeg)
Схема взаимодействия сервисов до начала проекта
KT.Team внедрила сервисную шину для передачи данных от таксопарков к «АТИМО» и обратно
KT.Team спроектировала новую схему передачи данных так, чтобы у системы «АТИМО» осталась одна точка подключения — сервисная шина (ESB). То есть таксопарки больше не могут напрямую соединяться с БД «АТИМО», чтобы передать или получить данные. Безопасность взаимодействия повысилась для всех участников схемы.
Шина подключается к БД таксопарка, скачивает данные о водителях и автомобилях и загружает их в собственное хранилище. Оттуда данные отправляются в «АТИМО».
Затем «АТИМО» возвращает шине готовые путевые листы. ESB скачивает их и загружает во второе хранилище. После этого любой таксопарк может отправить шине запрос и получить путевые листы для своих водителей.
ESB форматирует данные из БД таксопарков, чтобы передать их системе «АТИМО» в готовом к обработке виде. Внутри каждого сервиса настроены правила маппинга.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbcaf_644f7c5b4ac1cd3c4dc483f0_Untitled.png)
KT.Team меняла архитектуру решения трижды, чтобы добиться оптимального результата. В первой версии шина опрашивала все БД с помощью одного сервиса.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbcb2_644f7cd22613f84dfc127f41_%25D0%2592%25D0%25B5%25D1%2580%25D1%2581%25D0%25B8%25D1%258F%25202.0.png)
Такой подход хорошо экономил ресурсы сервера, но не был отказоустойчивым. Из-за того, что все запросы шли друг за другом, ошибка при подключении к первому таксопарку могла оборвать все последующие.
Во второй версии архитектуры шина подключалась к каждой базе через отдельный сервис. Это требовало чуть больше ресурсов сервера, но исключало массовый сбой из-за одной недоступной БД или другой ошибки.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbca0_644f7ce29d30d8584dc1f9ec_Frame%25201171275549.png)
Кроме того, в этом решении было много дополнительных этапов, например, сбор и запись в лог всех ошибок. Они требовали дополнительного времени и памяти для обработки, поэтому архитектуру нужно было облегчить и упростить.
Итоговая версия архитектуры также основана на отдельных сервисах для каждой точки подключения.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbc94_644f7cee81150fdf3fe7e2b8_Frame%25201171275566.png)
Все сервисы работают одинаково:
- подключаются к БД таксопарка;
- скачивают данные;
- приводят их к формату, который использует система клиента;
- записывают новые данные в хранилище;
- удаляют неактуальные данные.
Чтобы добавить новый таксопарк, нужно скопировать один из существующих сервисов и настроить его: например, заменить правила маппинга. Чтобы упростить для клиента эту задачу, KT.Team использовала low-code-решение Mule как основу шины. Этот инструмент не требует навыков программирования, поэтому работать с ним может любой сотрудник «АТИМО».
Кроме того, KT.Team подготовила пошаговую инструкцию для настройки точки подключения, в которой описаны все нюансы.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbc99_644f7c957ea05e57bfb5c223_%25D0%2598%25D0%25BD%25D1%2581%25D1%2582%25D1%2580%25D1%2583%25D0%25BA%25D1%2586%25D0%25B8%25D1%258F%2520%25D0%25BF%25D0%25BE%2520%25D0%25B4%25D0%25BE%25D0%25B1%25D0%25B0%25D0%25B2%25D0%25BB%25D0%25B5%25D0%25BD%25D0%25B8%25D1%258E%2520%25D0%25BD%25D0%25BE%25D0%25B2%25D0%25BE%25D0%25B3%25D0%25BE%2520%25D1%2582%25D0%25B0%25D0%25BA%25D1%2581%25D0%25BE%25D0%25BF%25D0%25B0%25D1%2580%25D0%25BA%25D0%25B0.gif)
Результаты
- Сервисная шина позволила «АТИМО» подключить 20 таксопарков. Это 42 отдельных точки подключения, так как у многих контрагентов больше одной базы данных.
- Шина подключается к каждому таксопарку через отдельный сервис. Даже если один из сервисов выйдет из строя или БД таксопарка окажется недоступна, это никак не повлияет на данные других контрагентов.
- Подключение к БД таксопарка занимает меньше 1 секунды для большинства контрагентов.
- На весь процесс от подключения к таксопарку до загрузки готовой информации в БД «АТИМО» уходит максимум две минуты. Причем, это значение справедливо для самых «медленных» контрагентов с устаревшими системами управления БД или низкой скоростью соединения.
- Отдельные сервисы для каждой БД и простая схема их работы помогли сэкономить ресурсы сервера. Каждый запрос теперь требует 300–500 Мб вместо 1–4 Гб. Подключаться можно ко всем таксопаркам одновременно.
- Таксопарки не подключаются напрямую к «АТИМО», то есть нет риска, что систему клиента взломают через плохо защищенную БД контрагента.
- Система легко масштабируется. Клиент сам копирует и настраивает новые точки подключения по инструкции. Человек без опыта разработки может добавить таксопарк за пару часов.
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbc91_644f7c7792cd7e6fcd80e1ea_Untitled%2520(1).png)
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcc3005eabcea6ffbcac_644f7cbbd925a60759f6bab6_Untitled%2520(2).png)
Рассказываем об интеграциях на YouTube-
канале
Кейсы
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bccb72b070dda819670a_644e94f0313ab8bb359307d1_toa-heftiba-FV3GConV.jpeg)
Интеграция Kafka в enterprise-инфраструктуру проекта
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcca0e2f09b58a350ad1_644e8acbdab9f65d339667e9_1620258118_43-phonot.jpeg)
Интеграция IT-инфраструктуры e-Commerce-проекта с маркетплейсами при помощи сервисной шины WSO2 ESB
![](https://cdn.prod.website-files.com/649021884f18e57199f6270a/65a2bcca4fe1f916e52786da_649da28113539e399a84d1a2_fml.jpeg)
Интеграция Talend ESB в IT-инфраструктуру логистической компании
Давайте обсудим
вашу ключевую задачу
С вами свяжется персональный менеджер