Unleash: منصة feature flags مفتوحة المصدر تفصل بيها الـ deploy عن الـ release
Unleash منصة feature management مفتوحة المصدر: gradual rollouts و kill switches و A/B testing و SDKs رسمية لأغلب اللغات. إزاي تجربه بـ docker compose وتستخدمه من Node.js.
لو بتعمل deploy لميزة جديدة وإيدك على قلبك، ولو حصلت مشكلة بتضطر تعمل rollback للـ release كله، فالـ feature flags ممكن تغيّر طريقة شغلك. والنهارده هنتكلم عن Unleash، أشهر مشروع مفتوح المصدر في المجال ده على GitHub.
Unleash إيه بالظبط؟
Unleash منصة feature management مفتوحة المصدر. الفكرة الأساسية إنك تفصل الـ deploy عن الـ release: الكود يوصل production وهو مقفول ورا flag، وانت تقرر من لوحة التحكم تفتحه لمين وإمتى، من غير deploy جديد.
- اللغة: TypeScript
- الرخصة: AGPL-3.0
- الشعبية: أكتر من ١٤ ألف نجمة على GitHub
- آخر إصدار: v8.3.1 (٢٩ أكتوبر ٢٠٢٦)
بيحل مشكلة إيه؟
بدل ما تبني نظام flags جوه الأبلكيشن بنفسك، أو تدفع اشتراك لخدمة feature flags مستضافة، Unleash بيديك نفس الفكرة وتقدر تستضيفه على سيرفرك أو على أي cloud.
أهم المميزات (من الـ README)
- Activation strategies: تفتح الميزة لمستخدمين أو segments معيّنة من غير redeploy
- Gradual rollouts و canary releases: تبدأ بنسبة صغيرة من المستخدمين وتزوّد واحدة واحدة
- Kill switches: تقفل ميزة فيها مشكلة فورًا
- A/B testing باستخدام الـ variants
- Audit logs، والـ end-user data مش بتسيب الأبلكيشن بتاعك
- API-first: أي حاجة في Unleash تقدر تعملها automation
- Unleash Edge لو عندك frontend clients كتير وعايز تخفف الحمل عن السيرفر
- إشارات للـ stale flags عشان تنضّف الـ technical debt
SDKs رسمية
فيه SDKs رسمية للـ backend زي Go و Java و Node.js و Python و PHP و Ruby و Rust و .NET، وللـ frontend زي JavaScript و React و Vue و Svelte و iOS و Android و Flutter، غير SDKs من المجتمع للغات تانية.
تجربه محليًا
محتاج git و docker بس:
git clone git@github.com:Unleash/unleash.git
cd unleash
docker compose up -d
وبعدها افتح localhost:4242. اليوزر والباسورد الافتراضيين مكتوبين في الـ README، وغيّرهم أول ما تدخل.
مثال في Node.js
من الـ README الرسمي للـ Node SDK:
import { startUnleash } from 'unleash-client';
const unleash = await startUnleash({
url: 'https://<your-unleash-instance>/api/',
appName: 'my-node-name',
customHeaders: { Authorization: '<your-backend-token>' },
});
if (unleash.isEnabled('my-feature')) {
// new behavior
}
خد بالك
النسخة المفتوحة فيها عدد environments محدود، وحاجات زي RBAC و SSO والـ segmentation المتقدمة وconstraints إضافية موجودة في خطط Pro و Enterprise. وكمان رخصة AGPL ليها شروط لو هتعدّل في السيرفر نفسه وتقدّمه كخدمة، فاقراها كويس.
رأيي
لو فريقك بيعمل releases كتير أو عايز يجرّب ميزات على جزء من المستخدمين، الـ feature flags بتقلل توتر الإطلاق جدًا. بس الـ flags لو اتسابت بتتحول لـ technical debt، فخلّي فيه عادة إنك تشيل القديم منها أول بأول.
المصادر
- Unleash
- Feature Flags
- Open Source
- DevOps
- Self-Hosted
- TypeScript