WEBA

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

Workers KV Instant מבטיח קריאות בפחות מ-2 מילישניות, אך תמחור של 10 סנט לכל כתיבה ומגבלת מגהבייט מבהירים למי אסור להתקרב.

636 מילים30 עובדות אומתו

מי שמפתח שירותים מעל Cloudflare מכיר היטב את תסכול ה-Cold Reads. אתם מריצים פונקציית קצה מהירה, אבל שליפת משתנה קונפיגורציה או טוגל פשוט מ-Workers KV הקלאסי עלולה לעלות בעשרות או מאות מילישניות כשצריך למשוך נתון שלא יושב במטמון המקומי. עכשיו, במסגרת אירועי Birthday Week, החברה מנגישה למפתחים חיצוניים את התשתית שעליה נשענים שירותי הליבה שלה.

המהירות של קלאודפלייר מגיעה לקוד שלכם

לפי הפוסט הרשמי של Cloudflare, מצב העבודה החדש שנקרא Workers KV Instant מבוסס ישירות על מנוע Quicksilver v2. מדובר במסד מפתח-ערך פנימי שפותח במקור כדי לסנכרן רשומות DNS, חוקי אבטחה והגדרות ניתוב לכל השרתים בעולם תוך שבריר שנייה. במשך שנים המנוע הזה נשמר לשימוש פנימי בלבד, וכעת הוא מגיע לידי המפתחים במסגרת בטא פרטית.

המספרים שמציגה החברה חריגים בכל קנה מידה לעומת הדור הקודם. קריאות נתונים מגיעות לזמני תגובה של 1.62 מילישניות בלבד ברמת p99 לכלל הבקשות, בעוד שב-KV קלאסי נמדדו 287 מילישניות. בגזרת השכפול, 99% מפעולות הכתיבה ב-KV Instant מופצות לכל נקודות הקצה בעולם בתוך 256 מילישניות, לעומת 4.38 שניות הנדרשות בגרסה הקלאסית לשכפול על פני כל רכיבי ה-backend של האחסון.

KV Instant מציע זמני אחזור בקריאה שמהירים פי יותר מ-100 לעומת המצב הקלאסי, עם קריאות שמסתיימות בפחות משתי מילישניות אפילו באחוזון ה-99 של זמני התגובה.ההכרזה הרשמית בבלוג החברה

מגהבייט אחד בלבד ועשרה סנט לעדכון

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

ההבטחה לקריאה במיקרו-שניות מגיעה עם תג מחיר ומבנה מגבלות נוקשה מאוד. נפח האחסון הכולל של namespace בודד מוגבל ל-1MB בלבד, כאשר גודל המפתח המרבי הוא 300 בתים, ומספר הרשומות הכולל מוגבל לעד 10,000 זוגות מפתח-ערך. על המגהבייט הבודד הזה תשלמו 100 דולר לחודש, בהשוואה ל-50 סנט בלבד לג'יגה-בייט ב-KV קלאסי.

העונש האמיתי מופיע בפעולות הכתיבה, המחיקה והרשימה. כל פעולת Class A מתומחרת ב-0.10 דולר לפעולה בודדת, לעומת 5 דולר למיליון פעולות ב-KV רגיל. בנוסף, חלה מגבלת קצב הדוקה של כתיבה אחת בלבד בשנייה לכל ה-namespace כולו. בצד הקריאות (Class B) התמונה מתהפכת: המחיר עומד על 20 סנט למיליון בקשות, הוזלה של 60% לעומת 50 סנט בגרסה הוותיקה.

השוואה ישירה בין הדור הקלאסי של Workers KV למצב Instant החדש לפי ביצועים, מגבלות ותמחור פעולות.
פרמטרWorkers KV קלאסיWorkers KV Instant
זמן קריאה p99 (כלל הבקשות)287 מילישניות1.62 מילישניות
זמן שכפול עולמי p994.38 שניות256 מילישניות
תמחור קריאות (Class B)0.50 דולר למיליון0.20 דולר למיליון
תמחור כתיבה, מחיקה ורשימה (Class A)5.00 דולר למיליון0.10 דולר לפעולה בודדת
עלות אחסון חודשית0.50 דולר ל-GB100 דולר ל-MB
נפח מרבי למרחב שמותללא הגבלה מעשית1MB (עד 10,000 מפתחות)
מגבלת קצב כתיבהכתיבה אחת בשנייה למפתחכתיבה אחת בשנייה ל-namespace

מה משתנה בקוד וב-API

מבחינת ממשק העבודה, דוקומנטציית ה-API של Workers KV נשארת כמעט זהה. המתודות המוכרות של get, put, list ו-delete פועלות באותו האופן, אך כדי להפעיל את המנוע החדש חובה לציין במפורש את המאפיין mode: instant בעת יצירת ה-namespace. פונקציית הקריאה תומכת בשליפת מפתח בודד או מערך מפתחות, כאשר שליפת מספר מפתחות בבת אחת עדיין מחושבת כפעולת Class B נפרדת עבור כל מפתח שחזר.

עם זאת, קיימים שני שינויים מהותיים במודל הנתונים. המערכת אינה תומכת במטא-דאטה כלל, כך שקריאות לפונקציית getWithMetadata יחזירו תמיד null בערך המטא, וניסיון להעביר נתונים כאלה ב-put ייכשל. בנוסף, מתודת list אינה תומכת בחלוקה לעמודים. בגלל שהנפח הכולל מוגבל למגהבייט בודד, קריאת list בודדת מחזירה תמיד את כל המפתחות הקיימים במכה אחת, ומחויבת בעשרה סנט בדיוק כמו כתיבה רגילה.

מתי לשדרג ומתי להישאר בגרסה הרגילה

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

זה שווה רק אם אתם לא כותבים לשם באופן שוטף.

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

הזווית המקומית והצעד הבא

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

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

בינתיים, כפתור ההפעלה פתוח רק למי שקיבל אישור ידני.

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

מקורות

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

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

האם אפשר להשתמש ב-KV Instant כמסד נתונים כללי לאפליקציה?

לא. השירות מוגבל לנפח מרבי של 1MB בלבד לכל ה-namespace, קצב הכתיבה מוגבל לפעם אחת בשנייה, וכל פעולת כתיבה עולה 0.10 דולר. שימוש במוצר למטרות אחסון כללי יוביל לעלויות כבדות ולחסימות בקצב הכתיבה.

מה קורה אם מנסים לשמור מידע מעבר למגבלת ה-1MB ב-namespace?

לפי החברה, ערכים יכולים להיות בכל גודל ובלבד שהם אינם גורמים ל-namespace לחרוג מסך הנפח של מגהבייט אחד ומסך של עד 10,000 זוגות מפתח-ערך.

כיצד משפיע חוסר התמיכה במטא-דאטה על קוד קיים?

בניגוד ל-KV הקלאסי, מצב Instant אינו תומך במטא-דאטה. קריאות למתודת getWithMetadata יחזירו תמיד null בשדה המטא-דאטה, וניסיונות לשלוח מטא-דאטה באמצעות מתודת put אינם נתמכים.

כמה מהר עדכון נתון מגיע בפועל למשתמשים בישראל?

נתוני כתיבה משוכפלים לכלל נקודות הקצה של קלאודפלייר, כולל חוות השרתים בתל אביב ובחיפה, בזמן חציוני של כ-107 מילישניות ובזמן של כ-256 מילישניות ברמת p99.