پرش به محتوای اصلی
پرش به محتوای مقاله

درون تغییرات زیرساختی نتلیفای؛ جایگزینی V8 isolates با MicroVMs

·۸ مهر ۱۴۰۵۹ دقیقه مطالعه۱ بازدید
توابع لبه ۵ برابر سریع‌تر: جایگزینی v8 isolates با میکرووی‌ام‌های Firecracker
توابع لبه ۵ برابر سریع‌تر: جایگزینی v8 isolates با میکرووی‌ام‌های Firecracker
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

عبور از مدل V8 isolates به Firecracker MicroVMs که منجر به کاهش ۵ برابری تأخیر و فراهم کردن سیستم‌فایل واقعی برای پشتیبانی کامل از npm شد.

۶ میلی‌ثانیه؛ این است زمان جدیدی که یک کاربر برای دریافت پاسخ از توابع لبه (Edge Functions) نتلیفای منتظر می‌ماند. این زمان از ۴۰ میلی‌ثانیه به ۶ میلی‌ثانیه کاهش یافته است. این افزایش سرعت ۵ برابری، نتیجه بازسازی کامل زیرساخت است که در آن V8 isolates با MicroVMهای Firecracker جایگزین شده‌اند؛ جزئیاتی که در گزارش مهندسی ۳۰ سپتامبر ۲۰۲۶ منتشر شد.

برای توسعه‌دهندگانی که می‌خواهند صفحات شخصی‌سازی‌شده یا سیستم‌های مسیریابی سریع بسازند، این یعنی زمان انتظار کاربر اکنون تقریباً ناچیز است. این تحول در حالی رخ می‌دهد که صنعت به سمت محاسبات پیچیده‌تر در لبه حرکت می‌کند و دیگر به ریدایرکت‌های ساده بسنده نمی‌کند و به دنبال اجرای منطق‌های کامل اپلیکیشن در لبه است. همان‌طور که در تحلیل قبلی ما درباره‌ی استفاده از توابع لبه برای مقیاس‌دهی به عامل‌های صوتی هوش مصنوعی از طریق Supabase اشاره کردیم، حرکت نتلیفای نشان‌دهنده ترندی گسترده‌تر است که لبه را نه به عنوان یک اجراکننده اسکریپت‌های سبک، بلکه به عنوان یک لایه محاسباتی قدرتمند و مستحکم می‌بیند. این رویکرد یادآور تلاش‌های مشابه در سایر پلتفرم‌ها برای کاهش تأخیر است، مشابه آنچه در بهینه‌سازی عملکرد مدل‌های آنتروپیک با متدولوژی Hill Climbing مشاهده کردیم.

تصور کنید رایانش لبه (Edge Computing) — به جای یک استخر حافظه مشترک — شبیه داشتن ناوگانی از کامپیوترهای کوچک و مستقل باشد که در کسری از ثانیه بوت می‌شوند. این هسته اصلی معماری جدید است.

ابعاد چالش

نتلیفای در حال حاضر روزانه حدود یک میلیارد تابع لبه را پردازش می‌کند. تنوع کاربردها در این مقیاس بسیار زیاد است: برای مثال، شرکت Sunweb از این توابع برای شخصی‌سازی صفحات وب استفاده می‌کند، در حالی که Loto-Québec از آن‌ها برای مسیریابی ترافیک بر اساس بررسی کوکی‌ها بهره می‌برد. صدها هزار سایت دیگر نیز از این پلتفرم برای هر چیزی، از احراز هویت گرفته تا مسیریابی‌های پیچیده، استفاده می‌کنند.

برای مدیریت این حجم عظیم، نتلیفای باید هر درخواست را پردازش کرده، آن را مسیریابی کند، ظرفیت محاسباتی اختصاص دهد و هم کد پلتفرم و هم کد مشتری را در عرض چند میلی‌ثانیه بوت کند. پیش از این، درخواست‌ها برای اجرا از شبکه نتلیفای خارج شده و به یک سرویس اجرای میزبانی‌شده (Hosted Execution Service) می‌رفتند. اما اکنون، این درخواست‌ها روی MicroVMها در داخل شبکه لبه خود نتلیفای اجرا می‌شوند که سربار عملکرد را به‌شدت کاهش می‌دهد.

جهش در کاهش تأخیر

طبق گزارش فنی نتلیفای، بهبودهای عملکردی در انواع مختلف فراخوانی‌ها بسیار چشمگیر و ملموس است:

  • فراخوانی‌های گرم (Warm Invocations): تأخیر میانه (p50) اکنون حدود ۵ تا ۶ میلی‌ثانیه است، در حالی که در زیرساخت قبلی این رقم بین ۲۵ تا ۴۰ میلی‌ثانیه بود. این زمان شامل تمام مراحل مسیریابی به گره محاسباتی، ورود به MicroVM، اجرای تابع و تولید هدرهای پاسخ است.
  • فراخوانی‌های p99: سرعت این درخواست‌ها ۴۷.۴٪ نسبت به قبل افزایش یافته است.
  • راه‌اندازی سرد (Cold Start): این حالت در حدود ۱.۲٪ از موارد رخ می‌دهد. فراخوانی‌های سرد اکنون به طور میانگین ۹ میلی‌ثانیه زمان می‌برند. این اتفاق زمانی می‌افتد که درخواستی به منطقه‌ای می‌رسد که هیچ گره محاسباتی در آنجا پیش از این با آن تابع مواجه نشده است و سیستم باید ابتدا تصاویر (Images) مربوطه را واکشی کند.
  • پایداری: سیستم توانسته است نرخ در دسترس بودن ۹۹.۹۹۸٪ را حفظ کند.
  • گزارش‌دهی: سرعت تحویل لاگ‌های توابع لبه اکنون ۵ برابر سریع‌تر شده است.

توابع لبه‌ای ۵ برابر سریع‌تر: جایگزینی v8 isolates با میکرووی‌ام‌های Firecracker

مسیر حرکت درخواست

وقتی درخواستی به شبکه می‌رسد، ابتدا روی نزدیک‌ترین گره لبه نتلیفای می‌نشیند. این گره اتصال TLS را خاتمه می‌دهد (Terminate می‌کند) و بررسی می‌کند آیا درخواست با مسیر یک تابع لبه برای آن استقرار (Deploy) خاص مطابقت دارد یا خیر. اگر هیچ تطابقی پیدا نشود، درخواست طبق روال معمول به حافظه پنهان (Cache) و منبع اصلی (Origin) می‌رود. اما در صورت تطابق، درخواست به یک گره محاسباتی در داخل شبکه داخلی نتلیفای ارجاع داده می‌شود.

توابع لبه‌ای ۵ برابر سریع‌تر: جایگزینی v8 isolates با میکرووی‌ام‌های Firecracker

مشخصات ماشین

قبل از اینکه درخواست مسیریابی شود، گره لبه یک «مشخصات» (Specification) برای ماشینی که قرار است تابع را اجرا کند می‌نویسد. این مشخصات همراه با هر درخواست جابه‌جا می‌شود و موارد زیر را تعریف می‌کند:

  • سه تصویر ضروری: تصویر زمان اجرا (Runtime)، تصویر پلتفرم و تصویر تابع لبه.
  • محدودیت منابع: تنظیمات دقیق برای CPU، حافظه و محدودیت‌های اتصال.

سیستم یک هش (Hash) از این مشخصات و اطلاعات خاص هر سایت محاسبه می‌کند تا یک شناسه سرویس (Service ID) منحصربه‌فرد ایجاد کند. این سازوکار تضمین می‌کند که دو استقرار با کدهای متفاوت یا متغیرهای محیطی متفاوت، به عنوان دو سرویس مجزا شناخته شوند و هرگز یک MicroVM را به اشتراک نگذارند.

مسیریابی و انتخاب گره محاسباتی

برای تضمین سرعت، گره لبه از روش Rendezvous Hashing برای انتخاب گره محاسباتی استفاده می‌کند. این روش تضمین می‌کند که یک سرویس خاص به‌طور مداوم روی یک گره یکسان قرار بگیرد؛ این کار باعث می‌شود MicroVM «گرم» بماند و کدها روی دیسک کش شوند.

توابع لبه‌ای ۵ برابر سریع‌تر: جایگزینی ایزوله‌های v8 با میکرووی‌ام‌های Firecracker

با این حال، این «چسبندگی» (Stickiness) می‌تواند باعث ایجاد «نقاط داغ» (Hot Spots) شود؛ وضعیتی که در آن یک تابع بسیار پرکار، تمام منابع یک گره را اشغال می‌کند. برای جلوگیری از این مشکل، نتلیفای در ترافیک‌های بسیار بالا، سخت‌گیری در اتصال به یک گره را کاهش می‌دهد و سرویس را در میان مجموعه‌ای از گره‌ها پخش می‌کند تا جهش‌های ناگهانی ترافیک را بدون تأثیر بر سایر مشتریان جذب کند. این مدیریت بهینه ترافیک و توزیع بار، شباهت زیادی به استراتژی Tailscale در بازنگری ساختار صف‌ها برای بهبود توان عملیاتی دارد.

سازوکار MicroVM

هر تابع اکنون در یک Firecracker MicroVM اجرا می‌شود که با همکاری Unikraft توسعه یافته است. این ماشین‌های مجازی به دلیل استفاده از یک محیط لینوکس بسیار سبک و حذف‌شده (Stripped-down) به جای یک سیستم‌عامل کامل، در کمتر از یک میلی‌ثانیه بوت شده و در حدود ۲ میلی‌ثانیه (p99) شروع به کار می‌کنند.

برای بهینه‌سازی بیشتر، نتلیفای از یک استراتژی تخصصی بارگذاری و عکس‌برداری (Snapshotting) استفاده می‌کند:

  • بارگذاری بهینه: فایل‌های تابع به صورت تصاویر EROFS فشرده‌نشده مونت شده و Memory-mapped می‌شوند. این قابلیت به VM اجازه می‌دهد به جای بارگذاری کل بسته، فقط بخش‌های خاصی از باندل را که به آن‌ها نیاز دارد بخواند.
  • عکس‌برداری (Snapshotting): پس از بوت شدن VM و شروع به گوش دادن سرور جاوااسکریپت روی یک پورت، نتلیفای یک Snapshot از وضعیت MicroVM می‌گیرد.
  • مقیاس‌دهی به صفر: وقتی تابعی در حال استفاده نیست، MicroVMها برای ذخیره منابع به صفر می‌رسند.
  • بازیابی سریع: در درخواست بعدی، یک MicroVM جدید مستقیماً از روی Snapshot حافظه-نگاشته (Memory-mapped) شروع به کار می‌کند و بلافاصله اجرا می‌شود، بدون اینکه منتظر خواندن کامل Snapshot در حافظه بماند.

مدیریت سرویس و مقیاس‌پذیری

یک «سرویس» اجازه می‌دهد چندین MicroVM به توابع یک سایت متصل شوند. نتلیفای این سرویس‌ها را بر اساس پارامترهای خاص مقیاس می‌دهد:

  • محدودیت درخواست: هر MicroVM پس از پردازش تعداد مشخصی درخواست خاموش می‌شود تا از اجرای نامحدود و احتمالی نشت منابع جلوگیری شود.
  • بوت پیش‌دستانه (Eager Booting): سیستم از همان پارامترها استفاده می‌کند تا پیش از خاموش شدن MicroVM فعلی، یک MicroVM جدید را به طور فعال بوت کند.
  • واکشی تصاویر: اگر سرویسی روی یک گره محاسباتی وجود نداشته باشد، گره ابتدا دیسک را برای تصاویر مورد نیاز بررسی می‌کند. تصاویر مفقود از گره لبه دریافت می‌شوند؛ این یعنی فقط تصاویری که در آن منطقه ترافیک فعال دارند، به صورت محلی ذخیره می‌شوند.

امنیت و ایزولاسیون

یکی از حیاتی‌ترین تغییرات، فاصله گرفتن از V8 isolates است. اگرچه ایزوله‌ها سریع هستند، اما ایزولاسیون در سطح سخت‌افزار را که یک ماشین مجازی فراهم می‌کند، ندارند. در مدل جدید، اگر یک استقرار هک شود، مهاجم در MicroVM خود زندانی می‌ماند. حتی اگر بتواند از محیط Runtime خارج شود، نمی‌تواند به سایر مشتریان یا لایه محاسباتی زیرین آسیب بزند یا آن‌ها را مسموم کند. نتلیفای صراحتاً اشاره می‌کند که V8 isolates این سطح از ایزولاسیون را فراهم نمی‌کردند.

برای حفظ پایداری در مقیاس بالا، حفاظ‌های عملیاتی متعددی اضافه شده است:

  • DNS محلی: گره‌های محاسباتی اکنون Resolverهای DNS محلی اجرا می‌کنند تا از شکست‌های رایج شبکه جلوگیری شود.
  • متریک‌های پیشرفته: تیم مهندسی اکنون زمان بوت، زمان باز شدن اولین پورت و زمان شروع اجرای کد کاربر را ثبت می‌کند.
  • قطع‌کننده‌ها (Circuit Breakers): چندین قطع‌کننده در جایگاه‌های مختلف تعبیه شده است تا مسیریابی سریع و خارج کردن گره‌های محاسباتی ناسالم از چرخه تضمین شود.

توابع لبه‌ای ۵ برابر سریع‌تر: جایگزینی v8 isolates با میکرووی‌ام‌های Firecracker

طراحی برای تاب‌آوری

نتلیفای گره‌های محاسباتی را از گره‌های لبه جدا کرده است تا گره‌های لبه سبک بمانند و امکان استفاده از انواع مختلف نمونه‌ها (Instance Types) و مقیاس‌دهی مستقل فراهم شود. یک Control Plane سلامت گره‌های محاسباتی را رصد می‌کند و گره‌های لبه به‌طور منظم وضعیت آن‌ها را چک (Poll) می‌کنند.

برای به‌روزرسانی‌ها، یک ناوگان (Fleet) جدید از ماشین‌ها در کنار ناوگان فعال مستقر می‌شود. ناوگان جدید ابتدا مقیاس می‌گیرد تا با بار فعلی مطابقت یابد و تنها پس از تأیید سلامت، ترافیک را تحویل می‌گیرد. این روش امکان بازگشت سریع (Rollback) را در صورت بروز هرگونه مشکل فراهم می‌کند.

جابه‌جایی سقف قابلیت‌ها

این تغییر معماری محدودیت‌های قدیمی را از بین می‌برد. چون توابع اکنون در یک VM واقعی با یک سیستم‌فایل (Filesystem) واقعی اجرا می‌شوند، پشتیبانی از بسته‌های npm از حالت بتا خارج می‌شود. پیش از این، باینری‌های Native و وارد کردن فایل‌ها در زمان اجرا مشکل‌ساز بودند، اما وجود یک سیستم‌فایل واقعی این موانع را حذف می‌کند.

علاوه بر این، شرکت در حال بازنگری در محدودیت‌های عملیاتی است. سقف‌های قبلی — ۵۰ میلی‌ثانیه CPU برای هر درخواست، ۵۱۲ مگابایت حافظه و ۲۰ مگابایت کد فشرده — محصولات مدل ایزوله بودند و اکنون احتمالاً افزایش می‌یابند.

این انتقال برای کاربر کاملاً شفاف است؛ هیچ مرحله مهاجرتی وجود ندارد، قیمت‌ها تغییر نکرده‌اند و نیازی به بازنویسی اعلان‌های netlify.toml یا تغییر در وارد کردن URLها و گردش‌کارهای توسعه محلی نیست.

برای کل حوزه رایانش لبه، این اتفاق ثابت می‌کند که موازنه بین «امنیت» و «عملکرد» در حال از بین رفتن است. با استفاده از Snapshotهای MicroVM و کرنل‌های لینوکس تخصصی، پلتفرم‌ها می‌توانند امنیت یک ماشین مجازی را با تأخیر یک تابع ارائه دهند.

گام بعدی شما

  • اگر توابع لبه شما به دلیل سنگین بودن وابستگی‌های Node.js در V8 isolates ناپایدار بودند، اکنون زمان تست مجدد آن‌هاست.
  • منتظر اعلام محدودیت‌های جدید CPU و حافظه باشید؛ این تغییر احتمالاً تعریف «آنچه می‌توان در لبه میزبانی کرد» را عوض می‌کند.
  • بررسی کنید آیا می‌توانید منطق‌های پیچیده‌تر اپلیکیشن خود را از سرور مرکزی به لبه منتقل کنید تا تجربه کاربر را بهبود ببخشید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این تغییر با تکیه بر تخصص مهندسی در لایه کرنل لینوکس، استاندارد جدیدی برای امنیت و سرعت در رایانش لبه تعریف می‌کند. توسعه‌دهندگان اکنون می‌توانند بدون نگرانی از تأخیر یا نشت امنیتی، اپلیکیشن‌های پیچیده‌تری را در لبه اجرا کنند.

تأثیر برای ایران

توسعه‌دهندگان ایرانی که از Netlify برای میزبانی پروژه‌های خود استفاده می‌کنند، بدون نیاز به تغییر کد، شاهد افزایش سرعت چشمگیر برنامه‌هایشان خواهند بود.

·نگاه ما
تحریریه دات‌هوش

جایگزینی V8 isolates با MicroVMها نشان می‌دهد که صنعت از «شبیه‌سازی محیط اجرا» به سمت «مینیاتور کردن زیرساخت» حرکت کرده است. این رویکرد ثابت می‌کند که با بهینه‌سازی لایه کرنل و استفاده از Snapshotها، می‌توان هزینه امنیتی ایزولاسیون سخت‌افزاری را تقریباً به صفر رساند. در واقع، مرز بین Serverless و Virtualization در لبه در حال محو شدن است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.