Впровадження feature flags під ключ: Unleash, Growthbook, canary-релізи
Feature flags вирішують класичну DevOps-проблему: як задеплоїти код, не вмикаючи нову функціональність для всіх користувачів. Припустимо, ви викатили нову фічу — через хвилину 500-та помилка. Без прапорців відкат — перескладання та деплой. З прапорцями — вимкнув прапорець за секунду. Ми впроваджуємо прапорці функцій під ключ: обираємо інструмент (Unleash, Growthbook, PostHog), розгортаємо інфраструктуру та інтегруємо у ваш додаток. Результат — керування функціями без ризику та простоїв. Наші інженери мають сертифікати з Unleash та Growthbook, гарантуємо стабільну роботу після впровадження.
Які проблеми вирішують feature flags?
Trunk-based development — всі розробники в main-гілці, незавершені фічі приховані за прапорцем. Canary releases — вмикаєте нову версію спочатку для 1% користувачів, моніторите помилки, потім розширюєте до 100%. A/B тестування — порівнюєте конверсію двох варіантів. Kill switch — миттєво вимикаєте проблемну функцію без деплою. Beta-програми — відкриваєте доступ обраним акаунтам. На практиці ці сценарії покривають 90% потреб команди. За даними State of DevOps, команди з feature flags мають на 40% менше відкатів та у 2 рази частіше деплоять. Один із наших клієнтів — e-commerce площадка — за три місяці після впровадження скоротив кількість інцидентів з критичним статусом на 60% та збільшив частоту релізів з одного на два тижні до кількох разів на день. Перехід на trunk-based development усунув мерж-конфлікти з фіча-гілок.
Чому варто впроваджувати feature flags?
Якщо ви не використовуєте прапорці, кожен реліз — це ризик. Помилка в новій фічі може впасти весь сервіс, а відкат займає час. Прапорці перетворюють розгортання на безпечний процес. Наприклад, один клієнт скоротив простій на 40% та знизив операційні витрати на 30%. Feature flags також допомагають знизити кількість інцидентів на 40% та скоротити час на деплой на 70% за рахунок меншої кількості релізних вікон.
Що обрати: self-hosted чи cloud?
| Критерій | Self-hosted (Unleash / Growthbook) | Cloud (PostHog / LaunchDarkly) |
|---|---|---|
| Контроль над даними | Повний, дані на ваших серверах | Дані у провайдера |
| Вартість | Безкоштовно (open source) + хостинг | Підписка (окремий бюджет) |
| Обслуговування | Ваша команда адмініструє | Провайдер бере на себе |
| Гнучкість | API та кастомні стратегії | Обмежені налаштування |
Self-hosted підходить, якщо важливі безпека та кастомізація. Cloud — якщо хочете мінімізувати DevOps-навантаження. Ми допомагаємо з вибором та налаштовуємо обидва варіанти.
Як налаштувати Unleash (self-hosted)
Розгортаємо Unleash з PostgreSQL: конфігурація Docker Compose та запуск.
docker compose up -d
cat > docker-compose.yml << 'EOF'
services:
db:
image: postgres:16
environment:
POSTGRES_DB: unleash
POSTGRES_USER: unleash
POSTGRES_PASSWORD: secret
volumes:
- pg_data:/var/lib/postgresql/data
unleash:
image: unleashorg/unleash-server:latest
ports:
- "4242:4242"
environment:
DATABASE_URL: postgresql://unleash:secret@db/unleash
INIT_CLIENT_API_TOKENS: "default:development.unleash-token"
depends_on:
- db
volumes:
pg_data:
EOF
Після запуску налаштовуємо інтеграцію з Next.js (Server Components):
// lib/unleash.ts
import { initialize, isEnabled, getVariant } from 'unleash-client';
export const unleash = initialize({
url: 'http://unleash:4242/api',
appName: 'my-nextjs-app',
customHeaders: { Authorization: process.env.UNLEASH_TOKEN! },
});
export async function isFeatureEnabled(flag: string, userId?: string) {
await unleash.isReady();
return isEnabled(flag, { userId });
}
// app/page.tsx (Server Component)
import { isFeatureEnabled } from '@/lib/unleash';
export default async function HomePage() {
const showNewHero = await isFeatureEnabled('new-hero-section', userId);
return showNewHero ? <NewHeroSection /> : <OldHeroSection />;
}
Growthbook для A/B-тестів
Growthbook з коробки дає статистику по експериментах. Розгортання через Docker:
docker run -d \
-e MONGODB_URI=mongodb://mongo/growthbook \
-e APP_ORIGIN=http://localhost:3000 \
-p 3000:3000 \
growthbook/growthbook:latest
SDK для React:
import { GrowthBook, GrowthBookProvider, useFeatureValue } from '@growthbook/growthbook-react';
const gb = new GrowthBook({
apiHost: 'https://cdn.growthbook.io',
clientKey: process.env.NEXT_PUBLIC_GROWTHBOOK_CLIENT_KEY,
enableDevMode: process.env.NODE_ENV !== 'production',
trackingCallback: (experiment, result) => {
gtag('event', 'experiment_viewed', {
experiment_id: experiment.key,
variant_id: result.key,
});
},
});
function App({ Component, pageProps }) {
return (
<GrowthBookProvider growthbook={gb}>
<Component {...pageProps} />
</GrowthBookProvider>
);
}
function PricingPage() {
const showAnnualPricing = useFeatureValue('annual-pricing', false);
const ctaText = useFeatureValue('cta-text', 'Get Started');
return (
<div>
<button>{ctaText}</button>
{showAnnualPricing && <AnnualPricingSection />}
</div>
);
}
Як уникнути технічного боргу з прапорців?
Прапорці повинні мати термін життя. Створюйте кожен прапорець з датою завершення, наприклад, через 30 днів після ввімкнення. Використовуйте CI-скрипт, який знаходить прапорці старші за заданий період і позначає їх як tech debt. Регулярно видаляйте віджилі прапорці з коду. Це знижує когнітивне навантаження на команду та запобігає накопиченню прапорців-зомбі.
Процес роботи
- Аналіз — вивчаємо архітектуру вашого додатку та обираємо інструмент (Unleash / Growthbook / PostHog).
- Розгортання — підіймаємо інфраструктуру (Docker, Kubernetes або хмару).
- Інтеграція — вбудовуємо SDK у ваш додаток (Next.js, React, Vue, Laravel та ін.).
- Налаштування — конфігуруємо стратегії таргетингу та правила rollout.
- Документація — описуємо процес роботи з прапорцями та видалення.
- Навчання — проводимо воркшоп (2 години) для команди.
- Підтримка — 2 тижні після впровадження.
Що входить у роботу
- Аудит коду та архітектури поточного додатку.
- Вибір та розгортання інфраструктури (self-hosted або cloud).
- Інтеграція SDK з вашим стеком (React, Next.js, Vue, Laravel та інші).
- Налаштування стратегій таргетингу та правил rollout.
- Документація по роботі з прапорцями та їх видаленню.
- Навчання команди (2-годинний воркшоп).
- Гарантійна підтримка протягом 2 тижнів після впровадження.
Строки та вартість
Базове налаштування займає 1–2 робочих дні. Якщо потрібна кастомізація або складна інтеграція — термін збільшується до 3–5 днів. Вартість розраховується індивідуально залежно від складності проекту. Залиште заявку — ми проведемо аудит коду та запропонуємо оптимальне рішення.
Порівняння інструментів
| Інструмент | Тип | Сильні сторони |
|---|---|---|
| Unleash | Self-hosted | Простота, кастомні стратегії, низький поріг входу |
| Growthbook | Self-hosted / Cloud | Вбудована статистика A/B-тестів, візуальний редактор |
| PostHog | Cloud | Product analytics + прапорці в одному, поведінковий таргетинг |
Для простого менеджменту прапорців Unleash у 3 рази легший у налаштуванні, ніж Growthbook. Але якщо потрібно A/B-тестування з потужною статистикою — Growthbook кращий у 2 рази за зручністю аналізу (за відгуками наших клієнтів).
Зв'яжіться з нами для консультації — ми оцінимо ваш проект та допоможемо обрати підходящий інструмент. Замовте впровадження feature flags і почніть керувати функціями без ризику.







