סקירה כללית של דגלי תכונות ב-App Lifecycle Manager

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

יש שתי דרכים עיקריות להשתמש בדגלים:

  1. משולב: אפשר לשלב את ניהול הדגלים עם פריסות האפליקציות שמנוהלות על ידי App Lifecycle Manager.
  2. עצמאי: אפשר להשתמש במערכת המתקדמת לסימון תוכן באופן עצמאי, גם אם התשתית של האפליקציה מנוהלת במקום אחר, על ידי מידול של רכיבי המערכת כיחידות של App Lifecycle Manager.

התכונה 'דגלים של תכונות' משתלבת עם מושגי הליבה של הכלי לניהול מחזור החיים של אפליקציות, כמו יחידות והשקות. כך תוכלו לנהל את הגדרות הדגלים לצד תשתית האפליקציה (גישה משולבת).

אם אתם לא מכירים את יחידות ה-ALM או את ההשקות, מומלץ לעיין בסקירה הכללית של App Lifecycle Manager.

למה כדאי להשתמש בדגלים של תכונות ב-App Lifecycle Manager

כשמטמיעים feature flags באמצעות App Lifecycle Manager, נהנים מכמה יתרונות במחזור החיים של הפיתוח והתפעול של SaaS:

  • הפרדה בין פרסום תכונות לבין פריסת קוד: אפשר לשלוח קוד חדש לסביבת הייצור כשהתכונות מושבתות כברירת מחדל. אפשר להפעיל תכונות למשתמשים ספציפיים או להשיק אותן בהדרגה כשמוכנים, וכך להקטין את הסיכון שקשור לפריסות גדולות.
  • שיפור הבטיחות, המהירות והאמינות:
    • בדיקת תכונות בסביבת ייצור עם קהל מוגבל (גרסאות קנרי).
    • מבצעים השקות מדורגות באמצעות היכולות של App Lifecycle Manager Rollout, כדי לצמצם את ההשפעה של בעיות פוטנציאליות.
  • הפעלת רשימת ההיתרים והתאמה אישית של הדיירים: מפעילים או משביתים תכונות ליחידות שיכולות לייצג דיירים, שירותים או סביבות.
  • פישוט החזרה לגרסה קודמת: כשמשביתים דגל תכונה, התהליך בדרך כלל מהיר יותר ופחות משבש מאשר פריסה של גרסה קודמת של האפליקציה. תהליך העבודה הזה מאפשר להשבית תכונות בעייתיות בלי לבצע החזרה לאחור של קבצים בינאריים.
  • ניהול מאוחד של הגדרות דגלים: ניהול הגדרות של feature flag ושימוש בהן להגדרת השקות. תהליך העבודה הזה מספק אמינות תפעולית בכך שהוא מאפשר לשנות את הפונקציונליות של האפליקציה על ידי יצירת השקות של feature flag.

איך פועלים דגלים של תכונות ב-App Lifecycle Manager

השימוש בדגלי תכונות ב-App Lifecycle Manager כולל שני היבטים עיקריים: מישור הניהול (הגדרה והשקה של דגלים) ומישור הנתונים (גישה לערכי הדגלים באפליקציה).

שימוש משולב ב-App Lifecycle Manager

אם אתם משתמשים ב-App Lifecycle Manager כדי לנהל את פריסות האפליקציות (לדוגמה, פריסת תשתית באמצעות תוכניות Terraform):

  1. הגדרת feature flag: יוצרים משאבי feature flag ב-App Lifecycle Manager, מציינים Flag key ייחודי (לדוגמה, enable-new-dashboard) ומשייכים אותו לסוג יחידה. יש תמיכה בדגלים בוליאניים.
  2. שינויים בהגדרות של דגלים: שינויים בדגלים (יצירה או עדכונים) לא נכנסים לתוקף עד שמפעילים את ההשקה של App Lifecycle Manager. כך תוכלו להשתמש בתכונות כמו חבילות, פיקוח ובדיקות בטיחות לפריסות של דגלים. ההשקה מעדכנת את הגדרת הדגל שמשויכת ליחידות המודעות שמטרגטות.
  3. דגלי גישה באפליקציה: קוד האפליקציה שלכם, שפועל ביחידה שהוקצתה (לדוגמה, בקונטיינר ב-Cloud Run או ב-Google Kubernetes Engine), משתמש ב-SDK של OpenFeature שהוגדר עם ספק flagd. הספק הזה מתחבר לנקודת הקצה של שירות saasconfig.googleapis.com. באמצעות App Lifecycle Manager, אפשר להחדיר את מזהה היחידה הנדרש לסביבת האפליקציה, וכך לאפשר ל-SDK לאחזר את ערכי הדגל הנכונים עבור היחידה הספציפית הזו.

השילוב העמוק הזה מאפשר לכם לנהל את מחזורי החיים של התכונות לצד מחזורי החיים של התשתית. דוגמה מהשטח אפשר לראות במאמר מדריך למתחילים: פריסת דגלים של תכונות.

מישור הניהול

אתם יוצרים אינטראקציה עם מישור הניהול כדי להגדיר את הדגלים ולשלוט בהם. אתם יכולים להשתמש במסוף, ב-CLI של gcloud או ב-App Lifecycle Manager API כדי: Google Cloud

  • יצירה או עדכון של דגלים: כדי להגדיר דגלים, מציינים את Flag key, משייכים אותו לסוג יחידה ומגדירים את הסוג ואת ערך ברירת המחדל שלו.
  • יצירת השקות: אתם מתחילים השקה כדי להפיץ שינויים בדגלים (יצירה או עדכון) ליחידות המטרה ששייכות לסוג היחידה של הדגל. ההשקות מבטיחות שהשינויים יחולו בצורה בטוחה ואמינה בהתאם למדיניות שהגדרתם.

מישור הנתונים

קוד האפליקציה שלכם יוצר אינטראקציה עם מישור הנתונים כדי להשתמש בערכי הדגלים:

  • OpenFeature SDK: משלבים את OpenFeature SDK הניטרלי לספקים באפליקציה.
  • flagd provider: מגדירים את OpenFeature SDK לשימוש ב-flagd provider.
  • הגדרה: מפנים את ספק flagd לנקודת הקצה של שירות דגל התכונה App Lifecycle Manager: ‏ saasconfig.googleapis.com:443.
  • טירגוט: מציינים את provider_id כדי לזהות את הגדרת הדגל. הערך הזה בדרך כלל תואם לשם המשאב המלא של יחידת App Lifecycle Manager (לדוגמה, projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID).
  • אימות: הספק משתמש ב-Application Default Credentials ‏ (ADC) כדי לאמת בצורה מאובטחת בקשות לנקודת הקצה של שירות Google Cloud . חשבון השירות שבו משתמשים צריך את התפקיד roles/saasconfig.viewer ניהול זהויות והרשאות גישה.
  • הערכת דגלים: משתמשים בשיטות סטנדרטיות של OpenFeature ‏ (client.get_boolean_value(...)) בקוד כדי לבדוק את ערכי הדגלים. הספק מטפל באחזור ההגדרה העדכנית ביותר שהופעלה מהשירות.

App Lifecycle Manager מספק הטמעות לדוגמה והפניות לשילוב עם מישור הנתונים:

סוגי ערכים של feature flag

דגלי התכונות של App Lifecycle Manager תומכים ביותר הערכות בוליאניות של הפעלה/השבתה מאשר דגלים רגילים. אתם יכולים להגדיר פלאגים עם ערכים של STRING, INTEGER או DOUBLE כדי לשלוט במשתנים תפעוליים מורכבים כמו ספי הפעלה, פרמטרים של ערכות נושא או מגבלות תצורה.

בשונה מדגלים בוליאניים, צריך להגדיר באופן מפורש דגלים לא בוליאניים במהלך היצירה כדי להגדיר את היקום של סוגי ההחזרה האפשריים.

String flags

הדגלים מסוג מחרוזת מעבירים מזהי תצורה ישירות ללקוחות מחוברים.

gcloud beta app-lifecycle-manager flags create "feature-mode" \
  --key="feature-mode" \
  --flag-value-type=STRING \
  --location="global" \
  --unit-kind="UNIT_KIND_ID" \
  --variants='[{"id": "standard", "stringValue": "STANDARD"}, {"id": "advanced", "stringValue": "ADVANCED"}]' \
  --evaluation-spec='{"defaultTarget": "standard"}'

דגלים של מספרים שלמים

דגלי מספרים שלמים קובעים את המגבלות המספריות המדויקות ואת גבולות המטען הייעודי.

gcloud beta app-lifecycle-manager flags create "max-retry-count" \
  --key="max-retry-count" \
  --flag-value-type=INTEGER \
  --location="global" \
  --unit-kind="UNIT_KIND_ID" \
  --variants='[{"id": "low", "integerValue": 3}, {"id": "high", "integerValue": 10}]' \
  --evaluation-spec='{"defaultTarget": "low"}'

דגלים כפולים

דגלים כפולים מספקים ערכים ברמת דיוק גבוהה שמשמשים לספי הסתברות או לפרמטרים מסוג float.

gcloud beta app-lifecycle-manager flags create "sampling-rate" \
  --key="sampling-rate" \
  --flag-value-type=DOUBLE \
  --location="global" \
  --unit-kind="demo-test-unitkind" \
  --variants='[{"id": "minimal", "doubleValue": 0.01}, {"id": "full", "doubleValue": 1.0}]' \
  --evaluation-spec='{"defaultTarget": "minimal"}'

הקצאת מתגי feature flag באמצעות השקות

App Lifecycle Manager מבטיח שינויים או עדכונים בטוחים בהיקף נרחב באמצעות השקות הדרגתיות של עדכונים של feature flag.

בלי הפצה מדורגת, שינוי קל בהגדרת הדגל (למשל, הפעלת תכונה ל-1% מהמשתמשים) מופץ באופן מיידי בכל המופעים של האפליקציה. אם התכונה הזו גורמת לרגרסיה, יכולות להתרחש בעיות בו-זמנית בכל התשתית שלכם. ההפצה הגלובלית הזו מגדילה באופן משמעותי את הסיכון להשפעה נרחבת על השירות.

ההשקה של App Lifecycle Manager מפחיתה את הסיכון הזה בכך שהיא מאפשרת הפצה הדרגתית ומבוקרת של שינויים בדגלים, וכך מצמצמת את ההיקף הפוטנציאלי של בעיות בלתי צפויות.

קבוצות של מתגי feature flag

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

מידע נוסף על ערכות דגלים

מניפסטים

קבצי מניפסט מאפשרים להגדיר ולנהל דגלי תכונות באמצעות קובצי JSON. אפשר להעביר את ההגדרות האלה אל App Lifecycle Manager API, או לשלוף הגדרות קיימות כדי ליצור פונקציות גישה בטוחות לטיפוסים עבור האפליקציה.

מידע נוסף על קובצי מניפסט

טירגוט מורכב

אתם יכולים להשתמש ב-Common Expression Language ‏ (CEL) כדי ליצור כללי טירגוט מתוחכמים על סמך מאפייני משתמש או מאפייני בקשה, וכך לשלוט במדויק באילו משתמשים יראו אילו תכונות.

מידע נוסף על טירגוט מורכב

ארכיטקטורה של ריבוי דיירים

אתם יכולים להשתמש בפריסות מרובות דיירים עם App Lifecycle Manager אם אתם מכוונים דגלים ליחידות ספציפיות או לקבוצות ספציפיות של יחידות (באמצעות תוויות או דיירים). אפשר גם להטמיע השקות הדרגתיות בכל הדיירים.

מידע נוסף על ארכיטקטורה של ריבוי דיירים

הקצאת סימוני תכונות

מגדירים הקצאות (כמו experimental או baseline) ומשתמשים בפיצול תנועה כדי לבצע בדיקות או השקות אקראיות.

מידע נוסף על הקצאות של דגלי תכונות

המאמרים הבאים