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

مدل قطعات Wasm و ایزولاسیون فوق‌سریع

دوران کانتینرهای چندصد مگابایتی داکر در لبه ابری به سر آمد؛ مدل قطعات Wasm امروزه اجرای توزیع‌شده کدهای چندزبانه را در کمتر از چند میکروثانیه با امنیتی نفوذناپذیر ممکن ساخته است.

مدل قطعات Wasm و ایزولاسیون
مدل قطعات Wasm و ایزولاسیون فوق‌سریع — عکس: آرشیو ماگ بیت
خلاصه در یک نگاه
  • واکاوی موشکافانه بلوغ استاندارد مدل قطعات وب‌اسمبلی (WASM Component Model) و پیاده‌سازی رسمی واسط سیستمی WASI 0.2 امروزه. چگونگی بازتعریف مفهوم کانتینریزاسیون ابری، مقایسه معماری سنگین کانتینرهای OCI لینوکس با جعبه‌های شنی ایزوله نانومتری Wasm با مصرف رم در حد چند کیلوبایت، زمان بوت صفر و راه‌اندازی زیر ۵ میکروثانیه به ازای هر درخواست، ترکیب یکپارچه زبان‌های Rust، پایتون و Go در قالب کامپوننت‌های توزیع‌پذیر بدون بایندرهای کند FFI، مکانیسم امنیتی Capability-Based مبتنی بر عدم اعتماد مطلق به توابع سیستمی، و پیامدهای این تحول برای معماری‌های مدرن سرورلس لبه (Edge Serverless).
  • بررسی جامع ابعاد فنی و کاربردی توسط تحریریه ماگ بیت.
  • پیش‌بینی اثرات کوتاه‌مدت و بلندمدت بر اکوسیستم فناوری.

فرسودگی کانتینرهای سنتی؛ چرا ایمیج‌های لینوکسی برای لبه شبکه بیش از حد سنگین هستند؟

کانتینرهای داکر و استانداردهای OCI برای بیش از یک دهه شالوده اصلی استقرار نرم‌افزارهای مدرن ابری را تشکیل داده‌اند. با این حال، انتقال این معماری به لبه شبکه (Edge Computing) و توابع سرورلس مقیاس‌پذیر امروزه با چالش‌های بنیادین مواجه شد. حتی کوچک‌ترین کانتینرهای بهینه‌شده آلپاین لینوکس نیازمند ده‌ها مگابایت حافظه، فضاهای نام هسته (Namespaces)، گروه‌های کنترل (cgroups) و لایه‌های فایل‌سیستم مجازی هستند.

این ساختار سنگین باعث بروز مشکل بدنام «شروع سرد» (Cold Start) در حدود ۱۰۰ الی ۵۰۰ میلی‌ثانیه می‌شد؛ تأخیری که برای تعاملات لحظه‌ای هوش مصنوعی و تراکنش‌های بانکی فاجعه‌بار است. همان‌طور که در واکاوی انقلاب محیط‌های توسعه گذرا با Nix و MicroVM امروزه تشریح گردید، هرچند میکروماشین‌های مجازی زمان راه‌اندازی را کاهش دادند، اما همچنان سربار یک هسته کامل سیستم‌عامل را بر دوش سرور تحمیل می‌کردند.

پاسخ صنعت فناوری امروزه تکامل وب‌اسمبلی از یک ابزار اجرای کد درون مرورگر به یک استاندارد همه‌منظوره رایانش ابری تحت عنوان مدل قطعات Wasm (Component Model) بود؛ فناوری نوینی که کانتینرها را از هسته لینوکس جدا ساخت.

کالبدشکافی WASI 0.2 و استاندارد اینترفیس قطعات (WIT)

جهش تاریخی وب‌اسمبلی امروزه مدیون تثبیت استاندارد واسط سیستمی WASI 0.2 و ابزار واسط توصیف قطعات (WebAssembly Interface Type - WIT) است. در استانداردهای پیشین Wasm، کدها تنها قادر به تبادل مقادیر ابتدایی عددی ۳۲ و ۶۴ بیتی بودند و هرگونه ارسال ساختار داده پیچیده مانند رشته‌ها، آرایه‌ها یا جیسون‌ها نیازمند کپی پرهزینه بایت‌ها در حافظه اشتراکی و مدیریت دستی پوینترها بود.

مدل قطعات این محدودیت را با ایجاد نوع داده‌های درجه اول غنی در مرز قطعات برطرف ساخته است. یک کامپوننت نوشته‌شده با زبان Rust می‌تواند بدون کوچک‌ترین سربار و در قالب فراخوانی مستقیم توابع، شیء خروجی خود را به کامپوننتی نوشته‌شده به پایتون، Go یا C++ تحویل دهد. ران‌تایم‌های مدرن نظیر Wasmtime و Wasmer این ادغام چندزبانه را با کامپایل کدهای بایت‌کد به کد ماشین در کسری از میلی‌ثانیه به انجام می‌رسانند.

همان‌گونه که در پژوهش پایگاه‌های داده تعبیه‌شده توزیع‌شده با Wasm و SQLite امروزه اشاره گردید، استقرار این ماژول‌ها در کنار لایه‌های ذخیره‌سازی محلی، امکان پردازش داده‌ها را با تأخیر نزدیک به صفر مطلق فراهم می‌سازد.

دیاگرام مقایسه‌ای سربار اجرای کانتینرهای سنتی با جعبه‌های شنی سبک Wasm Component Model امروزه
معماری سندباکس بدون هسته Wasm: اتصال اینترفیس‌های واسط WIT میان زبان‌های سطح پایین بدون کپی حافظه، تضمین ایزولاسیون مطلق حافظه و پاسخ‌دهی به رویدادها در زمان کمتر از ۵ میکروثانیه

ایزولاسیون بر پایه قابلیت (Capability-Based Security) و ایمنی حافظه نانومتری

در کانتینرهای سنتی لینوکس، فرآیندی که بتواند از ایزولاسیون فرار کند بالقوه می‌تواند به سوپرویژن کل هسته سیستم‌عامل دسترسی یابد؛ خطری دائمی که در آسیب‌پذیری‌های امنیتی متعدد کرنل مشاهده شده است. مدل قطعات وب‌اسمبلی رویکردی کاملاً متضاد موسوم به امنیت مبتنی بر قابلیت (Capability-Based Security) اتخاذ می‌کند.

در این مدل، هر کامپوننت در یک جعبه شنی حافظه خطی کاملاً ایزوله و مستقل اجرا می‌شود. قطعه به طور پیش‌فرض به هیچ چیز دسترسی ندارد؛ نه سوکت شبکه، نه فایل‌سیستم، نه ساعت سیستم و نه متغیرهای محیطی. هاست ابری صراحتاً تعیین می‌کند که کدام قابلیت‌ها در زمان نمونه‌سازی (Instantiation) به کامپوننت تزریق شوند. اگر یک مهاجم بتواند کد درون ماژول را اکسپلویت کند، در یک فضای ایزوله چند کیلوبایتی محبوس مانده و هیچ درگاهی برای نفوذ به لایه‌های دیگر نخواهد داشت.

همان‌طور که در تحلیل استانداردهای رمزنگاری پساکوانتومی و پروتکل‌های ترکیبی KEM امروزه مطرح شد، معماری‌های مدرن امنیتی بر اصل عدم اعتماد مطلق استوارند و سندباکس‌های Wasm تجسم عینی این اصل در لایه اجرا هستند.

سرورلس نسل سوم؛ چگالی ده‌هزار برابری اجرای سرویس‌ها در یک نود سخت‌افزاری

شگفتی اصلی مدل قطعات Wasm در مقیاس‌پذیری زیرساختی هویدا می‌شود. زمان راه‌اندازی یک کامپوننت Wasm امروزه کمتر از ۵ میکروثانیه است و حافظه رم پایه آن تنها به چند ده کیلوبایت می‌رسد. این بدان معناست که یک سرور استاندارد ۶۴ هسته‌ای با ۱۲۸ گیگابایت رم می‌تواند به جای میزبانی از چندصد کانتینر داکر، به طور همزمان صدها هزار سندباکس Wasm مستقل را آماده‌به‌خدمت نگه دارد.

با هر درخواست ورودی وب، ران‌تایم در کسری از میکروثانیه کامپوننت را بیدار کرده، درخواست را پردازش می‌کند و حافظه را بی‌درنگ آزاد می‌سازد. پلتفرم‌های کلود پیشرو جهان گزارش داده‌اند که جایگزینی کانتینرهای نودجی‌اس و پایتون با کامپوننت‌های بهینه‌شده Wasm، هزینه صورت‌حساب سرورهای لبه را تا ۷۰ درصد و مصرف انرژی دیتاسنترها را تا ۸۵ درصد کاهش داده است.

در فرجام سخن، انقلاب Wasm Component Model امروزه صرفاً یک فریم‌ورک نرم‌افزاری جدید نیست، بلکه نقطه پایان پارادایم کانتینرهای سنگین لینوکسی و آغاز دورانی است که در آن کدها با حداکثر سرعت، حداقل مصرف انرژی و بالاترین سطح ایمنی ریاضی بر فراز ابر به پرواز درمی‌آیند.

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

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

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

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

مشاهده همه