הגדרת דגלי תכונה עם Unleash: מדריך מעשי

כאשר השקת פונקציונליות חדשה הופכת לשעות של תיאום בין צוותים והחזרת שינויים אורכת זמן רב מדי, הגיע הזמן ליישם דגלי תכונה (feature flags). אנו מגדירים את Unleash, מערכת ניהול תכונות המאפשרת שחרורים בטוחים (canary releases) ובדיקות A/B. הצוות שלנו מספק פרויקט סוהר, החל מהפריסה ב-Kubernetes ועד להגדרת אסטרטגיות ההפעלה, תוך הבטחת פעילות אמינה ותמיכה מתמשכת.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

מערכת דגלי תכונות נדרשת כאשר מספר נתיבי הקוד הופך גדול מדי והפריסה דרך מאגר Git אורכת שעות. עם 50+ מיקרוסרביסים, כל שינוי דורש תיאום, וזמן הפריסה גדל ל-3–4 שעות. ללא מנהל מתגים טוב, קל לקבל מפל שגיאות בעת פריסת פונקציונליות חדשה. בניסיון שלנו, אנו פורסים Unleash כדי להפחית סיכונים בבדיקות A/B ובשחרורים קנריים. כפי שנאמר ב-תיעוד הרשמי של Unleash, המערכת תומכת באסטרטגיות הפעלה רבות מתוך הקופסה. במשך 5 שנים, יישמנו אותו בפרויקטים עם תעבורה של מיליון בקשות ביום, והפחתנו את זמן החזרה לאחור מ-30 דקות לכמה שניות.

Unleash היא מערכת מתארחת עצמית עם הסט העשיר ביותר של אסטרטגיות הפעלה מובנות. בניגוד למערכות פשוטות של הפעלה/כיבוי, Unleash תומך מתוך הקופסה ב-gradualRollout, userWithId, remoteAddress, flexibleRollout עם sticky sessioning — ללא כתיבת לוגיקה מותאמת אישית. זה מאפשר הפעלת פונקציונליות בהדרגה, לפי משתמשים, IP, או אחוז אקראי.

אנחנו בשוק כבר 5+ שנים, השלמנו 30+ פרויקטים עם מערכות דגלי תכונות. להלן ניסיון מעשי בהקמת 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 מחלק את המתגים למספר סוגים:

  • release — פריסה הדרגתית לאחוז מהמשתמשים
  • experiment — בדיקת A/B עם מספר גרסאות
  • operational — מתג חירום לקוד בעייתי
  • permission — הפעלה עבור תפקידים/קבוצות ספציפיים

לפריסה הדרגתית עם 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)) {
  // показываем новую страницу
}

אסטרטגיית 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 משתמשת ב-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 עבור גיבוב עקבי — אותו משתמש תמיד מקבל את אותה תוצאה ללא קשר לשרת.

Unleash Edge להפחתת זמן השהיה

במערכות מבוזרות, ה-SDK מבצע בקשת HTTP ל-API של Unleash בכל הערכה. Unleash Edge הוא פרוקסי קל משקל שמטמון ברמת ה-namespace של Kubernetes או אפילו ברמת ה-pod:

---
- 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 דרך רשת הקלאסטר — זמן השהיה הוא מיקרו-שניות במקום מילי-שניות לשרת Unleash החיצוני.

השוואת Unleash מול LaunchDarkly

קריטריון Unleash LaunchDarkly
מחיר חינם (מתארח עצמית) + עלויות תפעול החל מ-$1,000/חודש עבור 10,000 דגלים
שליטה בנתונים מלאה (התשתית שלך) נתונים על שרתי הספק
קוד פתוח כן (Apache 2.0) לא
ביצועים ~5ms הערכה בשרת, <1ms דרך Edge ~100ms הערכה ללא מטמון
קלות התקנה בינונית (נדרש DevOps) גבוהה (SaaS)

חיסכון במנוי בעת מעבר מ-LaunchDarkly הוא 50-70% עבור נפחים מעל 10,000 דגלים, מה שמבחינה כספית אומר הפחתת עלויות מ-$2,000/חודש ל-$600-1,000/חודש. עם זאת, Unleash דורש שעות הנדסה לתחזוקה — בממוצע 4 שעות בחודש, בתעריף של $100/שעה מוסיף $400/חודש בעלויות נוספות. החיסכון הנקי יכול להגיע ל-$1,000-1,600/חודש.

איך הקמנו את Unleash: תוכנית שלב-אחר-שלב

  1. ביקורת תשתית — הערכת מיקרוסרביסים נוכחיים, מספר דגלים, דרישות זמן השהיה.
  2. פריסת שרת ומסד נתונים — הקמת Unleash + PostgreSQL ב-Kubernetes באמצעות Helm או Kustomize.
  3. שילוב SDK — חיבור לקוחות (Node.js, Go, Python) לשרת או ל-Edge, הגדרת טוקנים.
  4. הגדרת אסטרטגיות — יצירת אסטרטגיות מותאמות אישית לקנרי, A/B, מתג חירום, ייבוא מתגים קיימים.
  5. ניטור והתראות — הגדרת לוחות מחוונים ב-Grafana, התראות על SLO ו-MTTR, כתיבת runbook לאירועים.

למה לבחור ב-Unleash על פני LaunchDarkly?

Unleash עדיף על LaunchDarkly בתרחישים שבהם שליטה בנתונים ועלות חשובים. עבור נפחים מעל 10,000 דגלים, חיסכון במנוי הוא 50-70%, אבל משלמים בזמן תפעול. Unleash הוא קוד פתוח מלא — אפשר לבצע fork ולהתאים אישית. LaunchDarkly נותן פחות טרחה תשתיתית אבל קושר אותך לענן.

איך להפחית את זמן השהיית הערכת דגלים?

השתמשו ב-Unleash Edge — פרוקסי קל משקל שמטמון דגלים בזיכרון. אפשר למקם את Edge בכל namespace של Kubernetes כך שה-SDKs מתחברים מקומית. ב-1,000,000 הערכות בשעה, Edge מפחית את עומס השרת פי 10 ומבטיח זמן השהיה <1ms.

מה כלול בהקמת Unleash במפתח פתוח

רכיב תוצאה
פריסת שרת Unleash עובד בקלאסטר שלך עם PostgreSQL
שילוב SDK חיבור של יישום אחד או יותר
הגדרת אסטרטגיות יצירת אסטרטגיות מותאמות אישית לקנרי, A/B, מתג חירום
Unleash Edge התקנה והגדרה של Edge לזמן השהיה נמוך
ניטור לוחות מחוונים ב-Grafana והתראות על מדדים קריטיים

איך אנחנו מבטיחים אמינות פריסה?

אנחנו משתמשים ב-GitOps עם ArgoCD, מכסים את התצורה בבדיקות, ומספקים runbooks לאירועים. ניסיון מ-30+ פרויקטים עוזר להימנע מטעויות אופייניות ב-RBAC, NetworkPolicy וסקיילינג. אנחנו מבטיחים פעולה יציבה: SLO 99.9% לשרת Unleash.

לוח זמנים ליישום ואיך להזמין

פריסת שרת + שילוב SDK בסיסי — מיום אחד. הגדרת אסטרטגיות, פרוקסי Edge, ייבוא דגלים קיימים — מיום עד יומיים. העלות מחושבת באופן אישי לאחר ביקורת תשתית.

צרו קשר לביקורת של הפרויקט שלכם. קבלו ייעוץ על התצורה האופטימלית של Unleash. הזמינו הקמת דגלי תכונות כדי להאיץ את מחזור השחרור שלכם. כתבו לנו, אנחנו תמיד זמינים.