WEBA

ניהול פיצ'רים לפי שעה ב-Vercel חוסך לכם את הדיפלוי של חצות

תוספת של תנאי זמן ל-Vercel Flags מאפשרת תזמון מבצעים וסגירת גישה ישירות מהממשק, אבל דורשת זהירות באזורי זמן ולא מחליפה חלוקת תנועה מתקדמת.

521 מילים29 עובדות אומתו

השעה כמעט חצות, ואתם יושבים מול המסך עם אצבע על כפתור הפריסה ב-GitHub כדי שהבאנר של המבצע יעלה בדיוק בזמן. זה הרגל עבודה ישן ומציק שרוב מפתחי הווב מכירים היטב. עדכון חדש במערכת הדגלים של Vercel מנסה להפוך את המנהג הזה למיותר. לפי הודעת העדכון שפרסמה החברה ב-7 באוקטובר 2026, Vercel Flags תומכת כעת במאפיין מסוג timestamp עבור ישויות.

בלי פריסה ידנית בחצות

עד עכשיו, הצגת תוכן מתוזמן דרך דגלים דרשה שרת נפרד, מודול חיצוני של LaunchDarkly או כתיבת לוגיקה ייעודית בתוך הקוד שלכם. התמיכה החדשה בטיפוס timestamp מחברת את תנאי התאריך ישירות אל מנגנון הישויות בדשבורד. ישויות מייצגות את הגורמים שהדגל בודק, כמו משתמשים, צוותים, מכשירים או בקשות רשת בודדות שמגיעות לאפליקציה. אפשר להגדיר את הישות דרך הממשק או ישירות עם פקודת vercel flags entities create system עם המאפיין time:timestamp.

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

בדשבורד אפשר להגדיר חוקי טרגוט שבודקים אם הזמן הנוכחי תואם לתנאים. המערכת תומכת בארבע פעולות השוואה: is after, is at or after, is before, וכן is at or before. אתר מסחר יכול להכין מראש דף נחיתה או מחירי מבצע, לקבוע את שעת ההתחלה ושעת הסיום בממשק, וללכת לישון. הפיצ'ר יידלק וייכבה מעצמו.

עטיפה חובה ב-dedupe

בצד הקוד, מפתחי Next.js שעובדים עם TypeScript צריכים לספק את הזמן בזמן ריצה כערך מספרי של Unix epoch במילישניות. את הערך הזה מפיקים בעזרת Date.now() ומעבירים בתוך פונקציית identify שמוגדרת מראש. בדוקומנטציה של החברה מדגישים כי שמות הישות והמאפיין בקוד חייבים להתאים במדויק להגדרות שנוצרו בדשבורד או ב-CLI.

שמירה על הערך בתוך dedupe מבטיחה שכל דגל שמוערך באותה בקשה ישתמש באותו זמן בדיוק.דוקומנטציית Flags SDK של Vercel

השימוש במעטפת dedupe מתוך ספריית flags/next קריטי. אם דף בודק מספר דגלים שונים במקומות שונים במהלך רינדור הבקשה, הבדל של מילישנייה בודדת ביניהם עלול להציג למשתמש חצי דף במבצע וחצי דף במחיר רגיל. dedupe מקפיאה את הזמן עבור אותה בקשה ספציפית ומונעת חוסר עקביות.

שעון ירושלים מול ה-CLI

כאן מתחבאת מלכודת שעלולה לעלות ביוקר לצוותים מקומיים. כשאתם מגדירים חוק בורר תאריכים מתוך הדשבורד של Vercel, הממשק משתמש באזור הזמן המקומי של הדפדפן שלכם. לעומת זאת, אם אתם מנהלים את התשתית שלכם דרך שורת הפקודה עם Vercel CLI, החוקים נכתבים עם תנאים מפורשים כמו at-or-after ודורשים מחרוזות זמן מדויקות בתקן ISO 8601.

ההבדל הזה מייצר בלבול בקרב צוותי פיתוח בארץ. פקודת CLI לדוגמה משתמשת בסיומת Z עבור UTC, כמו בערך 2026-09-02T13:00:00Z. אם מפתח בישראל מגדיר שעה כזו מתוך הנחה שמדובר בשעון מקומי, המבצע עלול להתחיל בהפרש של שעתיים או שלוש ביחס למועד המתוכנן. תמיד תוודאו שאתם והקולגות סופרים לפי אותו שעון.

בלי חלוקת אחוזים בזמן

תנאי זמן ב-Vercel Flags מוגבלים לחוקי כן או לא דטרמיניסטיים. המערכת בודקת האם הערך גדול או קטן מהמועד שהוגדר, אך מאפייני timestamp אינם תומכים בחלוקה לפי אחוזים (Splits או bucketing). לא הייתי ממהר לבטל מערכות דגלים מורכבות אם אתם תלויים בזה.

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

השוואת מאפייני ישויות ב-Vercel Flags
סוג מאפייןפורמט בזמן ריצה (SDK)פעולות נתמכות בחוקיםתמיכה בפיצול אחוזים (Splits)
TimestampUnix epoch במילישניות (מספר)is after, is at or after, is before, is at or beforeלא נתמך
Stringמחרוזת טקסטהשוואת ערכים וטקסטנתמך (מבוסס מזהה)
Numberמספר שלם או עשרוניהשוואות מספריותלא נתמך
Booleantrue או falseבדיקת אמת/שקרלא נתמך
String Arrayמערך מחרוזותבדיקת הכלה ברשימהלא נתמך

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

מה לעשות עכשיוהגדירו מאפיין timestamp בישות, עטפו את Date.now ב-dedupe בקוד ה-Next.js, והימנעו מפערי שעות מול ה-CLI.

מקורות

הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.

מה שואלים על זה

באיזה פורמט האפליקציה חייבת לשלוח את הזמן ל-Vercel Flags?

בזמן ריצה האפליקציה חייבת להעביר ערך מספרי בפורמט Unix epoch במילישניות, בדיוק כפי שמוחזר על ידי הקריאה Date.now().

האם אפשר להשתמש בזמן כדי לעשות Progressive Rollout של 20% מהמשתמשים בהדרגה?

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

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

בדשבורד של Vercel בורר התאריכים משתמש באזור הזמן המקומי של הדפדפן, בעוד שב-CLI אפשר לציין תאריך הכולל היסט אזור זמן מפורש או להסתמך על זמן המכונה המקומית.

כמה עולה להשתמש בהערכות הדגלים של Vercel בהיקף גדול?

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