SFA-система JTI «Ева» — источник данных для аналитики, хранилища данных, расчёта выплат торговым точкам и распознавания выкладки. GROTEM построил и три года развивает интеграционный слой, который отдаёт эти данные быстро, согласованно и по требованиям службы безопасности — от ночных выгрузок до обновления по событиям.
JTI Россия — лидер табачного рынка страны. С 2024 года её полевая команда работает в SFA-системе «Ева», которую GROTEM создал на замену Oracle Siebel.
Данные «Евы» — точки, контракты, результаты аудита, сотрудники — нужны целому контуру систем JTI. Их разрабатывают разные команды, и каждой нужен свой набор данных.
Отдавать данные «Евы» смежным системам JTI быстро, согласованно и безопасно — и приблизить их актуальность к реальному времени.
Выдавать данные только через защищённый API, без прямого доступа к базам.
Чтобы внешняя система забирала все строки быстро и без расхождений, даже если данные обновились посреди выгрузки.
Перестать дублировать одни и те же данные для разных потребителей.
Доставлять изменения потребителям за часы, а не за сутки, и платить ресурсами только за реально изменившиеся данные.
Менять механизм так, чтобы текущие потребители не заметили изменений.
Отдельный сервис интеграции со своей базой собирает данные из сервисов «Евы» в готовые витрины — снапшоты — и отдаёт их по защищённому API. За три года мы прошли путь от ночных выгрузок до обновления по событиям.
Новый API отдаёт страницы с одинаковой скоростью — и первую, и последнюю. Каждый ответ содержит зашифрованный токен следующей страницы, поэтому внешней системе не нужно знать, как устроена выборка:
Дублирующиеся снапшоты для разных систем объединили в общие. Сервис интеграции разделили на три: снапшоты, импорт и экспорт файлов, внутренние задачи по расписанию. У каждого теперь своя очередь задач, и тяжёлая выгрузка не блокирует остальные.
Вместо суточного пересчёта всего снапшота система ловит изменения в 15 исходных таблицах и пересчитывает только затронутые контракты. Механизм реализован для снапшота контрактов: новая версия обновляется минимум раз в 6 часов, а архитектура позволяет дойти до минут. Старая версия работает как раньше, а переход на новую стоит потребителю смены имени снапшота.
Интеграции нужно было ускорять на работающем продуктиве: потребители данных зависят от них каждый день, а ошибка бьёт по расчёту выплат и аналитике.
Служба безопасности исключила стандартные средства репликации, поэтому всю тяжёлую выгрузку пришлось строить на уровне приложения.
Каждое изменение на стороне BI и DWH проходит долгое согласование. API должен был работать правильно даже при ошибках на стороне клиента и не требовать от него знания внутреннего устройства.
Если новая версия снапшота выходит, когда потребитель забрал половину страниц, вторая половина может не совпасть с первой.
Изменения нужно отслеживать в 15 исходных таблицах трёх баз. Правка одного справочника может затронуть тысячи контрактов, а смена даты — изменить таргетинг контракта без единого изменения в данных.
Стандартная логика считает удалённым всё, чего не было в текущем прогоне. При частичном обновлении это стёрло бы почти все контракты у потребителей.
Каждое решение ниже убирает конкретное узкое место и при этом сохраняет гарантию, что данные у потребителей сходятся.
Смежные системы JTI получают данные «Евы» быстрее и свежее: формирование тяжёлого снапшота сократилось примерно с 4 часов до 20 минут, а данные по контрактам могут обновляться в 4 раза чаще.
вместо 4 часов — на сборку тяжёлого снапшота после технического релиза
вместо 250% — у сервиса интеграции после объединения снапшотов
цикл обновления данных по контрактам вместо раза в сутки
строк в таблицах, которые выгружаются без деградации скорости
Разберём задачу, предложим архитектуру решения и оценим сроки реализации — на первой консультации, бесплатно.