מילי-שניות בודדות בניתוב של אתר נשמעות לפעמים כמו עניין לחובבי מדידות אובססיביים, עד שחוויית המשתמש נתקעת על מסך לבן. כשמריצים Edge Functions כדי לבדוק עוגיות, לבצע בדיקות אותנטיקציה או להחליף דפי נחיתה לפי מיקום גיאוגרפי, כל שיהוי ב-TTFB הוא קנס ישיר על הטעינה. כעת מודיעה Netlify על שינוי ארכיטקטוני עמוק: החברה זנחה את התשתית החיצונית ששירתה את Edge Functions שלה ועברה למיקרו-מכונות וירטואליות בתוך הרשת הפרטית שלה. לפי ההודעה שפרסמה החברה, זמני השיהוי החציוניים בקריאות חמות צנחו מטווח של 25 עד 40 מילי-שניות לכדי 5 עד 6 מילי-שניות בלבד, לצד שיפור של 47.4% במאיון ה-99.
לא הייתי ממהר להתרגש.
השדרוג נפרס באופן גורף עבור כלל המשתמשים, ללא שינוי במחיר וללא צורך בעדכון קוד או בהגדרות חדשות. אבל לפני שרצים לפרק שרתי backend מבוססי Lambda כדי להעביר את כל כובד המשקל ל-Edge, כדאי להבין מה בדיוק השתנה מתחת למכסה המנוע ומה נשאר מוגבל.
רשת פנימית במקום קפיצה החוצה
הירידה בזמני התגובה אינה נובעת מקסם כלשהו בקוד המשתמש, אלא בראש ובראשונה מתיקון של חוסר יעילות רשתי. עד המהלך הנוכחי, שירות Edge Functions של נטליפיי נשען על ספק אירוח חיצוני מבוסס Deno Deploy שהריץ סביבות מבודדות בתוך V8 Isolates. בפועל, בכל פעם שבקשת משתמש פגעה בצומת הקצה של נטליפיי ודרשה הפעלת פונקציה, הבקשה נאלצה לצאת החוצה דרך האינטרנט הפתוח אל התשתית של הספק החיצוני, להמתין לעיבוד, ולחזור בחזרה. הקפיצה הכפולה הזו הוסיפה עשרות מילי-שניות מיותרות עוד לפני שהקוד שלכם התחיל לחשב משהו.
כעת, הבקשות אינן עוזבות את הרשת הפנימית של החברה. צומת הקצה מקבל את הבקשה ומעביר אותה ישירות לצומת מחשוב פנימי המריץ MicroVMs של Firecracker שפותחו בשיתוף עם Unikraft. החברה מדווחת גם על ירידה של פי 5 בזמן מסירת הלוגים ועל זמינות שנמדדה בשיעור של 99.998%. מדובר בשיפור תשתיתי מתבקש שמחזיר את נטליפיי ליישור קו עם מודלים של ענקיות ענן אחרות.
צילום זיכרון בשתי מילי-שניות
כדי להריץ מיקרו-מכונות וירטואליות בנתיב הקריטי של בקשת HTTP בלי לייצר צווארי בקבוק, נדרש פתרון קיצוני לבעיית ה-Cold Start. הפתרון של נטליפיי ויוניקרפט מתבסס על לינוקס מינימליסטי שמותאם למשימה בודדת. המכונות מופעלות תוך כ-2 מילי-שניות ב-p99, כאשר קובצי הפונקציה ממופים ישירות לזיכרון באמצעות תמונת מערכת קבצים בלתי דחוסה בפורמט EROFS. במקום לפרוס את כל הקוד מראש, המכונה קוראת רק את חלקי ה-bundle הנחוצים לה בפועל.
אתחול מהיר וטעינת תמונות לפי דרישה מאפשרים לנו להציב קוד של כל לקוח על כל צומת, בזמן הבקשה, בלי להפיץ אותו מראש לכל מקום.צוות הפלטפורמה של נטליפיי, מתוך הבלוג של Unikraft
ברגע ששרת ה-JavaScript הפנימי מתחיל להאזין לפורט, המערכת מייצרת צילום מצב של הזיכרון. כאשר אין תנועה נכנסת, המכונות צונחות לאפס משאבים כדי לא לתפוס מקום סרק. עם הגעת בקשה חדשה, המערכת משחזרת את המכונה ישירות מאותו צילום זיכרון ממופה. הניתוב לצומתי המחשוב מתבצע באמצעות אלגוריתם rendezvous hashing ששומר על הצמדת שירותים לאותם צמתים כדי לשמר מטמון חם, לצד מנגנוני פיזור עומסים שמתערבים כאשר תנועה חריגה מאיימת לחנוק שרת בודד.
מגבלות הריצה שעדיין כאן
למרות המעבר למכונות מבודדות חומרה, לפי הודעת החברה, התקרות המתועדות של 50 מילי-שניות זמן מעבד, 512 מגה-בייט זיכרון ו-20 מגה-בייט לקוד דחוס נבעו ממודל ה-Isolates הישן, ורק כעת נוצר מרחב לבחון אותן מחדש.
בנטליפיי מציינים כי תמיכה בחבילות npm יוצאת משלב הבטא הודות למערכת הקבצים האמיתית של המכונות הווירטואליות, וכי יש כוונה לבחון מחדש את תקרות המשאבים בעתיד. עם זאת, נכון לעכשיו, לא ניתן להריץ כאן משימות כבדות, שאילתות ארוכות למסדי נתונים או עיבודי תמונה מורכבים. מי שמקווה לנטוש מכולות Docker או שרתי Lambda יגלה שהמגבלות הקיימות עדיין מיועדות בעיקר ללוגיקת ניתוב קלה, שינוי כותרות ומידלוור של פריימוורקים כמו Next.js.
| מאפיין | התשתית הישנה (עד 2026) | התשתית החדשה (Firecracker) |
|---|---|---|
| מנגנון הרצה | V8 Isolates דרך ספק חיצוני (Deno Deploy) | Firecracker MicroVMs מבוססי Unikraft |
| מיקום עיבוד הבקשה | יציאה מהרשת לספק צד שלישי וחזרה | עיבוד פנימי ברשת ה-Edge של נטליפיי |
| זמן השהיה חציוני (p50) | 25 עד 40 מילי-שניות | 5 עד 6 מילי-שניות |
| זמן אתחול מכונה (p99) | לא פורסם | כ-2 מילי-שניות |
| בידוד ואבטחה | בידוד תוכנתי ברמת הקשר ריצה (V8 Isolates) | בידוד חומרה וירטואלי מלא |
| מגבלת זמן מעבד (CPU) | 50 מילי-שניות | בבחינה מחדש להעלאת התקרה |
| מגבלת זיכרון | 512 מגה-בייט | בבחינה מחדש להעלאת התקרה |
מה כדאי לבדוק עכשיו
אם האתר שלכם כבר מריץ Edge Functions, מומלץ להיכנס ללוח הבקרה ולבחון את זמני ה-TTFB בלוגים של הימים האחרונים כדי לאמת שהירידה בזמני התגובה אכן מורגשת בשירות שלכם. כדאי גם לבדוק תאימות של ספריות מתוך התיעוד של Edge Functions API, בפרט אם נמנעתם בעבר מחבילות מסוימות בגלל מגבלות גישה למערכת הקבצים.
עבור משתמשים בישראל, הנתונים הגלובליים דורשים הסתייגות של ממש. בדקו את הביצועים מול קהל היעד האמיתי שלכם לפני שאתם מקבלים החלטות ארכיטקטורה. לפחות בינתיים, החשבונית החודשית נשארת נקובה בדולרים בלי שינוי במחיר.
מקורות
- 5x faster Edge Functions: V8 isolates to Firecracker MicroVMshttps://www.netlify.com/blog/edge-functions-firecracker-microvms/
- How Netlify Runs all of Edge Functions on Unikraft microVMshttps://unikraft.com/blog/netlify-edge-functions
- npm packages work in edge functions today, in betahttps://docs.netlify.com/build/edge-functions/api/
- documented limitshttps://docs.netlify.com/build/edge-functions/limits/
- Netlifyhttps://weba.co.il/tools/netlify/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.