О чём эта история

Sales Ninja — разработчик облачной маркетинговой ИИ‑платформы для оптимизации сайта и рекламы испытывал проблемы из‑за нестабильного качества услуг провайдера инфраструктуры. Кроме того, компания нуждалась в широком наборе управляемых сервисов, который не мог предоставить текущий провайдер.

Sales Ninja рассмотрела несколько платформ, представленных на рынке, и решила перейти в Yandex Cloud. Это решение помогло компании получить выгоду как с точки зрения бюджета, так и удобства использования. Экономия составила 250‑300 тыс. рублей в месяц, при этом существенно повысилась стабильность работы системы, а количество инфраструктурных инцидентов уменьшилось в 5‑7 раз.

Повысить доступность и надёжность платформы

Компания Sales Ninja — разработчик одноименной маркетинговой платформы на основе искусственного интеллекта. Это сервис, который позволяет подстраивать сайт под каждого клиента и оптимизировать рекламу.

Услугами Sales Ninja уже воспользовались десятки компаний крупного и среднего бизнеса, в частности банк Blanc, школы программирования КАТА Academy и Coddy, сервис психологической помощи Alter, интернет‑магазин DOHOME.

Sales Ninja изначально использовала облачную инфраструктуру, как иностранных, так и российских провайдеров. В последнее время компания использовала вычислительные мощности одного из российских облачных провайдеров в условиях высокой нагрузки. Однако качество услуг было очень нестабильным — за последний год было пять аварий с одним только SQS, в том числе и с потерей данных. Также Sales Ninja нуждалась в широком наборе управляемых сервисов, чего не мог предоставить текущий провайдер. Кроме того, у провайдера были сложности со скоростью реакции специалистов поддержки. Поэтому Sales Ninja решила найти новую облачную платформу.
Sales Ninja оценивала несколько облачных платформ. Компания решила локализовать сервис, чтобы избежать рисков при развёртывании проекта на иностранных площадках.

Облачная платформа должна была:

  • гарантировать стабильное оказание услуг;
  • обеспечивать более широкий набор технологий и сервисов, чем тот, который предоставлял прежний провайдер;
  • предоставлять собственные сервисы, которые позволяют избежать лицензионных рисков;
  • отвечать требованиям правил по обработке информации в соответствии с ФЗ‑152 и ГОСТ Р 57580.

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

Сравнив несколько облачных платформ, Sales Ninja выбрала Yandex Cloud, в том числе из‑за имеющегося опыта сотрудничества. Принимая это решение, компания учитывала высокий уровень сервиса Yandex Cloud и широкий спектр управляемых сервисов, поддерживаемых этим облачным провайдером.

Кроме того, Yandex Cloud предоставил грант в 200 тыс. рублей в рамках программы поддержки компаний-разработчиков программного обеспечения и цифровых продуктов Yandex Cloud Boost. Она позволила Sales Ninja легко и удобно создать инфраструктуру в облаке и высвободить ресурсы для активного развития бизнеса, не дублируя затраты на оплату одновременно двух облачных платформ.

Переход на инфраструктуру Yandex Cloud и обеспечение устойчивой работы платформы

Ключевые продукты платформы — это «AI моделируемые конверсии», «Глубокая AI‑персонализация сайта» и «A/B‑тестирование». Первый из них позволяет обучать рекламные автостратегии на малом количестве конверсий, длинном цикле сделки, а также помогает перейти от односессионной оптимизации рекламы ко многосессионной (замена программатиков, автоматический медиамикс, распределение бюджета). Второй — показывает каждому клиенту идеальную версию его интернет-ресурса, а сервис «A/B тестирование» предлагает большие возможности для тестирования самых смелых гипотез и максимально прост в использовании, обеспечивая низкий порог вхождения.

Sales Ninja интегрируется с Яндекс Метрикой, DataLayer и Google Tag Manager, которые позволяют передавать данные об изменениях, связанных с персонализацией объектов сайта.

Чтобы интегрировать Sales Ninja, клиенту нужно через Google Tag Manager или вручную добавить JS‑код на сайт. Не нужно передавать данные клиента или интегрировать решение в бекэнд. С помощью Sales Ninja можно оптимизировать контент на любом этапе воронки продаж: карточку товара, страницу оплаты, корзину. Более того, можно оптимизировать контент по выручке и прибыли, которую приносит этот товар.

Разработка системы началась примерно три года назад, а в конце июля 2022 года проект уже запустился в виде бета-версии. Система изначально разрабатывалась с прицелом на модульность: составные блоки, которые можно менять местами, кастомизируя продукт.

Фронтенд написан на JavaScript с использованием фреймворков Vue, Quasar, а также Vite — инструмента для сборки фронтенд-проектов на VueJS. Бэкенд разработан на платформе .NET и использует базы данных PostgreSQL, Redis и ClickHouse.

Сотрудники Sales Ninja самостоятельно за две недели перенесли систему на новую облачную инфраструктуру. При этом команда столкнулась с некоторыми сложностями. В частности, для Yandex Managed Service for PostgreSQL используется «Одиссей» — многопоточный пулер соединений от Яндекса. Это аналог PgBouncer, который не до конца с ним совпадает, что и вызвало затруднения. Кроме того, хотя Yandex Message Queue реализует стандарт SQS, на практике есть множество ограничений, поэтому команда потратила некоторое время на дополнительную настройку. С помощью поддержки Yandex Cloud команде Sales Ninja удалось быстро решить эти проблемы.

Сейчас большая часть сервисов, как внутренних, так и внешних, развёрнута в контейнерах Yandex Managed Service for Kubernetes®. В нескольких подах Kubernetes® развёрнуты системы, которые принимают API‑запросы из личного кабинета или с сайтов клиентов и синхронно отвечают на них. Ещё несколько подов Kubernetes® — это обработчики асинхронных сообщений ASYNC. Они считывают события из брокера сообщений и обрабатывают их нужным образом. Например сохраняют в кластере ClickHouse. Обучение ИИ‑системы происходит на ML‑подах — это отдельный сервис, развёрнутый в нескольких инстансах. Его единственное назначение — тренировать модели машинного обучения. Количество таких подов автоматически изменяется в зависимости от нагрузки. При необходимости ресурсы можно масштабировать. Сейчас инстансы Kubernetes® используют 140 vCPU и 1114 ГБ оперативной памяти. Компания прогнозирует, что объём ресурсов будет расти на 40‑50% каждые 3‑6 месяцев.

Решение использует в том числе и прерываемые машины (burstable) Yandex Compute Cloud — это тип ВМ в облаке с негарантируемой непрерывностью работы. В любой момент под и нода Kubernetes® могут мигрировать на другой физический сервер, что позволяет экономично обрабатывать большие потоки событий и обучать ML‑модели.

За работу с событиями отвечает брокер сообщений Yandex Managed Service for Apache Kafka®. Он управляет информацией о сессиях клиентов, их действиях, технических событиях моделей системы (например, о вызовах функции персонализации способа оформления заказа). Сервис также используется для удобной балансировки нагрузки и «расцепки» разных частей инфраструктуры между собой.

Для управления событиями, которые происходят в ML-подах при обучении, используется сервис Yandex Message Queue, работающий параллельно Kafka и дублирующий его в случае падения или ребаланса, а также для передачи некоторых сообщений.

Архитектура Sales Ninja в Yandex Cloud

Метаданные хранятся в трёх кластерах Yandex Managed Service for PostgreSQL — это данные о событиях, связанных с персонализацией объектов сайта, моделируемых конверсиях, проектах, интеграциях, различные статистические значения. Данные сессий клиентов, конверсии, технических событий хранятся в кластере Yandex Managed Service for ClickHouse.

Чтобы хранить изображения, которые клиенты используют для персонализации объектов сайта, создали несколько бакетов Yandex Object Storage.

С помощью платформы анализа и визуализации данных Grafana, встроенной в личный кабинет, и системы мониторинга и оповещений Prometheus можно легко отслеживать показатели производительности работы платформы. Для сбора, хранения и отображения метрик управляемых сервисов используется сервис Yandex Monitoring.

Для быстрой доставки контента, например, для ускорения скачивания JS‑скрипта, помогающего системе быстрее работать, применяется Yandex Cloud CDN.

Сервис Yandex Cloud DNS применяют, чтобы обслуживать DNS-зону sales-ninja.me.

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

За последнее время оборот Sales Ninja вырос примерно в 5‑6 раз, компания заключила партнерские соглашения с рядом крупных организаций и вышла на окупаемость. В работе 10 крупных пилотных проектов, в процессе запуска — ещё 10.

С момента миграции нагрузка серьёзно увеличилась: с 4‑5 млн до 950 млн API‑вызовов в месяц. Причём существенная часть этой нагрузки — вызовы моделей, которые позволяют увеличить конверсию или выручку клиентских сайтов.

Благодаря миграции в Yandex Cloud компания получила существенную выгоду как с точки зрения бюджета, так и удобства эксплуатации платформы. А по сравнению с зарубежными облачными ресурсами, использование мощностей Yandex Cloud обходится компании Sales Ninja примерно на 50% дешевле. И, хотя некоторые российские облачные провайдеры предоставляют оборудование по более низкой цене, Yandex Cloud имеет значительные преимущества для проекта Sales Ninja. В частности:

  • После миграции в Yandex Cloud только за счёт использования прерываемых машин Sales Ninja экономит порядка 100‑150 тыс. рублей в месяц.
  • При этом существенно снизилось количество простоев и падений системы (в 5‑7 раз по сравнению с прежним провайдером). Это уменьшило объём работы DevOps‑специалистов и позволило сэкономить ещё около 150 тыс. рублей в месяц. При этом цена ошибки и простоя сейчас в десятки раз больше, чем было до перехода в Yandex Cloud.
  • Yandex Cloud в отличие от других облачных решений предоставляет все нужные команде управляемые сервисы. Это позволило упростить работу системы и снизило риск возникновения проблем.

Сейчас команда рассматривает Yandex Cloud Postbox для почты и Yandex Foundation Models для встраивания моделей в свои продукты. Например, чтобы генерировать подсказки при выборе лучших вариантов персональных изменений страниц сайта.

Мнение

Рустам Салахутдинов,
CEO Sales Ninja
Рустам Салахутдинов,
CEO Sales Ninja

Мы — клиенты требовательные и в облачном мире достаточно опытные, а продукт — сложный и нагруженный. Платформа Yandex Cloud на наших глазах выросла до, по сути, единственного в России облака, которое подходит для сложных проектов и сопоставимо с ведущими западными облаками. Все остальные облачные провайдеры в России пока в основном работают в виде «у нас есть Managed Kubernetes® и ещё пару сервисов», что полноценным облаком по типу AWS назвать сложно.