۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

SpiderLightning: قابل حمل کردن برنامه های ابری WebAssembly

درون یکی از فناوری‌هایی است که پشتیبانی WebAssembly سرویس Azure Kubernetes را تقویت می‌کند و وعده می‌دهد که برنامه‌ها را در ابرها و میزبان‌های دیگر قابل حمل کند.

درون یکی از فناوری‌هایی است که پشتیبانی WebAssembly سرویس Azure Kubernetes را تقویت می‌کند و وعده می‌دهد که برنامه‌ها را در ابرها و میزبان‌های دیگر قابل حمل کند.

ترکیب WebAssembly و Kubernetes پیشرفت جالبی است. در جایی که کانتینرهای سنتی می‌توانند بزرگ باشند و مستقر شوند، حتی با استفاده از توزیع‌های اختصاصی لینوکس اختصاصی باریک، برنامه‌های WebAssembly به سادگی نیاز به یک زمان اجرا استاندارد دارند و از آنجایی که فایل‌های باینری اختصاصی هستند، به منابع سیستم بسیار کمتری نیاز دارند. این آنها را به جایگزینی جذاب برای کانتینرها برای برنامه‌هایی تبدیل می‌کند که باید به سرعت مقیاس شوند یا باید در محیط‌های محدود کار کنند.

پشتیبانی مایکروسافت از WebAssembly در سرویس Azure Kubernetes خود یک رای اعتماد بزرگ به این فناوری است، و پشتیبانی اخیر آن از runwasi containerd shim با استفاده از Kubernetes برای مدیریت مستقیم کد WebAssembly، استقرار را ساده می کند. . این پشتیبانی مبتنی بر چارچوب‌های برنامه کاربردی WebAssembly جدید است که به توسعه‌دهندگان کمک می‌کند از WebAssembly استفاده کنند و با زمان اجرا Wasmtime برای رابط سیستم WebAssembly بدون مرورگر (WASI) کار کنند.

معرفی SpiderLightning

یکی از این فریم‌ورک‌ها زیرمجموعه مایکروسافت Deis Labs SpiderLightning است. SpiderLightning که به طور خاص برای ساخت برنامه های کاربردی توزیع شده طراحی شده و به نام نوعی رعد و برق که می تواند صدها مایل در میان ابرها حرکت کند، نامگذاری شده است، SpiderLightning پیاده سازی مجموعه ای از رابط های کاربردی رایج برای برنامه های کاربردی WASI است که از زبان تعریف رابط WIT استفاده می کند.

همبستگی قوی بین طراحی WebAssembly (و به طور خاص تر، WASI) و نیازهای توسعه دهندگانی که برنامه های کاربردی توزیع شده بومی ابری ایجاد می کنند وجود دارد. تفاوت‌های بین پلتفرم‌های مختلف فروشنده ابری را دور می‌زند، اما نه به عنوان راهی برای جلوگیری از قفل شدن و فعال کردن قابلیت حمل. در عوض، بر این تمرکز می‌کند که چگونه می‌توانیم یک پلت‌فرم چند ابری واقعی را ارائه دهیم که می‌تواند از سخت‌افزارهای خارج از قفسه تا هایپراسکیل‌کننده‌ها، با استفاده از همه چیز، از سخت‌افزار Raspberry Pi گرفته تا آخرین سرورهای چند هسته‌ای، چند پردازنده‌ای از Intel، AMD، یا Arm برسد. .

WASI بسیاری از قطعات مورد نیاز برای ارائه این چشم انداز را به ما می دهد، البته به شکلی نسبتاً ابتدایی. این تعجب آور نیست؛ ما هنوز در روزهای اولیه یک پلتفرم جدید هستیم و نباید انتظار داشته باشیم که بلوغ چیزی بیش از ۲۰ سال، مانند JVM یا .NET CLR داشته باشد. با این وجود، واضح است که طراحان پلتفرم این موضوع را در نظر گرفته‌اند و ابزارهای لازم را برای تسریع در توسعه برنامه‌های افزودنی پلتفرم فراهم می‌کنند.

استقرار چند ابری نباید چندان پیچیده باشد

توسعه WASI با WIT

یک عنصر کلیدی این توسعه پذیری، WebAssembly Component Model است. که توسط گروه کاری WebAssembly به عنوان معادل Wasm یک مدل فرآیند سیستم عامل تعریف شده است، این پایه و اساس نحوه پیاده سازی واسی رابط های خود است. یک عنصر کلیدی در هر رویکرد سطح پایین مانند این است. زبان تعریف رابط، که راهی برای مشخص کردن نحوه تعامل رابط‌ها با کد فراهم می‌کند. برای Wasm، و به ویژه برای مدل کامپوننت، IDL استاندارد wit است، که روشی مختصر و قابل خواندن برای انسان برای تعریف رابط‌هایی که به کد WebAssembly گسترش یافته اند.

برای استفاده از WASI برای ساخت برنامه‌های کاربردی توزیع‌شده، به مجموعه‌ای از برنامه‌های افزودنی نیاز داریم که به ما امکان می‌دهد خدمات ارائه‌دهنده خاص را به عنوان رابط انتزاعی کنیم. به‌جای استفاده از APIهای جداگانه برای S3 در AWS و ذخیره‌سازی Blob در Azure و کد مدیریت آنها، می‌توانیم یک مؤلفه ذخیره‌سازی واحد داشته باشیم که مجموعه مشترکی از اینترفیس‌ها را بر روی همه پلتفرم‌ها ارائه می‌کند، با سرویس مدیریت نمونه WASI. پیاده سازی های خاص.

این جایی است که SpiderLightning وارد می‌شود، با مجموعه‌ای از اینترفیس‌هایی که پیاده‌سازی می‌کنند بسیاری از قابلیت های رایج برنامه های کاربردی توزیع شده. می توانید کدی بنویسید که با این رابط ها کار کند و مطمئن شوید که قابل حمل است. هیچ نیازی به نگرانی در مورد زیرساخت وجود ندارد و می توانید به سادگی کدی را بنویسید که منطق کسب و کار شما را پیاده سازی می کند. Deis Labs SpiderLightning را به‌عنوان «مجموعه‌ای از قطعات لگو» با اجزای سازنده توصیف می‌کند که ویژگی‌هایی مانند فروشگاه‌های ارزش کلید، APIهای gRPC، صف‌های پیام و موارد دیگر را ارائه می‌کنند.

داشتن مجموعه ای از تعاریف WIT تنها شروع است. برای ایجاد یک محیط واقعاً قابل حمل، به پیاده سازی نیاز داریم که حول API ها و سرویس های ابری رایج طراحی شده باشد. Deis یک چارچوب اثبات مفهوم SpiderLightning به نام slight را پیاده سازی کرده است که بر روی در بالای محیط اجرا آشنا wasmtime WASI.

IaaS، PaaS، درآمد اکوسیستم ابر عمومی را در سه ماهه اول به 126 میلیارد دلار رساند

شروع به کار با اندک

مانند بسیاری از بخش‌های زنجیره ابزار توسعه بومی ابری، slight نیز یک ابزار CLI است. می توانید آن را با اجرای یک اسکریپت نصب میزبان GitHub بر روی یک سیستم مبتنی بر یونیکس نصب کنید (توسعه دهندگان ویندوز می توانند از زیرسیستم ویندوز برای لینوکس استفاده کنند). اسکریپت یک فایل tar را دانلود می کند که حاوی یک باینری کوچک است، سپس CLI را استخراج و نصب می کند.

این ابزار یک برنامه WASI را ایجاد و پر می کند. تنها کاری که باید انجام دهید این است که نسخه رابط های SpiderLightning را که استفاده می کند تعریف کنید. می توانید از Rust یا C استفاده کنید و مطمئن شوید که اهداف کامپایلر مناسب را نصب کرده اید. هنگامی که برنامه شما کامپایل شد، می توانید کد را با استفاده از دستور جزئی اجرا کنید، فایل Wasm کامپایل شده را برای برنامه خود هدف قرار دهید و از پیکربندی SpiderLightning برای نگاشت رابط ها به پیاده سازی ها استفاده کنید.

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

نتیجه کد قابل حملی را ارائه می‌کند که روی منابع مصرف‌کننده Azure AKS اجرا می‌شود، و در عین حال به سخت‌افزار لبه‌ای و به مرکز داده شما کاهش می‌یابد. همچنین به شما کمک می کند تا با استفاده از پیکربندی جزئی برای نگهداری این داده ها و مدیریت اتصالات، اطمینان حاصل کنید که اطلاعات حساب خارج از مخزن کد شما نگهداری می شود.

بررسی LlamaIndex: برنامه های کاربردی LLM با زمینه آسان

برای این کار، برنامه شما باید تعریف WIT SpiderLightning را برای ویژگی مورد استفاده شما وارد کند. این توضیح می‌دهد که کد شما چگونه باید با رابط کار کند: چگونه سرویس را فراخوانی می‌کند، دستورات پشتیبانی‌شده، چه محموله‌هایی ارسال می‌شود، و چه بازدهی انتظار می‌رود. سرویس واقعی استفاده شده توسط زمان اجرا کمی مدیریت می شود و به شما این امکان را می دهد که به جای ویژگی های کار با Azure یا هر ابر پشتیبانی شده دیگری، روی مشکلاتی که کدتان حل می کند تمرکز کنید.

ایجاد قابلیت‌های جدید SpiderLightning

در حال حاضر SpiderLightning با پشتیبانی از زیرمجموعه‌ای از قابلیت‌های برنامه‌ریزی‌شده و حتی پس از آن، تنها با برخی از خدمات پیشنهادی، بسیار در حال پیشرفت است. فروشگاه key-value در حال حاضر بالغ‌ترین فروشگاه است، همراه با پشتیبانی پیام‌رسانی آن. این یک پروژه منبع باز است و به گونه ای طراحی شده است که قابل تمدید باشد، با فرآیند ایجاد وابستگی های جدید برای سرویس های جدید. با پشتیبانی AKS، انگیزه‌ای برای مایکروسافت وجود دارد تا قابلیت‌های خود را به پلتفرم اضافه کند، و یک نقشه راه تقریبی نشان می‌دهد که این خدمات و مجموعه‌ای از خدمات AWS برنامه‌ریزی شده‌اند.

ما هنوز در روزهای اولیه استفاده از WebAssembly برای ساخت برنامه های کاربردی توزیع شده هستیم، اما ابزارهایی مانند SpiderLightning بسیار امیدوار کننده هستند. با ارائه سطحی از انتزاع از خدمات پلتفرم، این یک راه جذاب برای ساخت برنامه های کاربردی متقابل ابری قابل حمل است که در مقیاس بالا و پایین و همچنین خارج می شوند. تماشای تکامل ابزارها و چارچوب‌های WASI مانند SpiderLightning هنگام تبادل ایده‌ها و مفاهیم جالب خواهد بود. هدف جامعه WebAssembly به وضوح ارائه مجموعه استانداردی از ابزارها برای پشتیبانی از کدهای قابل حمل است که بتواند با طیف وسیعی از خدمات میزبان تعامل داشته باشد. SpiderLightning ممکن است اولین قدم در یک سفر طولانی باشد، اما به وضوح یک گام بلند و مطمئن است.