خبر فوریامروز

راهنمای معماری سرورلس مبتنی بر ایزوله‌های V8

خداحافظی با سنگینی کانتینرها؛ چگونه ایزوله‌های V8 امروزه میکروسرویس‌های ابری را با کولد استارت زیر ۱ میلی‌ثانیه و مصرف رم چند مگابایتی بازتعریف کردند.

راهنمای معماری سرورلس مبتنی بر
راهنمای معماری سرورلس مبتنی بر ایزوله‌های V8 — عکس: آرشیو ماگ بیت
خلاصه در یک نگاه
  • تحلیل موشکافانه، معماری و زیرساختی رنسانس سیستم‌های ابری سرورلس (Serverless Edge) مبتنی بر ایزوله‌های موتور جاوااسکریپت و وب‌اسمبلی V8 امروزه کالبدشکافی چالش تاریخی شروع سرد (Cold Start) چندثانیه‌ای و مصرف حافظه چندصد مگابایتی کانتینرهای داکر (Docker/OCI) در میکروسرویس‌ها، نحوه ایجاد سندباکس‌های امن با تفکیک فضای آدرس در سطح پروسس مشترک، بررسی کارایی خیره‌کننده کلودفلر ورکرز (Cloudflare Workers)، دینو دیپلوی (Deno Deploy) و فستلی کامپیوت (Fastly Compute)، همگرایی عمیق ایزوله‌ها با پایگاه‌های داده سبک لبه مانند PGlite و SQLite بر بستر WebAssembly، کاهش ۹۵ درصدی هزینه‌های میزبانی و تاخیر درخواست به کمتر از ۵ میلی‌ثانیه برای کاربران جهانی.
  • بررسی جامع ابعاد فنی و کاربردی توسط تحریریه ماگ بیت.
  • پیش‌بینی اثرات کوتاه‌مدت و بلندمدت بر اکوسیستم فناوری.

بحران شروع سرد کانتینرها در عصر وب بلادرنگ؛ چرا داکر برای لبه بیش از حد سنگین است؟

در طول دهه گذشته، کانتینرسازی مبتنی بر لینوکس (Docker/Kubernetes) سنگ‌بنای استقرار سرویس‌های ابری بود. اما با گسترش تعاملات بلادرنگ، دستیاران نرم‌افزاری و نیاز به توابع سرورلس لبه (Edge Functions)، هزینه‌های پنهان این معماری گریبان‌گیر توسعه‌دهندگان شد. برای اجرای یک کانتینر معمولی، سیستم‌عامل باید نیم‌اسپیس‌ها (Namespaces)، گروه‌های کنترل (cgroups)، فایل‌سیستم مجازی لایه‌ای و یک کرنل کامل را مقداردهی اولیه کند.

این فرآیند به پدیده‌ای ویرانگر به نام شروع سرد (Cold Start) منتهی می‌شد که زمان پاسخ به نخستین درخواست را بین ۲۰۰ میلی‌ثانیه تا چند ثانیه افزایش می‌داد. در دنیایی که تاخیر بیش از ۵۰ میلی‌ثانیه به معنای افت نرخ تبدیل و ریزش کاربر است، چنین تاخیری غیرقابل قبول بود. علاوه بر این، هر کانتینر حداقلی پایتون یا نودجی‌اس حتی در حالت آماده‌به‌کار به ده‌ها مگابایت حافظه رم نیاز داشت که میزبانی میلیون‌ها تابع لبه را به لحاظ مالی غیرممکن می‌ساخت.

همان‌طور که در بررسی معماری برنامه‌های اول-محلی و دیتابیس‌های لبه PGlite مشاهده کردیم، گرایش غالب امروزه حرکت داده‌ها و منطق محاسباتی به نزدیک‌ترین نقطه جغرافیایی به کاربر نهایی است؛ رویکردی که کانتینرهای متمرکز سنتی قادر به برآوردن الزامات آن نبودند.

سازوکار ایزوله‌های موتور جاوااسکریپت V8؛ امنیت حافظه و سندباکس بدون شبیه‌سازی لینوکس

راه‌حل رادیکال صنعت، الهام‌گیری از همان سازوکاری بود که مرورگرهای وب نظیر گوگل کروم برای جداسازی تب‌ها از آن استفاده می‌کنند: ایزوله‌های موتور V8 (V8 Isolates). یک ایزوله V8 نمایانگر یک نمونه مستقل از ماشین مجازی جاوااسکریپت و وب‌اسمبلی است که دارای پشته (Stack)، هیپ (Heap) و چرخه جمع‌آوری زباله (Garbage Collection) کاملاً ایزوله و اختصاصی است.

نقطه عطف این معماری در آن است که صدها یا هزاران ایزوله مختلف می‌توانند به صورت هم‌زمان درون یک پروسه سیستم‌عامل (Single OS Process) اجرا شوند. تفکیک امنیتی داده‌ها به جای تکیه بر سازوکارهای سنگین سیستم‌عامل، در سطح سیستم انواع زبان، محدودیت حافظه کامپایلر جاوااسکریپت و مرزهای سخت‌افزاری حافظه تضمین می‌شود. هیچ کدی در یک ایزوله نمی‌تواند به حافظه ایزوله دیگر دسترسی پیدا کند.

در نتیجه این تفکیک سبک‌بال، زمان راه‌اندازی یا شروع سرد یک تابع جدید در ایزوله‌های V8 به کمتر از ۰.۵ میلی‌ثانیه (کمتر از یک هزارم ثانیه!) کاهش یافته است؛ سرعتی که پدیده آزاردهنده کولد استارت را برای همیشه از محاسبات ابری حذف نموده است.

نمودار مقایسه ساختار تفکیک حافظه در ماشین‌های مجازی، کانتینرهای داکر و ایزوله‌های V8 لبه
کالبدشکافی معماری V8 Isolates در محاسبات سرورلس لبه؛ اجرای هزاران اسکریپت امن درون یک فرایند مشترک با زمان شروع سرد زیر ۰.۵ میلی‌ثانیه و مصرف رم چند مگابایتی

مصرف حافظه در ابعاد مگابایت؛ اجرای ده‌ها هزار ایزوله روی یک سرور مشترک

برتری دوم ایزوله‌های V8 در راندمان مصرف منابع سخت‌افزاری متجلی می‌شود. در حالی که اجرای ۱۰ هزار کانتینر داکر نیازمند خوشه‌ای عظیم از سرورها با ترابایت‌ها حافظه رم بود، یک سرور ابری معمولی امروزه می‌تواند بیش از ۵۰ هزار ایزوله فعال را درون چند ده گیگابایت رم میزبانی کند؛ زیرا هر ایزوله در لحظه شروع تنها حدود ۲ تا ۵ مگابایت حافظه پایه اشغال می‌نماید.

این جهش در چگالی استقرار (Tenant Density) هزینه‌های زیرساختی شرکت‌های مدرن را تا ۹۰ درصد کاهش داده است. پلتفرم‌های ابری لبه نیازی ندارند سرورها را به صورت پیوسته در حالت آماده‌باش و گرم نگه‌دارند؛ توابع با ورود هر پکت شبکه در کسر میلی‌ثانیه متولد شده، درخواست را پردازش کرده و حافظه را بلافاصله آزاد می‌سازند.

این رویکرد اقتصادی به شرکت‌ها اجازه داده تا منطق اعتبارسنجی توکن‌ها، هدایت ترافیک، تست‌های A/B و رندرهای پویا را بدون نگرانی از هزینه‌های سرسام‌آور سرورهای سنتی مستقیماً در لبه شبکه جهانی مستقر نمایند.

همگرایی ایزوله‌های V8 با وب‌اسمبلی و دیتابیس‌های توکار نظیر PGlite

تا چند سال پیش، انتقاد عمده به ایزوله‌های V8 محدودیت آن‌ها به زبان جاوااسکریپت و عدم دسترسی به کتابخانه‌های محلی C/C++ یا پایگاه‌های داده بود. با بلوغ استانداردهای کامپوننت‌های وب‌اسمبلی و WASI در معماری ابری، این محدودیت تاریخی به کلی محو شده است.

توسعه‌دهندگان امروزه می‌توانند کدهای نوشته‌شده به زبان‌های راست (Rust)، گو یا C++ را به بایت‌کد WebAssembly کامپایل کرده و آن را درون ایزوله‌های V8 با سرعت نزدیک به کد بومی اجرا کنند. شگفت‌انگیزتر آنکه کتابخانه‌های کاملی مانند موتور پایگاه داده PostgreSQL (در قالب پروژه PGlite) یا SQLite مستقیماً درون حافظه همان ایزوله اجرا می‌شوند.

این همگرایی به معنای حذف کامل تاخیر شبکه برای پرس‌وجوهای دیتابیس است؛ تابع لبه می‌تواند در یک حافظه موقت محلی کوئری‌های پیچیده SQL را با تاخیر زیر ۱ میلی‌ثانیه اجرا کند و تغییرات را از طریق پروتکل‌های همگام‌سازی بلادرنگ به پایگاه‌های ابری مخابره نماید.

بوم‌شناسی پلتفرم‌های؛ مقایسه زیرساخت Cloudflare Workers، Deno Deploy و Fastly Compute

رقابت در بازار پلتفرم‌های لبه امروزه به اوج بلوغ خود رسیده است. کلودفلر با پلتفرم Cloudflare Workers و شبکه عظیم بیش از ۳۰۰ مرکز داده جهانی، امکان اجرای کد با تاخیر زیر ۵ میلی‌ثانیه را برای بیش از ۹۵ درصد جمعیت جهان فراهم آورده است. از سوی دیگر، Deno Deploy با پشتیبانی پیش‌فرض از وب‌پک‌ها، استانداردهای وب سازگار با مرورگر و دیتابیس توزیع‌شده Deno KV انتخابی محبوب میان تیم‌های محصول مدرن است.

پلتفرم Fastly Compute نیز با استفاده از ران‌تایم اختصاصی Lucet/Wasmtime استانداردهای امنیتی فوق‌العاده سخت‌گیرانه‌ای را برای صنایع مالی و حساس ارائه می‌دهد که زمان استارت صفر را برای پردازش میلیون‌ها پکت بر ثانیه تضمین می‌کند. این زیرساخت‌ها در هماهنگی کامل با مدل‌های هوش مصنوعی سبک و بدون تاخیر عمل کرده و زنجیره پردازش دیجیتال را از لایه‌های سنتی تفکیک می‌کنند.

ایزوله‌های V8 صرفاً یک بهینه‌سازی فنی نیستند؛ بلکه رنسانس مفهوم سرورلس هستند که مفهوم سرور را به معنای واقعی کلمه از ذهن مهندسان نرم‌افزار محو کرده و اجرای کد را به تابعی بی‌درنگ، ارزان و فراگیر در پهنه اینترنت بدل ساخته‌اند.

این مطلب را با دوستانتان به اشتراک بگذارید
ل
نوشته‌ی
لیلا احمدی

روزنامه‌نگار حوزه‌ی فناوری؛ علاقه‌مند به روایت آدم‌ها و تغییراتی که فناوری در زندگی روزمره ایجاد می‌کند.

همه‌ی مطالب
مطالب پیشنهادی ماگ بیت

بیشتر از فناوری

مشاهده همه
راهنمای معماری سرورلس مبتنی بر ایزوله‌های V8 | ماگ بیت | ماگ بیت