SELECT user_id, COUNT(*) AS orders
FROM checkout_events
WINDOW TUMBLING (SIZE 5 MINUTES)
GROUP BY user_id, ip_address
HAVING COUNT(*) > 5 AND sum(amount) > 50000;
Любой туториал по безопасности предложит вам этот кусок Flink SQL как решение проблемы. Вы выкатываете это в прод. Через час в саппорт врывается разъярённый клиент: вы заблокировали корпоративный аккаунт архитектурного бюро, которое заказывало кресла в новый офис. Тем временем ферма ботов на резидентных проксях спокойно высасывает ваш маркетинговый бюджет через приветственные бонусы, делая строго по одному заказу с уникальных отпечатков. Классика. Антифрод и потоковая аналитика для маркетплейса и e-commerce в реальном времени: фейк-аккаунты, накрутки и мошеннические возвраты — это не поиск трёх совпадений по IP-адресу. Это гонка вооружений, где угрозы эволюционируют быстрее, чем ваши дата-инженеры пишут простые агрегации.
Банковский AML и транзакционный фрод давно живут в понятной парадигме. Там есть жёсткие правила регулятора, Kafka, Flink и чёткие паттерны отмывания. Шаг влево, шаг вправо — блокировка до выяснения. В e-commerce всё работает иначе. Ваш враг — не кардер с ворованной кредиткой, а профессиональный абузер. Он создаёт тысячи мультиаккаунтов для сбора промокодов. Он пишет фейк-отзывы конкурентам через ферму мобильных устройств. Он проворачивает возвратный фрод: заказывает оригинальный флагман, а в пункт выдачи приносит искусно запаянную коробку с куском мыла внутри. Батчевая аналитика здесь абсолютно бесполезна. Если вы ищете аномалии раз в сутки по ночам, вы просто констатируете уже нанесённые убытки. Деньги ушли. Товар выдан. Репутация честного селлера уничтожена накрученным отрицательным рейтингом.
Единственный рабочий рубеж обороны — миллисекунды до подтверждения заказа или выплаты продавцу. Вы обязаны принять взвешенное решение в окне между кликом «Оплатить» и фактической маршрутизацией транзакции в платёжный шлюз. Это накладывает жесточайшие требования на архитектуру чекаута. Вам нужны потоковые признаки, которые невозможно подделать сменой прокси или подменой User-Agent. Граф связей аккаунтов: пересекался ли этот новый, кристально чистый девайс с узлом, который полгода назад был замечен в хантинге за скидками? Поведенческие фичи: скорость скролла, тайминги между нажатиями клавиш, траектория мыши на фронтенде. Живой человек сомневается, тупит, промахивается мимо кнопок. Скрипт на Puppeteer бьёт в нужные DOM-элементы с холодной машинной точностью. И всё это нужно посчитать, обогатить историческим контекстом из Redis или Aerospike и прогнать через ML-модель за 50-70 миллисекунд. Иначе вы ломаете конверсию и теряете клиентов из-за таймаутов.
Вместо примитивных оконных функций нужен полноценный стриминговый feature store. В нём агрегаты считаются инкрементально. Как только событие попадает в топик, движок обновляет стейт: сколько раз этот хэш браузера мелькал на этапе авторизации за последние пять минут? Какова дельта времени между добавлением в корзину и вводом CVC-кода? Если эта дельта меньше пары секунд — перед вами не человек, а автофиллер, который парсит украденную базу дамп-карт. Эти признаки рассчитываются на лету. Главная архитектурная боль здесь — размер графа. Фродеры работают плотными сетями. Они прогревают аккаунты месяцами, перекидывают между ними мелкие суммы, заказывают дешёвые чехлы для телефонов, чтобы базовый алгоритм пометил их как надёжных покупателей. Когда наступает сезонная распродажа, эта сеть одновременно бьёт по самым дорогим позициям, применяет цепочки скомпрометированных промокодов и исчезает. Чтобы поймать этот паттерн в потоке, движок должен уметь обходить локальные окрестности графа за миллисекунды. Сделать это обычным реляционным JOIN-ом невозможно. Вы упрётесь в CPU и положите базу. Нужны in-memory структуры, стоящие в горячем контуре вплотную к инференсу.
Антифрод и потоковая аналитика для маркетплейса и e-commerce в реальном времени: цена ложного срабатывания
Теперь к неудобным цифрам, которые вендоры не показывают на демо-стендах SaaS-решений. Допустим, ваш чекаут держит 2000 транзакций в секунду в пике «Чёрной пятницы». Отдел рисков закручивает гайки жёсткими правилами. Доля пойманного фрода взлетает до 95%. Отличный KPI для отчёта безопасников. Но вместе с ним ложноположительные срабатывания (False Positive Rate) улетают к 3%. Три процента от 2000 TPS — это 60 заблокированных реальных покупателей каждую секунду. Шестьдесят полных корзин, которые превратились в чистую ненависть к платформе и ушли к конкуренту. За час распродажи вы теряете миллионы упущенной выручки, спасая десятки тысяч рублей от фродеров. Это трейд-офф, который стабильно убивает растущие маркетплейсы. Строгие эвристики эффективно режут фрод, но вместе с ним они безжалостно вырезают живой бизнес.
Машинное обучение в стриминге решает эту проблему за счёт многомерности. Модель видит не просто совпадение хэша устройства, а нетипичную плотность графа вокруг конкретного селлера, который внезапно начал получать сотни пятизвёздочных отзывов от аккаунтов-однодневок с нулевой историей покупок. Алгоритм взвешивает десятки слабых сигналов, которые по отдельности выглядят безобидно, но в сумме дают профиль накрутчика. Но ML требует непрерывного тюнинга. Модели деградируют со временем. Профессиональные фродеры реверс-инжинирят ваши веса за пару недель слепых тестов, нащупывая точные пороги блокировки методом проб и ошибок. Обучили модель и забыли — значит, через месяц она станет тыквой.
Наш подход в Morana Labs опирается на пайплайны непрерывного дообучения и строгий on-premise для инференса. Индустриальный e-commerce оперирует гиперчувствительными данными. Графы связей пользователей, детализированные профили поведения, истории платежей — всё это не должно покидать ваш защищённый контур. Отправлять такие массивы по REST API в стороннее облако — это архитектурная халатность, где вы теряете контроль над latency и дарите чужому вендору ядро вашей коммерческой тайны.
Сборка подобной системы не имеет ничего общего с покупкой коробочного софта по подписке. Это глубокая интеграция тяжелого потокового движка в кровеносную систему вашего чекаута. Мы строим кастомный потоковый антифрод от 750 000 ₽, проектируя графовые и поведенческие пайплайны, которые держат p99 latency в пределах пары десятков миллисекунд на серверах заказчика. Никакого хайпа ради хайпа. Только суровая профильная инженерия, которая отличает реального покупателя от скрипта в тот самый момент, когда это спасает сделку.