WEBA

המעבר של Netlify למיקרו-מכונות חותך שיהוי

נטליפיי זנחה את מנוע ה-V8 החיצוני לטובת Firecracker מקומי וקיצצה פי 5 מההשהיה, אך מפתחים שקיוו למחליף מלא לשרת יצטרכו לחכות

601 מילים29 עובדות אומתו

מילי-שניות בודדות בניתוב של אתר נשמעות לפעמים כמו עניין לחובבי מדידות אובססיביים, עד שחוויית המשתמש נתקעת על מסך לבן. כשמריצים 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.

השוואת תשתית ההרצה של Netlify Edge Functions
מאפייןהתשתית הישנה (עד 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, בפרט אם נמנעתם בעבר מחבילות מסוימות בגלל מגבלות גישה למערכת הקבצים.

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

מה לעשות עכשיובדקו את זמני ה-TTFB בלוגים של נטליפיי מול משתמשי הקצה שלכם לפני שאתם מעבירים לוגיקה מורכבת משרתי הבקאנד.

מקורות

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

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

האם צריך לשנות קוד או לעדכן הגדרות בקובץ netlify.toml כדי לקבל את השיפור?

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

האם המעבר מאפשר להריץ ספריות npm שדורשות רכיבי מערכת מקומיים (native binaries)?

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

האם מגבלת זמן הריצה של 50 מילי-שניות בוטלה בעקבות המעבר ל-MicroVMs?

לא. המגבלות הרשמיות של 50 מילי-שניות זמן מעבד (CPU time) ו-512 מגה-בייט זיכרון נותרו בתוקף, כך שהתשתית עדיין אינה מיועדת לעיבודים כבדים וממושכים.