WEBA

אמזון מוחקת את המתאמים מ-Lambda אבל מגבילה לגרסה אחת

פרימיטיב חדש ב-Lambda מריץ שרתי ווב סטנדרטיים עם תמחור לפי זמן מעבד פעיל, אלא שהתמיכה נעצרת כרגע ב-Node.js 24 ובחמישה אזורים בלבד.

510 מילים20 עובדות אומתו

שרת ווב רגיל אמור פשוט להאזין לפורט ולענות לבקשות. במשך יותר מעשור, מי שניסה להריץ שרת ווב על גבי תשתית Serverless של אמזון נאלץ לעטוף את הקוד בשכבות תרגום מסורבלות כמו aws-serverless-express, להמיר אירועי JSON לבקשות HTTP ובחזרה, ולספוג עונשי זמני תגובה. אתמול זה השתנה כשאמזון הכריזה על AWS Lambda Web Functions, פרימיטיב שמביא שרתי ווב רגילים ישירות אל תוך סביבת ההרצה.

זה שינוי מהותי באופן שבו אמזון תופסת עומסי ווב.

בלי ספריות תרגום באמצע

השינוי הטכני כאן ישיר. במקום לפעול לפי מודל האירועים הוותיק שבו פונקציה מקבלת אובייקט אירוע יחיד ומחזירה תשובה, שרתי ווב בפורמט החדש מקבלים תעבורת רשת חיה ישירות על פורט TCP מקומי. המשתנה היחיד שנוסף לקוד הוא משתנה סביבה שמציין את כתובת ה-IP והפורט להאזנה, כך ששרת Express או Fastify רץ בענן בדיוק כמו שהוא רץ על המחשב המקומי שלכם. ההשקה הזו גם מסדרת מחדש את שירות Lambda לשלושה פורמטים נפרדים המבוססים על בידוד של Firecracker, כשהחלוקה העיקרית מפרידה בין Event Functions לאירועים אסינכרוניים לבין Web Functions לאפליקציות ווב ולממשקי API.

אתם יכולים לקחת שרת סטנדרטי שמאזין לפורט שנבנה עם Express, Hono, Fastify, Next.js או כל שלד Node.js, לפרוס אותו בפקודה אחת, ו-Lambda תנהל אוטומטית שרידות, הפצה מרובת אזורים ותמחור מעבד פעיל.AWS News Blog

משלמים על מעבד ולא על המתנה

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

המודל הזה משתלם במיוחד בזכות היכולת לטפל בעד 128 בקשות במקביל בתוך אותה סביבת הרצה בודדת. במקום להקצות מופע נפרד לכל בקשה ולשלם על זמן המתנה ל-I/O, עומסי עבודה חולקים סביבות חמות ומנצלים את המעבד ביעילות גבוהה בהרבה. אם אתם מריצים שירותי ווב עתירי המתנה לרשת, כמו Server-Side Rendering או נקודות קצה שמזרימות טוקנים ממודלי AI, המעבר עשוי לחתוך חלק ניכר מעלויות השרתים שלכם.

השוואה מבנית וטכנית בין פורמטי הריצה בשירות AWS Lambda
פורמט ריצהמודל תכנותריבוי בקשות במקבילשיטת תמחורתרחיש שימוש מרכזי
Event Functionsקבלת אירוע ומענה באמצעות Handler ייעודיבקשה אחת לכל סביבת הרצהמשך ריצה כולל לפי זיכרון מוקצה ובקשותעיבוד אירועים אסינכרוני, תורים ואינטגרציות AWS
Web Functionsהאזנה ישירה על פורט HTTP מקומיעד 128 בקשות לסביבת הרצהזמן מעבד פעיל, זיכרון פעיל ובקשותשרתי ווב, אפליקציות Next.js וממשקי API
MicroVMsסביבת Sandbox עם מחזור חיים בניהול לקוחלא פורסםלפי מופע לשנייההרצת קוד לא מהימן וקוד משתמשים מבודד

רק שפה אחת ובלי ישראל

כאן מתחילות האותיות הקטנות. נכון להשקה, השירות תומך אך ורק בסביבת ריצה אחת: Node.js 24 על גבי ארכיטקטורת Arm64 בלבד. אם הקוד שלכם נכתב ב-Python או Go, אם פרויקט ה-Node שלכם תקוע על גרסה ישנה, או אם יש לכם תלויות בינאריות שמחייבות x86, הפתרון הזה לא רלוונטי עבורכם כרגע. הדוקומנטציה לא מספקת תאריך להרחבת התמיכה לסביבות ריצה נוספות.

זה משאיר הרבה מפתחים בחוץ.

מגבלה משמעותית נוספת נוגעת לזמינות הגאוגרפית. השירות הושק בחמישה אזורים בלבד: צפון וירג'יניה, אוהיו, אורגון, טוקיו ואירלנד. האזור המקומי בישראל (il-central-1) נשאר בחוץ. חברות ישראליות שמחויבות ברגולציה להחזיק נתוני לקוחות בגבולות המדינה לא יוכלו לאמץ את השירות. מי שאינו כפוף למגבלות כאלה יידרש לנתב את התעבורה לאירופה, ולהסתמך על נקודות הקצה של Amazon CloudFront כדי לצמצם את זמני השיהוי באמצעות חתימת אבטחה בפורמט Origin Access Control.

מה כדאי לבדוק לפני שמקנפגים

לפי פוסט ההכרזה של אמזון, פריסה ראשונית מתבצעת בפקודה בודדת דרך כלי הפקודה AWS CLI, ללא צורך בהקמת משאבים מוקדמת. מי שמחזיק שירות עצמאי קטן שכבר רץ על Node.js עדכני יכול להרים סביבת בדיקה בתוך דקות בודדות, לבדוק את התנהגות המערכת תחת עומס במקביל, ולראות אם זמני ה-Cold Starts אכן פוחתים כמובטח.

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

מה לעשות עכשיובדקו אם שרת ה-Node.js שלכם תואם לגרסה 24 בארכיטקטורת Arm64, והמתינו עם מיגרציה מלאה אם האפליקציה שלכם חייבת לרוץ על הדאטה סנטר בישראל.

מקורות

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

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

האם אפשר להריץ פונקציות Web Functions באזור ישראל?

לא. בהשקה השירות זמין בחמישה אזורים בלבד (צפון וירג'יניה, אוהיו, אורגון, טוקיו ואירלנד), ללא תמיכה באזור il-central-1.

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

התמיכה מוגבלת כרגע ל-Node.js 24 על גבי ארכיטקטורת Arm64 בלבד, ללא תמיכה ב-Python, Go או ארכיטקטורת x86.

איך מטופלת אבטחת הגישה לשרת ללא כתובת ציבורית חשופה?

ניתן להגדיר את נקודת הקצה כמקור פרטי מאחורי Amazon CloudFront באמצעות מנגנון Origin Access Control (OAC), שמאמת וחוסם גישה ישירה ללא מעבר דרך רשת ההפצה.

כיצד משפיע ריבוי הבקשות במקביל על בעיית ה-Cold Starts?

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