Всем привет! Меня зовут Искандер, я отвечаю за продуктовое развитие A/B-платформы Avito – Trisigma, а раньше работал в EXPF и также отвечал за A/B-платформу, которая называлась Sigma.

В июне произошло важное событие для российского рынка продуктовой аналитики: платформа Sigma официально стала частью Trisigma. Объединение двух систем для проведения экспериментов открывает новые возможности как для разработчиков, так и для бизнеса. В этой статье я рассказываю, чем уникальна Sigma, как она устроена под капотом и какие плюсы появление новой платформы сулит пользователям объединённой системы.

Содержание:

Что такое Sigma и Trisigma

Trisigma — крупная платформа для запуска и управления экспериментами. Она покрывает полный цикл A/B-тестирования: от заведения экспериментов до аналитики, координации между командами и согласования релизов.

Sigma — система, сфокусированная на запуске экспериментов на стороне клиента (client side). Это важное отличие: в Sigma вся логика расчёта — включая сплитование пользователей — происходит прямо в браузере или в приложении, а не на сервере.

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

Зачем объединять платформы

Объединение Sigma с Trisigma — не просто интеграция команд и инфраструктуры. Это шаг к созданию единой, гибкой, многоуровневой платформы. В планах добавить в Sigma мощный client side-функционал, который раньше был недоступен. Переход позволит:

  • оптимизировать издержки на инфраструктуру;

  • расширить спектр типов экспериментов;

  • улучшить стабильность и независимость от серверов;

  • предложить бизнесу больше сценариев тестирования без участия разработчиков.

Тут еще больше контента

Как устроена Sigma

В центре Sigma — SDK, встраиваемые в клиентские приложения.

SDK-библиотека Sigma периодически, с интервалом в несколько секунд, запрашивает у сервера актуальную конфигурацию фича-флагов и параметров A/B-тестов, сохраняя полученные данные в локальном кэше. 

Алгоритм распределения пользователей по вариантам эксперимента выполняется непосредственно в SDK на пользовательском устройстве, поэтому при переходе между страницами или перезагрузке приложения повторный сетевой запрос не требуется — все калькуляции происходят локально. Детерминированный хэш-алгоритм в SDK Sigma гарантирует, что при одинаковых входных параметрах (например, идентификатор пользователя и ключ эксперимента) всегда будет выбираться один и тот же вариант при бесконечном вызове функции.

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

Что это даёт:

  • автономность: все данные обрабатываются на стороне клиента, так что доступность всех серверов сервиса не важна для производительности;

  • скорость и надежность: нет задержек на сетевые запросы;

  • безопасность: Sigma не собирает данные пользователей, они остаются на стороне клиента и не уходят на серверы Sigma.

SDK — наше все

Давайте рассмотрим, как выглядит работа с библиотекой на примере NodeJS.

Первое, что необходимо сделать разработчику, — установить SDK для своей платформы. На момент написания этой статьи мы поддерживаем JavaScript, NodeJS, Kotlin и Swift.

Например, для NodeJS достаточно установить пакет через npm:

npm i expf-sigma-node.js

Инициализация клиента и создание объекта пользователя выполняются так же просто — достаточно вызвать:

const Sigma = require('expf-sigma-node.js').default;
const sigma = new Sigma(<токен проекта>);
const userData = {
 userId: 'userId',       // например, clientId из счетчика google analytics
 profileId: 'profileId', // например, ID пользователя при регистрации
 deviceId: 'deviceId',   // например, ID устройства, с которого зашел пользователь
 email: 'example@mail.ru',
 custom: {   // если основных полей не хватает, всегда можно добавить свои
   new_user: true,
   level: 2
 }
}
const sigma = new Sigma(token, userData);

На этом этапе мы завершили подготовку к основной работе. Теперь необходимо создать эксперимент и фича-флаг. Для этого используется следующий метод — .checkFlag().

Жми сюда!

Как он устроен?

При разработке нашего продукта мы в первую очередь вдохновлялись философией Trunk-Based Development. Ее суть заключается в ускорении доставки изменений в продукт за счет того, что работа ведется сразу в основной ветке репозитория (main/master) без долгоживущих feature-веток. Такой подход был бы невозможен без системы управления фича-тогглами.

Представим, что мы создали фича-тоггл для новой кнопки на сайте — showButton, которая по умолчанию выключена (false). 

Разработчик выкатывает изменения в main/master с новой кнопкой и может переходить к другим задачам. Тогда обертка для отображения кнопки выглядит следующим образом:

if (sigma.checkFlag("showButton")) {
  // показываем кнопку пользователю
} else {
  // скрываем кнопку
}

Позже аналитик решает запустить эксперимент, в рамках которого будет тестироваться эта кнопка. Ему достаточно связать фича-тоггл с экспериментом и задать правило: пользователи, попавшие в группу Тест, будут видеть кнопку, а для группы Контроль она останется скрытой.

Самое главное — разработчику не нужно предпринимать никаких дополнительных действий, так как кнопка уже находится в production-среде, а управление полностью осуществляется через фича-тоггл.

Какая еще есть польза у интеграции? 

Интеграция Sigma в Trisigma — это не только про разработку. Есть также множество преимуществ, которые будут полезны бизнесу:

  • снижение времени на запуск тестов — благодаря визуальному редактору не нужно ждать разработчиков;

  • экономия на инфраструктуре — расчёты на клиенте минимизируют серверные издержки;

  • отказоустойчивость — эксперименты продолжают работать даже при проблемах с сервером;

  • безопасность данных — соответствие требованиям приватности и безопасности (EBA);

  • гибкость экспериментов — больше типов тестов, больше сценариев;

  • инструмент для продуктовой разработки — отдельные фича-флаги дают контроль над релизами без изменения кода.

Кликни здесь и узнаешь

Что дальше?

Пока команды работают над переносом инфраструктуры Sigma в контур Trisigma и Авито. Финальная архитектура объединённой платформы ещё формируется. Но уже понятно: Sigma станет важным звеном в экосистеме Trisigma, усиливая её за счёт client-side подхода.

Что думаете о преимуществах Sigma?

А если хотите вместе с нами помогать людям и бизнесу через технологии — присоединяйтесь к командам. Свежие вакансии есть на нашем карьерном сайте. И подписывайтесь на канал Trisigma!

Комментарии (0)