Настройка Feature Flags через Unleash: практическое руководство

Когда выкатка нового функционала превращается в многочасовую координацию между командами, а откат изменений занимает слишком много времени, пора внедрять feature flags. Мы настраиваем Unleash — систему управления фичами, которая позволяет безопасно проводить canary-релизы и A/B-тесты. Наша команда реализует проект под ключ: от развёртывания в Kubernetes до настройки стратегий активации, обеспечивая стабильную работу и последующую поддержку.
Часто задаваемые вопросы

Feature flag система нужна, когда кодовых путей становится слишком много и выкатка через Git репозиторий занимает часы. При 50+ микросервисах каждое изменение требует координации, а время выкатки растёт до 3–4 часов. Без хорошего toggle-менеджера легко получить каскад ошибок при раскатке нового функционала. Мы в своей практике разворачиваем Unleash для снижения рисков при A/B тестах и canary релизах. Как указано в официальной документации Unleash, система поддерживает множество стратегий активации из коробки. За 5 лет мы внедрили его в проектах с трафиком 1 млн запросов в день, сократив время отката с 30 минут до нескольких секунд.

Unleash — self-hosted система с самым богатым набором встроенных стратегий активации. В отличие от простых on/off систем, Unleash из коробки поддерживает gradualRollout, userWithId, remoteAddress, flexibleRollout с sticky sessioning — без написания кастомной логики. Это позволяет включать функционал постепенно, по пользователям, IP или случайному проценту.

Мы на рынке 5+ лет, реализовали 30+ проектов с feature toggle системами. Ниже — практический опыт настройки Unleash в Kubernetes.

Развёртывание Unleash в Kubernetes

Пример манифеста Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: unleash
spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: unleash
          image: unleashorg/unleash-server:5.12
          env:
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: unleash-secrets
                  key: database-url
            - name: SECRET
              valueFrom:
                secretKeyRef:
                  name: unleash-secrets
                  key: admin-secret
            - name: INIT_FRONTEND_API_TOKENS
              value: "frontend:default.frontend-token"
          ports:
            - containerPort: 4242
          readinessProbe:
            httpGet:
              path: /health
              port: 4242
            initialDelaySeconds: 10

PostgreSQL — обязательное требование. SQLite для продакшна не подходит.

Стратегии активации

Unleash разделяет toggle на несколько видов:

  • release — постепенная раскатка на процент пользователей
  • experiment — A/B тест с несколькими вариантами
  • operational — kill switch для проблемного кода
  • permission — включение для конкретных ролей/групп

Для gradual rollout с sticky sessioning (пользователь всегда видит одно и то же):

import { Unleash } from 'unleash-client';

const unleash = new Unleash({
  url: 'https://unleash.internal/api',
  appName: 'api-service',
  customHeaders: {
    Authorization: 'srv-*****',
  },
});

await unleash.start();

// Sticky rollout — пользователь всегда в одном бакете
const context = {
  userId: user.id,
  sessionId: session.id,
};

if (unleash.isEnabled('new-pricing-page', context)) {
  // показываем новую страницу
}

flexibleRollout стратегия использует userId или sessionId для consistent hashing — один и тот же пользователь всегда получает одинаковый результат независимо от сервера.

Unleash Edge для снижения задержки

В распределённых системах SDK делает HTTP запрос к Unleash API при каждой evaluate. Unleash Edge — легковесный прокси, который кешируется на уровне kubernetes namespace или даже пода:

- name: unleash-edge
  image: unleashorg/unleash-edge:latest
  env:
    - name: UPSTREAM_URL
      value: "https://unleash.internal"
    - name: TOKENS
      value: "srv-*****"
  ports:
    - containerPort: 3063

SDK подключается к Edge по сети кластера — latency микросекунды вместо миллисекунд на внешний Unleash сервер.

Сравнение Unleash vs LaunchDarkly

Критерий Unleash LaunchDarkly
Цена Бесплатно (self-hosted) + Ops-затраты От $1,000/мес за 10,000 флагов
Контроль данных Полный (ваша инфраструктура) Данные на серверах вендора
Open-source Да (Apache 2.0) Нет
Производительность ~5ms evaluate на сервере, <1ms через Edge ~100ms evaluate без кеша
Простота настройки Средняя (нужен DevOps) Высокая (SaaS)

Экономия на подписке при переходе с LaunchDarkly составляет 50-70% при объёме более 10 000 флагов, что в денежном выражении означает сокращение расходов с $2,000/мес до $600-1,000/мес. Однако Unleash требует инженерных часов на поддержку — в среднем 4 часа в месяц, что при ставке $100/час даёт $400/мес дополнительных затрат. Чистая экономия может достигать $1,000-1,600/мес.

Как мы настраиваем Unleash: пошаговый план

  1. Аудит инфраструктуры — оцениваем текущие микросервисы, количество флагов, требования к latency.
  2. Деплой сервера и базы — разворачиваем Unleash + PostgreSQL в Kubernetes с помощью Helm или Kustomize.
  3. Интеграция SDK — подключаем клиенты (Node.js, Go, Python) к серверу или Edge, настраиваем токены.
  4. Настройка стратегий — создаём кастомные стратегии для canary, A/B, kill switch, импортируем существующие тогглы.
  5. Мониторинг и алерты — устанавливаем дашборды Grafana, алерты на SLO и MTTR, пишем runbook для инцидентов.

Почему стоит выбрать Unleash, а не LaunchDarkly?

Unleash лучше LaunchDarkly в сценариях, где важны контроль данных и стоимость. При объёме более 10 000 флагов экономия на подписке составляет 50-70%, но вы платите Ops-временем. Unleash полностью open-source — можно форкнуть и дорабатывать под себя. LaunchDarkly даёт меньше хлопот с инфраструктурой, но привязывает к облаку.

Как снизить задержку оценивания флагов?

Используйте Unleash Edge — легковесный прокси, кеширующий флаги в памяти. Edge можно разместить в каждом namespace Kubernetes, чтобы SDK обращался локально. При 1 000 000 evaluate в час Edge снижает нагрузку на сервер в 10 раз и гарантирует latency <1ms.

Что входит в настройку Unleash под ключ

Компонент Результат
Развёртывание сервера Рабочий Unleash в вашем кластере с PostgreSQL
Интеграция SDK Подключение одного или нескольких приложений
Настройка стратегий Создание кастомных стратегий для canary, A/B, kill switch
Unleash Edge Установка и настройка Edge для низкой задержки
Мониторинг Дашборды Grafana и алерты на критичные метрики

Как мы гарантируем надёжность развёртывания?

Мы используем GitOps с ArgoCD, покрываем конфигурацию тестами и предоставляем runbook для инцидентов. Опыт 30+ проектов позволяет избежать типовых ошибок при настройке RBAC, NetworkPolicy и масштабировании. Гарантируем стабильную работу: SLO 99.9% для сервера Unleash.

Срок реализации и как заказать

Развёртывание сервера + базовая интеграция SDK — от 1 дня. Настройка стратегий, Edge прокси, импорт существующих флагов — от 1 до 2 дней. Стоимость рассчитывается индивидуально после аудита инфраструктуры.

Свяжитесь с нами для аудита вашего проекта. Получите консультацию по оптимальной конфигурации Unleash. Закажите настройку feature flags, чтобы ускорить релизный цикл. Пишите, мы всегда на связи.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1374
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142