Налаштування 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
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142