Cloudflare Workers או AWS Lambda: חמש דקות ריצה משנות את הבחירה

|כותב: מערכת QUASA|5 דק׳ קריאה| 2
Cloudflare Workers או AWS Lambda: חמש דקות ריצה משנות את הבחירה

ל־API קצר שמשרת משתמשים באזורים שונים, Cloudflare Workers היא בחירה מתאימה כשהתגובה יכולה להיבנות בקצה הרשת. בעבודה חישובית ממושכת צריך להבחין בין שני שעונים: לפי מגבלות Workers, בתוכנית בתשלום אפשר להעלות את תקרת זמן ה־CPU לבקשת HTTP לחמש דקות, לעומת ברירת מחדל של 30 שניות, בעוד שהזיכרון מוגבל ל־128MB לכל isolate. חמש הדקות מודדות עיבוד פעיל, ולא את כל הזמן שעובר מתחילת הבקשה עד סופה.

אם המשימה צריכה יותר זיכרון, מודול מקומפל לסביבת Linux או הרצה ממושכת של פונקציה אחת, AWS Lambda היא לרוב הבחירה הישירה יותר. מכסות Lambda מאפשרות להקצות 128–10,240MB לפונקציה רגילה ולהריץ אותה עד 15 דקות. אלה גבולות שונים ממגבלת ה־CPU של Workers: פונקציה שממתינה לרשת רוב זמנה עשויה להישאר בתוך תקרת ה־CPU גם כאשר זמן השעון שלה ארוך.

השהיה תלויה גם במקום שבו נמצאים הנתונים

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

אם כל בקשה צריכה נתונים ממסד שנמצא באזור AWS יחיד, גם הקוד שרץ בקצה חייב לפנות אליו. במקרה כזה יש למדוד את הזמן מהמשתמש ועד התשובה, כולל הגישה לנתונים, ולא להסיק מזמן האתחול של הפונקציה לבדו. גם ב־Lambda זמן האתחול תלוי בסביבת הריצה ובחבילת הקוד; מספר כללי אחד ל־cold start אינו מבטיח את זמן התגובה של ה־API המסוים.

מה נכנס לחשבון החודשי

תמחור Workers קובע מינימום של 5 דולר לחודש לתוכנית Paid, הכולל 10 מיליון בקשות ו־30 מיליון מילישניות CPU. מעבר למכסות נגבים 0.30 דולר למיליון בקשות ו־0.02 דולר למיליון מילישניות CPU. אין חיוב נוסף על תעבורה יוצאת של Workers, אך שימוש בתור, באחסון או במוצרים אחרים עשוי להוסיף רכיבים לחשבון. המתנה לתשובת רשת אינה נספרת כזמן CPU, ולכן שתי בקשות בעלות אותו זמן תגובה עשויות לצרוך כמויות CPU שונות.

תמחור Lambda כולל שכבה חינמית חודשית של מיליון בקשות ו־400 אלף GB-seconds לפונקציות. בדוגמאות AWS להפעלות x86 באזור US East, בקשות שמעבר למכסה מחויבות ב־0.20 דולר למיליון, וזמן חישוב במדרגת המחיר הראשונה מחויב ב־0.0000166667 דולר ל־GB-second. משך ההרצה מוכפל בזיכרון שהוקצה לפונקציה, גם אם צריכת הזיכרון בפועל נמוכה ממנו. המחיר הכולל תלוי באזור, בארכיטקטורה ובשירותים המחוברים לפונקציה.

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

API קצר בקצה: שער הכניסה משנה את המחיר

נניח API שמקבל 10 מיליון בקשות בחודש. בגרסת Workers כל בקשה צורכת, כהנחה, חמש מילישניות CPU; מימוש של אותה פעולה ב־Lambda נמשך 20 מילישניות כאשר לפונקציה מוקצים 128MB. אלה הנחות נפרדות לכל סביבת הרצה, ולא טענה לזמני ביצוע שנמדדו. ב־Workers מתקבלות 50 מיליון מילישניות CPU לחודש, כלומר 20 מיליון מעבר למכסה. עלות הפונקציה המחושבת היא 5.40 דולר: מחיר התוכנית ועוד 0.40 דולר על זמן CPU.

ב־Lambda העומס הזה צורך 25 אלף GB-seconds, מתחת למכסת החישוב הכלולה. תשעת מיליון ההפעלות שמעבר למכסת הבקשות עולים 1.80 דולר. אם הבקשות עוברות דרך HTTP API, תמחור Amazon API Gateway מציג באזור US East מחיר של דולר למיליון קריאות במדרגה הראשונה, לצד חיוב על העברת נתונים החוצה. בהנחה שכל בקשה קטנה מספיק כדי להיספר כקריאה אחת, ושאין לחשבון הטבת לקוח חדש, שער הכניסה מוסיף 10 דולר: יחד 11.80 דולר לפני תעבורה ושירותים אחרים.

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

משימת רקע: הזיכרון פוסל תצורה גם כשה־CPU מספיק

נניח 10,000 משימות בחודש. כל אחת נמשכת שבע דקות לפי השעון, צורכת דקה וחצי CPU ומגיעה לשיא זיכרון של 256MB. ב־Workers, צרכן תור או הפעלה מתוזמנת כפופים למגבלות שונות מבקשת HTTP; זמן ההמתנה בתוך שבע הדקות אינו הופך כולו לזמן CPU. בתצורה הזאת המכשול המיידי הוא הזיכרון: שיא של 256MB אינו נכנס למכסת ה־128MB של isolate. יש להביא בחשבון שהמכסה היא ל־isolate, שיכול לטפל ביותר מבקשה אחת.

ב־Lambda, הקצאה של 256MB ושבע דקות לכל משימה נותנות 1.05 מיליון GB-seconds בחודש. לאחר המכסה הכלולה נשארים 650 אלף GB-seconds לחיוב, שהם כ־10.83 דולר בתעריף שהוגדר; מספר ההפעלות עצמו נשאר מתחת למכסה. אילו היה אפשר לעבד מחדש את המשימה ב־Workers בתוך מגבלת הזיכרון ובאותה צריכת CPU משוערת, היא הייתה צורכת 900 מיליון מילישניות CPU בחודש ועולה כ־22.40 דולר בתוכנית Paid, לפני עלויות התור. לכן Lambda מתאימה יותר לתצורה המקורית, וגם זולה יותר בחישוב החלופי הזה. חלוקת המשימה למקטעים או שינוי צריכת ה־CPU ישנו את התוצאה.

מודול מקומפל: מחיר ההרצה אינו מחיר ההסבה

נניח שני מיליון עיבודים בחודש של פעולה שמשתמשת במודול מקומפל לסביבת Linux. אם ב־Lambda מוקצים 512MB וכל עיבוד נמשך, כהנחה, 40 מילישניות, מתקבלים 40 אלף GB-seconds. בהנחה שהמכסה החינמית פנויה, עלות הפונקציה היא 0.20 דולר על מיליון הבקשות שמעל המכסה, לפני שירותי כניסה ותעבורה. Lambda מאפשרת אריזת קוד גם כתמונת container, אך המודול עדיין צריך להתאים לארכיטקטורה ולסביבת הריצה שנבחרו.

קובץ בינארי שמיועד ל־Linux אינו פועל אוטומטית ב־Worker. אפשר לשקול גרסת WebAssembly אם קיימת גרסה מתאימה של המודול, אך גם אז ההקצאות שלה נכללות בזיכרון ה־isolate ויש לבדוק שהתוצאה החישובית נשמרת. נניח לצורך החישוב שמימוש שקול אכן מתאים, צורך 96MB ו־12 מילישניות CPU לעיבוד: שני מיליון עיבודים צורכים 24 מיליון מילישניות CPU ולכן נשארים במכסות הכלולות של Workers Paid, במחיר 5 דולר לחודש. הסכום הזה אינו כולל את פיתוח ההסבה, בדיקות התאימות והתחזוקה שלה. אם אין מימוש שקול שמתאים למגבלת הזיכרון, השוואת מחיר ההפעלות לבדה אינה הופכת את Workers לחלופה ישימה.

איפה עובר קו הבחירה

הבחירה מתחילה בצורה של העבודה. עבור API קל שמשרת משתמשים מפוזרים ויכול להשיב בלי גישה ממושכת למקור נתונים אזורי, Workers עשויה לתת מסלול קצר ועלות צפויה לפי בקשות ו־CPU. כאשר העבודה דורשת זיכרון רב יותר, מודול Linux קיים או פונקציה ממושכת שאינה מתאימה למגבלות Workers, Lambda מציעה סביבת הרצה מתאימה יותר. בחשבון החודשי יש להפריד את מחיר הפונקציה ממחיר שער הכניסה, התור, האחסון והתעבורה; בדוגמאות הללו דווקא הרכיבים שסביב הפונקציה הם ששינו את הפער הכספי.

שיתוף:

הירשמו לניוזלטר שלנו

קבלו את החדשות האחרונות על Web3, ‏AI וקריפטו ישירות לתיבת הדואר.

0