מי שמפתח שירותים מעל 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 קלאסי | Workers KV Instant |
|---|---|---|
| זמן קריאה p99 (כלל הבקשות) | 287 מילישניות | 1.62 מילישניות |
| זמן שכפול עולמי p99 | 4.38 שניות | 256 מילישניות |
| תמחור קריאות (Class B) | 0.50 דולר למיליון | 0.20 דולר למיליון |
| תמחור כתיבה, מחיקה ורשימה (Class A) | 5.00 דולר למיליון | 0.10 דולר לפעולה בודדת |
| עלות אחסון חודשית | 0.50 דולר ל-GB | 100 דולר ל-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 מבטיח ביצועים מקומיים אופטימליים. העדכונים משוכפלים ישירות לחוות השרתים המקומיות של קלאודפלייר בתל אביב ובחיפה, כך שקריאות קונפיגורציה של גולשים בישראל מוגשות מהקצה ללא מעבר בסיבים תת-ימיים. עם זאת, התמחור והחיוב מתבצעים בדולרים בלבד.
השירות מושק כעת בגרסת בטא פרטית ואינו פתוח לציבור באופן אוטומטי. מפתחים שמעוניינים לבחון את המנוע החדש צריכים להירשם לבטא הסגורה באתר החברה ולפרט את תרחיש השימוש שלהם. בדוקומנטציה לא צוין לוח זמנים להשקה כללית, כך שאין צורך לשנות קוד קיים לפני קבלת אישור גישה.
בינתיים, כפתור ההפעלה פתוח רק למי שקיבל אישור ידני.
מקורות
- Introducing Workers KV Instant — powered by Quicksilverhttps://blog.cloudflare.com/workers-kv-instant/
- Cloudflare Workers KV · Cloudflare Workers KV docshttps://developers.cloudflare.com/kv
- Workers Binding API · Cloudflare Workers KV docshttps://developers.cloudflare.com/kv/api
- herehttps://www.cloudflare.com/resource/workers-kv-instant-beta/?cf_page=workers-kv-instant%2F
- Cloudflarehttps://weba.co.il/tools/cloudflare/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.