چه در سرور و چه در لبه، Wasm به شما امکان می دهد منطق سفارشی ایجاد کنید که بسیار نزدیکتر از قبل به داده ها اجرا می شود. و شما می توانید آن را ایمن، کارآمد و با انعطاف پذیری بیشتر انجام دهید.
Wasm ممکن است مهمترین فناوری نوظهوری باشد که هرگز نام آن را نشنیدهاید. خوب، شاید شما در مورد آن شنیده باشید. مهم است!
خلاصه زبان WebAssembly ، Wasm برای وب توسعه داده شد. با این حال، فناوری Wasm فراتر از مرورگر وب گسترش یافته است. اکنون سازمان ها شروع به اجرای Wasm در سمت سرور کرده اند. به عنوان مثال، شرکت من، SingleStore، از آن در پایگاه داده ما استفاده می کند.
برخی فکر میکنند Wasm جایگزین فناوری کانتینر میشود. و جاوا اسکریپت همه جا حاضر.
چه باور داشته باشید یا نه، Wasm به وضوح بر رایانش ابری تأثیر می گذارد. چرا و چگونه؟ بیایید راه ها را بشماریم.
Wasm چند پلتفرمی است: ایمنتر و سادهتر کردن اجزای ابری با هم
مردم از انواع مختلف زبان ها برای نوشتن نرم افزار استفاده می کنند. تعامل آن زبان ها با یکدیگر دشوار است. Wasm چارچوبی را ارائه می دهد که در آن می توانید به هر زبانی که می خواهید بنویسید. سپس یک قالب ماشین شبیه سازی شده معمولی تولید می کند.
این قالب به اجزای نوشته شده به زبانهای مختلف – مانند Rust، C/C++ و Go اجازه میدهد تا با یکدیگر صحبت کنند. Wasm همچنین این قابلیت را برای سیستمهای سمت سرور مانند پایگاههای داده فراهم میکند تا اجزای زبانهای مختلف را بدون نیاز به دانستن یا اهمیت دادن به نحوه تولید آن ماژول جاسازی کنند.
Wasm را به عنوان یک قالب افزونه جهانی در نظر بگیرید. بگویید که می خواهید قابلیت های سیستم خود را با یک جزء توسعه یافته توسط شخص ثالث افزایش دهید. Wasm به شما امکان می دهد کامپوننت جدید را بدون خطراتی که معمولاً با یکپارچه سازی افزونه ها همراه است وارد سیستم خود کنید. به عنوان مثال، یک جزء خارجی ممکن است سیستم را خراب کند یا به روشی غیرمنتظره کار کند. Wasm این مشکلات را با ایجاد یک چارچوب بسیار ایمن برای سیستمها و اجزای متفاوت برای تعامل با یکدیگر کاهش میدهد.
ابر محرک بزرگ گسترش Wasm است. Wasm یک تطابق خوب برای ابر است زیرا مجازی سازی شده است و می تواند در هر محیطی که از زمان اجرا Wasm پشتیبانی می کند کار کند. همچنین، سیستمهای ابری معمولاً از سرویسهای زیادی تشکیل شدهاند که به روشهای مختلف به هم متصل شدهاند. که می تواند پیچیده شود. اما هرچه بیشتر بتوانید محیط ابری خود را ساده کنید، برای جنبه های مختلف سیستم های ابری آسان تر است که به درستی با هم کار کنند.
Wasm ایمن است: کاهش ریسک با رویکرد اجرای کد و نمایش توابع
در اکثر زمانهای اجرا زبان، توابع دارای آدرس هستند. آن آدرس ها نقاط قابل اجرا در حافظه هستند. اگر فقط به عنوان یک دسته از بایت ها به حافظه نگاه می کنید، ممکن است یک تابع از بقیه حافظه قابل تشخیص نباشد. این دری را برای افراد باز می کند تا تابع را پیدا کنند و کد را به آن تزریق کنند یا یک تابع را به روشی ممتاز فراخوانی کنند تا تابع کاری را انجام دهد که قرار نیست انجام دهد. طراحی Wasm این مشکلات را برطرف می کند.
Wasm توابع را به گونه ای نشان می دهد که قابل بهره برداری نیست. همچنین کد را در جعبه شنی اجرا می کند که مشکلات امنیتی رایج مرتبط با اجرای کدهای نامعتبر را کاهش می دهد. از آنجایی که Wasm حافظه برنامه را در یک منطقه امن محصور می کند، هیچ چیز نمی تواند از آن خارج شود و به مکان های دیگری که ممکن است بر میزبانی که برنامه را اجرا می کند تأثیر بگذارد یا امنیت را به خطر بیندازد، دسترسی پیدا کند.
و با مدل امنیتی مبتنی بر قابلیت Wasm، میزبان ها کنترل کاملی بر انواع عملیات ممتاز برنامه Wasm دارند. به عنوان مثال، اگر دسترسی به فایل الزامی است، هاست ها باید به طور صریح به دایرکتوری ها دسترسی داشته باشند.
Wasm سریع است: حذف مواردی که مورد نیاز نیست و امکان سرعت و کارایی بیشتر
واضح است که Wasm اولین فناوری نیست که مردم برای کنار هم قرار دادن چیزها به روشی ایمن تر و ساده تر استفاده کرده اند. با این حال، Wasm بسیار سریعتر از برخی از آن فناوریهای دیگر است.
کامپایلرها میتوانند برنامههای Wasm را با استفاده از قسمت پشتی LLVM، کامپایل کردن به نمایش متوسط LLVM تولید کنند. LLVM یا ماشین مجازی سطح پایین، یک ماشین استخراج شده است که بسیاری از زبانها قبلاً به آن کامپایل میکنند. در نتیجه این رویکرد، و به لطف سالها تلاش جامعه پیرامون پروژه LLVM، برنامههای Wasm را میتوان در کد ماشین بسیار بهینهسازی شده کامپایل کرد.
در SingleStore، ما برنامه فضایی Wasm را ایجاد کردیم—یک جهان بلادرنگ مجازی در یک پایگاه داده —برای نشان دادن سرعت و وزن سبک Wasm. در این شبیهسازی، سفینههای فضایی از استراتژیهای مختلفی برای تجدید انرژی و مبارزه با فضاپیماهای دیگر در یک «جهان» وسیع و بیدرنگ استفاده میکنند. این شامل حجم وسیعی از داده است، با بیش از یک میلیون کشتی در سیستم و نزدیک به سه میلیون به روز رسانی پایگاه داده در هر ثانیه.
بهطور سنتی، ادغام آن دادهها و مونتاژ آنها در یک لایه میانی مستلزم آن است که دادههای زیادی را به لایه میانی بکشید. این می تواند مقدار زیادی تاخیر ایجاد کند و برای دستیابی به یک پاسخ بلادرنگ نیاز به ذخیره سازی پیچیده ای دارد. به جای اتخاذ این رویکرد، استراتژی هر سفینه فضایی در Wasm نوشته شده و به عنوان UDF در پایگاه داده بارگذاری شده است. در هر ثانیه، هر یک از عملکردهای استراتژی سفینه فضایی برای تصمیم گیری در مورد حرکت بعدی خود فراخوانی می شود.
هیچ چیزی در قسمت جلویی وجود ندارد – یک برنامه جاوا اسکریپت که در مرورگر اجرا می شود – که این استراتژی ها یا هر چیزی را در مورد وضعیت جهان درک کند. وظیفه آن صرفاً صدور پرس و جوهای SQL به طور مستقیم به پایگاه داده و ارائه گرافیکی اطلاعاتی است که برگردانده می شود. پایگاه داده همه اطلاعات وضعیت را حفظ میکند، و چون Wasm اجازه داده است که محاسبات درست در کنار دادهها قرار گیرد، بسیار سریعتر است. حتی نیازی به سطح میانی وجود نداشت.
اما Wasm همه سرگرمی و بازی نیست. می توانید از آن برای رسیدگی به برنامه های بیشمار دیگر و موارد استفاده استفاده کنید. به عنوان مثال، می توانید از Wasm برای تجزیه و تحلیل احساسات استفاده کنید. نوع منطق پیچیده مورد نیاز برای تحلیل احساسات چیزی نیست که بتوان به راحتی در گویش SQL پایگاه داده بیان کرد. بنابراین، برای انجام این کار، معمولاً باید آن را به زبانی پیچیدهتر پیادهسازی کنید و سپس با دانلود هر ردیف داده، دادهها را به آن بیاورید. سپس باید رتبه بندی تحلیل احساسات را به پایگاه داده برگردانید. این به معنای یک رفت و برگشت برای هر ردیف در پایگاه داده ای است که استفاده می کنید. اگر میلیون ها ردیف دارید، ترافیک شبکه زیادی ایجاد می کند. اما با روشی که SingleStore Wasm را یکپارچه کرده است، شما در حال حاضر در پایگاه داده هستید، بنابراین این هزینه را متحمل نمی شوید.
Wasm همیشه بهتر می شود: ایجاد استانداردها آن را حتی قدرتمندتر می کند
Wasm در حال حاضر بسیار توانایی دارد. و با فناوریها و استانداردهای جدیدی که در راه است، Wasm به شما اجازه میدهد کارهای بیشتری انجام دهید.
به عنوان مثال، گروه انجمن W3C WebAssembly، با کمک اعضای سازمان هایی مانند اتحاد Bytecode (که SingleStore عضو آن است)، در حال حاضر روی استانداردسازی رابط سیستم WebAssembly (WASI) کار می کند. WASI مجموعه استانداردی از APIها و سرویسها را ارائه میکند که میتوانند زمانی که ماژولهای Wasm روی سرور اجرا میشوند، استفاده شوند. بسیاری از پروپوزالهای استاندارد مانند جمعآوری زباله، ورودی/خروجی شبکه و رشتهسازی هنوز در حال انجام هستند، بنابراین همیشه نمیتوانید کارهایی را که در سایر زبانهای برنامهنویسی انجام میدهید به Wasm ترسیم کنید. اما در نهایت، WASI هدف خود را ارائه یک استاندارد کامل است که به دستیابی به آن کمک می کند. از بسیاری جهات، اهداف WASI شبیه POSIX است.
Wasm همانطور که در حال حاضر وجود دارد همچنین به توانایی پیوند یا برقراری ارتباط با سایر ماژولهای Wasm نمیپردازد. اما جامعه Wasm، با حمایت اعضای صنعت محاسبات، در حال کار بر روی ایجاد چیزی به نام مدل جزء است. هدف از این کار ایجاد یک زیرساخت پیوند پویا در اطراف ماژولهای Wasm است که نحوه راهاندازی و برقراری ارتباط مؤلفهها با یکدیگر را تعریف میکند (شبیه به مدل فرآیند سنتی سیستمعامل).
علاوه بر این، یک نحو استاندارد IDL در حال ظهور، به نام WIT (برای انواع رابط WebAssembly)، به افراد این امکان را میدهد که واسطهای Wasm خود را به شیوهای زبان شناس توصیف کنند. در نتیجه، مولدهای اتصال میتوانند آنچه را در IDL است دریافت کنند و کدی را کامپایل کنند که به میزبان Wasm و مهمان اجازه میدهد تا دادهها را به روشی رایج به عقب و جلو ارتباط برقرار کنند.
Wasm آینده است: ارائه راهی سریع تر، ایمن تر و کارآمدتر برای گرد هم آوردن چیزها
Wasm، اگرچه سبک تر است، ممکن است به این زودی ها جایگزین ظروف نشود. اما میتوانید انتظار داشته باشید که Wasm بخشی از بسیاری از نرمافزارهای آینده شود.
چه در سرور و چه در لبه، Wasm به شما امکان میدهد منطق سفارشی ایجاد کنید که بسیار نزدیکتر از قبل به دادهها اجرا میشود—و میتوانید آن را ایمن، کارآمد و با انعطافپذیری بیشتر انجام دهید.
و اکنون با SingleStore، میتوانید برنامههای موجود خود را در Wasm کامپایل کنید، آنها را به پایگاه داده فشار دهید و در آنجا اجرا کنید. این بدان معناست که ممکن است مجبور نباشید آن کد را بازنویسی کنید و آن را در جایی قرار دهید که دادهها نیست. با فناوری Wasm، میتوانید بهترینهای هر دو دنیا را داشته باشید.
Peter Vetere به مدت ۲۵ سال در حال توسعه نرم افزار بوده است. او در حال حاضر برای SingleStore—سازنده SingleStoreDB، یک پایگاه داده SQL توزیع شده در زمان واقعی که برای برنامه های کاربردی با داده فشرده طراحی شده است – به عنوان عضوی از تیم LaunchPad، جایی که او راه هایی را برای آوردن ایده های جدید نوآورانه به پایگاه داده تحقیق می کند.
—
انجمن فناوری جدید مکانی را برای کاوش و بحث در مورد فناوری سازمانی نوظهور در عمق و وسعت بی سابقه ای فراهم می کند. انتخاب ذهنی است، بر اساس انتخاب ما از فناوری هایی که معتقدیم مهم هستند و برای خوانندگان InfoWorld بیشترین علاقه را دارند. InfoWorld وثیقه بازاریابی را برای انتشار نمی پذیرد و حق ویرایش تمام محتوای ارائه شده را برای خود محفوظ می دارد. همه سوالات را به newtechforum@infoworld.com ارسال کنید.
پست های مرتبط
چرا Wasm آینده محاسبات ابری است؟
چرا Wasm آینده محاسبات ابری است؟
چرا Wasm آینده محاسبات ابری است؟