בתור מפתח, תמיד חיפשתי דרך קלה ויעילה לנהל פיצ'רים בגרסאות השונות. עד היום, על כל פיצ'ר שרציתי להפעיל / לבטל הייתי צריך להוצי גרסה. עם Flagsmith החיים פשוטים הרבה יותר. Flagsmith מאפשרת בצורה קלה ונוחה ובאמצעות ממשק UI לנהל גרסאות, פיצ'רים וקונפיגרציות מרחוק ותומכת במספר שפות תכנות.
במדריך זה אסביר על התקנת המערכת על גבי Docker Container וכן על השימוש בה, אך לפני שנתחיל אנא וודאו כי התקנתם docker על פי המדריך הבא.
שלב א' – התקנת המערכת
על מנת להתקין את המערכת על גבי שרת ה docker שלכם, פתחו את קובץ ה docker-compose לעריכה והדביקו פנימה את הטקסט הבא:
כעת, שמרו את הקובץ והריצו את הפקודה הבאה:
כעת נוכל לראות ששני קונטיינרים חדשים הוקמו:
שלב ב' – הגדרה ראשונית של המערכת
אחרי שביצענו את ההתקנה, נפתח את הדפדפן וניכנס לכתובת השרת בתוספת פורט 8000. המסך הראשון שנראה הוא מסך הכניסה. בתחתית המסך ישנו קישור להרשמה, לחצו עליו:
כעת, מלאו את הפרטים שלכם (או השתמשו באפשרות חיבור של גוגל או Github) ולחצו על "Create Account":
כעת נפתח פרוייקט חדש. שימו לב כי יפתחו שתי סביבות, האחת סביבת פיתוח, השני פרודקשן. לחצו"Create":
בחלון שיפתח, בחרו שם לפרוייקט ולחצו על הכפתור ליצירתו:
שלב ג' – ניהול פיצ'רים
כעת, לאחר שסיימנו את הקמת הפרוייקט, ניתן להתחיל לנהל את הפיצ'רים אותם נרצה להגדיר עבור האפליקציות, תוכנות או כל מוצר אחר. במסך שהתקבל, לחצו על הכפתור "Create Your First Feature":
כעת מלאו את הפרטים הבאים:
- ID של הפיצ'ר 0 מחרוזת טקסט חד ערכית (למשל header_size).
- Value – ערכים עבור הפיצ'ר (למשל גודל פונט, צבע ועוד).
- Description – תאור הפיצ'ר לצרכי זיהוי.
שלב ד' – הגדרת השימוש בניהול הפיצ'רים באפליקציה שלנו
כעת, לאחר שהגדרנו את הפיצ'רים נטמיע אותם בקוד שלנו. בדוגמה הבאה נוכל לראות כיצד ליישם את הפיצרים בקוד פייתון. ראשית, נתקין את הסיפריה של flagsmith על ידי שימוש בפקודה pip:
כעת נגדיר את הפרמטרים הנחוצים לפעולה התקינה של Flagsmith. כאשר האפשרויות הקיימות הן:
- environment_id – ה ID של הפיצ'ר אותו יצרנו (ID שנוצר על ידי המערכת וניתן לראות אותו בהגדרות) – חובה.
- api – כתובת ה API של המערכת, נחוץ במידה והקמתם שר משלכם.
דוגמה לשימוש:
פונקציות זמינות
פונקציה | תאור |
---|---|
has_feature(key) | Determine if given feature exists for an environment. bt.has_feature("powerUserFeature") // true |
feature_enabled(key) | Get the value of a particular feature flag e.g. bt.feature_enabled("powerUserFeature") // true |
feature_enabled(key, userId) | Get the value of a particular feature flag e.g. bt.feature_enabled("powerUserFeature", 1234) // true |
get_value(key) | Get the value of a particular remote config e.g. bt.get_value("font_size") // 10 |
get_value(key, userId) | Get the value of a particular feature for a specified user e.g. bt.get_value("font_size", 1234) // 15 |
set_trait(trait_key, trait_value, userId) | Set the value of a particular trait for a specified user e.g. bt.set_trait("font_size", 12, 1234) // 15 |
get_trait(trait_key, userId) | Get the value of a particular trait for a specified user e.g. bt.get_trait("font_size", 1234) // 12 |
get_flags() | Trigger a manual fetch of the environment features, returns a list of flag objects, see below for returned data |
get_flags_for_user(1234) | Trigger a manual fetch of the environment features with a given user id, returns a list of flag objects, see below for returned data |
למידע נוסף, שפות נתמכות ועוד, ניתן לקרוא כאן.
Leave a Reply