همه‌ جا سرورلس بودن! بررسی باحال کارایی وب‌اسمبلی (Wasm) توی مرورگر، اج و کلاود

Fall Back

بیا یه کم درباره «وب‌اسمبلی» یا همون Wasm حرف بزنیم؛ یه تکنولوژی باحاله که کدهای کامپیوتری رو توی یه فرمت باینری در میاره و باعث میشه بتونی کلی برنامه رو روی پلتفرم‌های مختلف و با سرعت نزدیک به نیتیو (یعنی تقریبا مثل برنامه‌هایی که مستقیم برای اون سیستم نوشته شدن) اجرا کنی. بعدم همه چی رو توی یه محیط امن و قرنطینه شده (بهش میگن sandbox) اجرا میکنه. خلاصه خیلی خفن شده برای سرورلس بودن! منظور از serverless اینه که لازم نیست همش نگران سرورها و سخت‌افزار و اینا باشی، خود سیستم اتومات کارها رو برات انجام میده؛ تو فقط برنامه‌تو می‌نویسی و بقیشو می‌ذاری به عهده این پلتفرم‌ها.

حالا بریم به سراغ اصل ماجرا که تو این مقاله درباره‌ش صحبت شده: نویسنده‌ها اومدن یه بررسی کلی (و واقعا کاربردی) انجام دادن روی اجرا شدن یه گردش‌کار Wasm که از مرورگر تا Edge (یعنی همون سرورهایی که نزدیک کاربر تو دیتاسنترهای محلی هستن) و Cloud (ابر، همون سرورهای بزرگ و سرتاسری) کار میکنه. هدفشون هم این بود که ببینن کارآیی Wasm توی این سه محیط چجوریه و چی بهتر عمل میکنه.

یه نکته باحال اینه که تو مرورگر، اجرای Wasm توی Web Worker انجام میشه. حالا Web Worker رو اگه نمیشناسی، یه قابلیت توی مرورگره که کارا رو به شکل موازی انجام میده تا رابط کاربری گیر نکنه و قشنگ روان بمونه! ولی روی Edge و Cloud یه چیز به اسم HTTP Shim استفاده میکنن که اطلاعات (به صورت stream) می‌فرسته به Wasm runtime تا اجرا بشه.

معیارهایی که بررسی کردن کلیدی و مهم بودن؛ از جمله:

  • زمان تاخیر راه‌اندازی (Startup latency): یعنی اینکه از لحظه‌ای که برنامه رو اجرا می‌کنی چقدر طول می‌کشه تا واقعا شروع به کار کنه. تو دنیای تکنولوژی بهش cold-start (شروع سرد) و warm-start (شروع گرم) هم میگن؛ سرد یعنی اولین بار اجرا، گرم یعنی دفعات بعد.
  • تاخیر هر مرحله و مدت کل جریان‌کار (Workflow makespan): یعنی کل زمان اجرا از اول تا آخر.
  • توان عملیاتی (Throughput): یعنی تعداد کارهایی که در یک بازه زمانی انجام میشه.
  • استفاده از CPU و حافظه: اینکه چقدر از منابع سخت‌افزاری مصرف میشه.

یافته‌های جالبی هم داشتن:

  1. کامپایل قبل از اجرا (AOT یا Ahead-of-Time compilation) و وارمینگ (Instance Warming) باعث میشه برنامه‌ها خیلی زودتر اجرا بشن و اون تاخیر اولیه کلی میاد پایین. توضیح AOT: این روش بر خلاف JIT (Just-in-Time compilation)، برنامه رو از قبل کامپایل می‌کنه و بعد اجرا میکنه، واسه همین سریع‌تر بالا میاد.
  2. اگه اطلاعات ورودی برنامه کوچیک باشه (مثلاً یه سری دیتاهای ریز)، اجرای Wasm تو مرورگرها واقعاً رقابت‌پذیر و سریع میشه. دلیلشم اینه که همه چی تو حافظه ذخیره و رد و بدل میشه و لازم نیست هی داده‌ها رو اینور اونور بفرستن.
  3. اما وقتی داده‌ها زیاد یا حجیم میشه، دیگه برنامه بخش زیادی از منابع پردازشی (CPU) و حافظه رو لازم داره. اینجا اجرای با AOT روی Edge و Cloud خیلی بهتر جواب میده و مرورگرها دیگه نمی‌تونن رقابت کنن. یعنی اگه کارت سنگین باشه، برو سراغ اج و کلاد، مرورگر کم میاره!

در کل اینجوریه که Wasm ابزار خفنی برای اجرای سرورلس هست و این مقاله قشنگ نشون داد تو هر محیطی نقاط ضعف و قوت خودشو داره. اگه برنامه‌ت سبک و کم‌داده‌ست، راحت تو مرورگر می‌تونی بزنی و حالشو ببری؛ اما برای بارهای سنگین‌تر بهتره بری سراغ Edge یا Cloud (همون سرورهای بزرگتر و قوی‌تر).

خلاصه این‌جوری فهمیدی که تکنولوژی Wasm چقدر می‌تونه توی اجرای سرورلس و کارای سریع و امن موثر باشه و باید بسته به کاری که داری محیط درست رو انتخاب کنی. راحت بگو: سرورلس همه‌ جا با Wasm!

منبع: +