Netlify Edge Functions از V8 Isolate به MicroVM کوچ کرد
اجرای Netlify Edge Functions از V8 Isolate به MicroVMهای Firecracker منتقل شد و تأخیر میانه فراخوانی گرم از ۲۵ تا ۴۰ میلیثانیه به ۵ تا ۶ رسید.

فهرست مطالب
اگر سایت شما Netlify Edge Functions دارد، کد شما از همین حالا جای دیگری اجرا میشود؛ بدون آنکه یک خط از آن عوض شده باشد. Netlify روز ۲۹ سپتامبر ۲۰۲۶ اعلام کرد زیرساخت Edge Functions را بازسازی کرده است: درخواست دیگر از شبکه این شرکت بیرون نمیرود و هر فانکشن در ماشین مجازی کوچک (MicroVM) مستقل خودش روی Firecracker اجرا میشود. تأخیر میانه یک فراخوانی گرم از ۲۵ تا ۴۰ میلیثانیه به ۵ تا ۶ میلیثانیه رسیده است.
مسیر تازه یک درخواست: از نود لبه تا MicroVM
به روایت Netlify، در معماری قبلی با هر تطابق مسیر، درخواست از شبکه خارج میشد، روی اینترنت به یک سرویس اجرای میزبانیشده روی V8 Isolate میرفت و برمیگشت.
حالا درخواست روی نزدیکترین نود لبه (Edge Node) مینشیند، TLS همانجا خاتمه مییابد و مسیر با روتهای همان دیپلوی سنجیده میشود. با تطابق، نود لبه یک machine spec مینویسد که سه ایمیج را نام میبرد — رانتایم، ایمیج پلتفرم Netlify و ایمیج خود Edge Function — و سقف CPU، حافظه و اتصالها را تعیین میکند. هش این spec کنار اطلاعات مخصوص سایت، یک Service ID میسازد که همراه هر درخواست سفر میکند؛ بعد درخواست به یک نود محاسباتی داخل شبکه خود Netlify میرود.
Netlify Edge Functions چقدر سریعتر شد؟
| سنجه | زیرساخت قبلی | زیرساخت جدید |
|---|---|---|
| فراخوانی گرم (میانه) | ۲۵ تا ۴۰ میلیثانیه | ۵ تا ۶ میلیثانیه |
| فراخوانیهای p99 | مبنا | ۴۷٫۴٪ سریعتر |
| فراخوانی سرد | — | حدود ۹ میلیثانیه، روی ۱٫۲٪ فراخوانیها |
| راهاندازی MicroVM (p99) | — | حدود ۲ میلیثانیه |
| تحویل لاگ (میانه، به روایت Unikraft) | ۲٫۵ ثانیه | ۵۰۰ میلیثانیه |
| دسترسپذیری | — | ۹۹٫۹۹۸٪ |
روزانه حدود یک میلیارد Edge Function روی Netlify اجرا میشود و هر کدام جلوی یک درخواست مینشیند؛ این میلیثانیهها مستقیم روی زمان تا اولین بایت (TTFB) و Core Web Vitals اثر میگذارند.
مرز امنیتی کجاست: Isolate یا هایپروایزر؟
جداسازی در معماری تازه از همان Service ID میآید: دو دیپلوی با کد یا متغیرهای محیطی متفاوت، دو سرویس جدا هستند و هرگز یک MicroVM را به اشتراک نمیگذارند. Netlify صریح مینویسد: «یک دیپلویِ احتمالاً آلوده در MicroVM جداگانهای اجرا میشود و حتی اگر از رانتایم فرار کند، نمیتواند مشتریان دیگر یا خودِ لایه محاسباتی را آلوده کند. V8 Isolateها، با هر نامی، چنین سطحی از جداسازی را فراهم نمیکنند.»
تفاوت معماری پشت این جمله ساده است: Isolate سندباکسی در سطح زبان و داخل یک پراسس مشترک است، پس فرار از رانتایم یعنی رسیدن به چیزی که با بقیه شریک است؛ مرز MicroVM را هایپروایزر نگه میدارد.
اسنپشات، مقیاس به صفر و ایمیج EROFS
هر MicroVM در کمتر از یک میلیثانیه ساخته میشود، چون بهجای سیستمعامل کامل یک لینوکس خلاصهشده بوت میشود. فایلهای فانکشن بهصورت ایمیج EROFS فشردهنشده مانت و در حافظه نگاشته میشوند (memory-mapped)؛ یعنی VM فقط بخشهایی از باندل را میخواند که واقعاً به آنها میرسد.
بخش تعیینکننده اسنپشات است: همینکه سرور جاوااسکریپت روی پورت گوش میدهد، Netlify اسنپشات میگیرد. فانکشن بیکار به صفر مقیاس مییابد و فراخوانی بعدی MicroVM تازهای از همان اسنپشات میسازد؛ اسنپشات هم نگاشتهشده است، پس اجرا پیش از خواندهشدن کاملش شروع میشود. این چرخه — بوت، اسنپشات، بازیابی و مقیاس به صفر — محصول Unikraft است، که میگوید EROFS و قابلیت ROM مصرف حافظه هر سرور را نصف کردهاند.
رندوو هشینگ: معاوضه کُلد استارت با هاتاسپات
انتخاب نود با رندوو هشینگ (rendezvous hashing) انجام میشود: یک سرویس همیشه روی همان نود مینشیند تا MicroVM گرم بماند و کد از قبل روی دیسک و در کش باشد. به گفته Netlify، پخش یکنواخت درخواستها بین همه نودها کُلد استارت (cold start) بیشتری میساخت.
اما همین مسیر سریع، هاتاسپات (hot spot) هم میسازد؛ سرویسی که سهم بزرگی از ترافیک یک منطقه را بگیرد، نود میزبانش را به ضرر بقیه اشباع میکند. راهحل Netlify شلکردن چسبندگی است: بالاتر از یک آستانه، سرویس روی برشی از نودها پخش میشود تا اسپایک یک مشتری، سرویسهای دیگرِ هششده به همان نود را از پا نیندازد. هر MicroVM هم فقط تعداد ثابتی درخواست را جواب میدهد و بعد خاموش میشود؛ جانشینش کمی زودتر بالا میآید.
چه چیزی عوض نشد: محدودیتها، npm و قیمت
Netlify مینویسد این تغییر «نحوه نوشتن یا استفاده از Edge Functions را عوض نمیکند — ایمپورت از URL، پکیجهای npm، ماژولهای داخلی Node، تعریفها در netlify.toml، توسعه محلی — همهاش دقیقاً مثل قبل کار میکند» و «همین امروز ترافیک پروداکشن شما را سرو میکند، با همان قیمتگذاری، بدون قدم مهاجرت…».
در مقابل، آنچه این معماری «ممکن» کرده هنوز عرضه نشده است. پشتیبانی از پکیجهای npm همچنان بتاست، با همان هشدارهای باینری نیتیو و ایمپورت فایل در زمان اجرا. سقفهای عملیاتی هم تغییر نکردهاند: مستندات رسمی در زمان نوشتن این خبر همان ۵۰ میلیثانیه CPU برای هر درخواست، ۵۱۲ مگابایت حافظه و ۲۰ مگابایت کد فشرده را فهرست میکند. Netlify این عددها را میراث مدل اجرای Isolate میداند و میگوید حالا «جا برای بازنگری» دارد: «کارمان تمام نشده.»




دیدگاهها
دیدگاهها پس از بررسی تحریریه منتشر میشوند. توهین، تبلیغ و لینکهای بیربط حذف میشوند؛ نقد فنی و مستند همیشه خوشآمد است.
هنوز کسی چیزی ننوشته. اولین دیدگاه را شما ثبت کنید.