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

Techboy

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

نگاه اول: wasmCloud و Cosmonic

در اینجا اولین نگاهی است به پیش‌نمایش توسعه‌دهنده Cosmonic-یک WebAssembly PaaS با رابط کاربری ابری گرافیکی، شبکه قوی و CLI.

در اینجا اولین نگاهی است به پیش‌نمایش توسعه‌دهنده Cosmonic-یک WebAssembly PaaS با رابط کاربری ابری گرافیکی، شبکه قوی و CLI.

همانطور که احتمالاً تا به حال می دانید، WebAssembly یا wasm یک روش کارآمد، بین پلتفرمی و بین زبانی برای اجرای کد تقریباً در هر مکانی است، از جمله در مرورگر و سرور – حتی در پایگاه داده< /a>. Cosmonic یک پلتفرم تجاری به عنوان سرویس (PaaS) برای ماژول‌های wam است. این بر روی wasmCloud منبع باز ساخته شده است. این پیش‌نمایش فناوری با یک نمای کلی از wasm شروع می‌شود، سپس wasmCloud و Cosmonic را راه‌اندازی می‌کنیم و می‌بینیم با آنها چه کاری می‌توانیم انجام دهیم.

wam چیست؟

WebAssembly (wasm) یک “قالب دستورالعمل باینری برای ماشین مجازی مبتنی بر پشته” است. این یک هدف کامپایل قابل حمل برای زبان های برنامه نویسی از جمله C، C++، C#، Rust، Go، Java، PHP، Ruby، Swift، Python، Kotlin، Haskell و Lua است. زنگ اغلب زبان ترجیحی برای وام است. سه زبان مخصوص wam وجود دارد: AssemblyScript، Grain و Motoko. اهداف Wasm شامل مرورگرها (در حال حاضر Chrome، Firefox، Safari، و Edge)، Node.js، Deno، Wasmtime، Wasmer و wasm2c< /a>.

Wasm سعی می‌کند در حافظه کمی با سرعت اصلی اجرا شود. این برنامه در یک محیط اجرای امن با حافظه و جعبه ایمنی، حتی در وب اجرا می شود.

واسط سیستم WebAssembly (WASI) یک رابط سیستم مدولار برای WebAssembly است. Wasm یک مدل مؤلفه با مشخصات پیشنهادی W3C دارد. رابط دروازه WebAssembly (Wagi) یک پیاده سازی پیشنهادی از CGI برای wasm و WASI. Spin یک چارچوب چند زبانه برای برنامه‌های Wam است.

wasmCloud چیست؟

wasmCloud یک پلت فرم نرم افزار منبع باز متعلق به CNCF است که از wasm و NATS برای ساخت برنامه های کاربردی توزیع شده متشکل از واحدهای قابل حمل منطق تجاری WebAssembly به نام بازیگران. wasmCloud از TinyGo و Rust برای توسعه بازیگر پشتیبانی می کند. همچنین از ساخت پلتفرم‌ها پشتیبانی می‌کند که ارائه‌دهنده قابلیت هستند. wasmCloud شامل شبکه است، یک شبکه مش خودساز و خود ترمیم شونده با استفاده از NATS که توپولوژی یکپارچه و مسطح را ارائه می دهد. wasmCloud تقریباً در همه جا اجرا می شود: در ابر، در لبه، در مرورگر، در دستگاه های کوچک و غیره. زمان اجرا میزبان wasmCloud از Elixir/OTP و Rust استفاده می کند.

کار با React Server Components

بسیاری از committerها و نگهدارندگان wasmCloud برای Cosmonic (شرکت) کار می کنند. علاوه بر این، پوسته ابری wash wasmCloud با Cosmonic (محصول) کار می کند.

Cosmonic چیست؟

Cosmonic هم یک شرکت است و هم یک محصول. این محصول یک پلت فرم WebAssembly به عنوان سرویس (PaaS) است که بر روی wasmCloud ساخته شده و از بازیگران wasm استفاده می کند. Cosmonic یک رابط کاربری ابری گرافیکی برای طراحی برنامه‌ها، و پوسته خود، cosmo ارائه می‌دهد که مکمل wash و رابط کاربری گرافیکی wasmCloud است. ظاهراً هر چیزی که می‌سازید و در wasmCloud ساده کار می‌کند باید به طور خودکار در Cosmonic کار کند.

یک میزبان یک فرآیند زمان اجرا wasmCloud توزیع شده است که بازیگران و ارائه دهندگان قابلیت را مدیریت می کند. actor یک ماژول WebAssembly است که می‌تواند پیام‌ها را مدیریت کند و توابع را در ارائه‌دهندگان قابلیت فراخوانی کند. قابلیت یک انتزاع یا نمایش برخی از عملکردهای مورد نیاز برنامه شما است که بخشی از منطق اصلی کسب و کار در نظر گرفته نمی شود. ارائه‌دهنده قابلیت اجرای نمایشی است که توسط یک قرارداد قابلیت توصیف شده است. می‌تواند چندین ارائه‌دهنده در هر قابلیت با ویژگی‌های مختلف وجود داشته باشد.

یک پیوند یک ارتباط تعریف‌شده در زمان اجرا بین یک بازیگر و یک ارائه‌دهنده قابلیت است. پیوندها را می توان بدون نیاز به استقرار مجدد یا کامپایل مجدد تغییر داد.

یک صورت فلکی یک فضای شبکه مدیریت شده و ایزوله است که به بازیگران و ارائه دهندگان شما اجازه می دهد بدون توجه به موقعیت فیزیکی یا منطقی به طور ایمن با یکدیگر ارتباط برقرار کنند. در اصل، یک شبکه wasmCloud با مدیریت کیهانی. ابر صورت فلکی یک صورت فلکی بزرگتر است که از اتصال ایمن چندین محیط از طریق Cosmonic تشکیل شده است.

کرم چاله نقطه ورود به صورت فلکی شما است. توزیع OCI استانداردی برای ذخیره سازی، بازیابی و توزیع مصنوع است که توسط (به عنوان مثال) رجیستری کانتینر Azure و رجیستری مصنوع GitHub پیاده سازی شده است.

مقدمه Nuitka: راهی بهتر برای کامپایل و توزیع پایتون

نمای زیرساخت میزبان‌های مجازی در حال اجرا در صورت فلکی کیهانی شما را نشان می‌دهد. نمای منطقی روابط منطقی بین اجزای صورت فلکی کیهانی یا ابر صورت فلکی شما را نشان می‌دهد.

نصب و آزمایش wasmCloud

نصب wasmCloud بسته به سیستم شما متفاوت است. من از brew در M1 MacBook Pro خود استفاده کردم. به دلیل وابستگی ها، به ویژه کامپایلر Rust و مدیر بسته محموله، که ترجیح می دهم را انتخاب کنم، بیش از آنچه می خواستم نصب شد. از وب سایت Rust language با استفاده از rustup نصب کنید. خوشبختانه، یک brew uninstall rust ساده راه را برای نصب استاندارد rustup باز کرد. هنگام نصب زبان‌ها، TinyGo را نیز نصب کردم، زبان دیگری که برای توسعه بازیگر wasmCloud پشتیبانی می‌شود.

پس از نصب، از پوسته wash خواستم تا در مورد قابلیت‌های آن به من بگوید:


martinheller@Martins-M1-MBP ~ % wash --help
_________________________________________________________________________________
                               _____ _                 _    _____ _          _ _
                              / ____| |               | |  / ____| |        | | |
 __      ____ _ ___ _ __ ___ | |    | | ___  _   _  __| | | (___ | |__   ___| | |
 \ \ /\ / / _` / __| '_ ` _ \| |    | |/ _ \| | | |/ _` |  \___ \| '_ \ / _ \ | |
  \ V  V / (_| \__ \ | | | | | |____| | (_) | |_| | (_| |  ____) | | | |  __/ | |
   \_/\_/ \__,_|___/_| |_| |_|\_____|_|\___/ \__,_|\__,_| |_____/|_| |_|\___|_|_|
_________________________________________________________________________________

A single CLI to handle all of your wasmCloud tooling needs


Usage: wash [OPTIONS] <COMMAND>

Commands:
  app       Manage declarative applications and deployments (wadm) (experimental)
  build     Build (and sign) a wasmCloud actor, provider, or interface
  call      Invoke a wasmCloud actor
  claims    Generate and manage JWTs for wasmCloud actors
  ctl       Interact with a wasmCloud control interface
  ctx       Manage wasmCloud host configuration contexts
  down      Tear down a wasmCloud environment launched with wash up
  drain     Manage contents of local wasmCloud caches
  gen       Generate code from smithy IDL files
  keys      Utilities for generating and managing keys
  lint      Perform lint checks on smithy models
  new       Create a new project from template
  par       Create, inspect, and modify capability provider archive files
  reg       Interact with OCI compliant registries
  up        Bootstrap a wasmCloud environment
  validate  Perform validation checks on smithy models
  help      Print this message or the help of the given subcommand(s)

Options:
  -o, --output <OUTPUT>  Specify output format (text or json) [default: text]
  -h, --help             Print help information
  -V, --version          Print version information

سپس مطمئن شدم که می‌توانم یک wasmCloud را بیاورم:


martinheller@Martins-M1-MBP ~ % wash up
🏃 Running in interactive mode, your host is running at http://localhost:4000
🚪 Press `CTRL+c` at any time to exit
۱۷:۰۰:۲۰.۳۴۳ [info] Wrote configuration file host_config.json
۱۷:۰۰:۲۰.۳۴۴ [info] Wrote configuration file /Users/martinheller/.wash/host_config.json
۱۷:۰۰:۲۰.۳۴۴ [info] Connecting to control interface NATS without authentication
۱۷:۰۰:۲۰.۳۴۴ [info] Connecting to lattice rpc NATS without authentication
۱۷:۰۰:۲۰.۳۴۶ [info] Host NCZVXJWZAKMJVVBLGHTPEOVZFV4AW5VOKXMD7GWZ5OSF5YF2ECRZGXXH (gray-dawn-8348) started.
۱۷:۰۰:۲۰.۳۴۶ [info] Host issuer public key: CCXQKGKOAAVXUQ7MT2TQ57J4DBH67RURBKT6KEZVOHHZYPJKU6EOC3VZ
۱۷:۰۰:۲۰.۳۴۶ [info] Valid cluster signers: CCXQKGKOAAVXUQ7MT2TQ57J4DBH67RURBKT6KEZVOHHZYPJKU6EOC3VZ
۱۷:۰۰:۲۰.۳۵۱ [info] Started wasmCloud OTP Host Runtime
۱۷:۰۰:۲۰.۳۵۶ [info] Running WasmcloudHostWeb.Endpoint with cowboy 2.9.0 at 0.0.0.0:4000 (http)
۱۷:۰۰:۲۰.۳۵۷ [info] Access WasmcloudHostWeb.Endpoint at http://localhost:4000
۱۷:۰۰:۲۰.۴۵۳ [info] Lattice cache stream created or verified as existing (0 consumers).
۱۷:۰۰:۲۰.۴۵۳ [info] Attempting to create ephemeral consumer (cache loader)
۱۷:۰۰:۲۰.۴۵۵ [info] Created ephemeral consumer for lattice cache loader

زمانی که wamCloud در حال اجرا بود، وب سایت را در پورت ۴۰۰۰ در دستگاه محلی خود مشاهده کردم:

نحوه رسیدگی به خطاها در React

داشبورد محلی wasmCloud

شکل ۱. داشبورد محلی wasmCloud در پورت ۴۰۰۰ پس از اجرای wash up. هیچ بازیگر، ارائه دهنده یا پیوندی وجود ندارد.

سپس wasmCloud را متوقف کردم:


martinheller@Martins-M1-MBP ~ % wash down

✅ wasmCloud host stopped successfully
✅ NATS server stopped successfully
🛁 wash down completed successfully
  • Cosmonic یک WebAssembly PaaS است که در بالای wasmCloud ساخته می شود. این یک رابط کاربری ابری گرافیکی برای طراحی برنامه‌ها، شبکه‌سازی قوی و CLI خود ارائه می‌دهد.

    مزایا

    • مقدار کدی را که برای ایجاد Actor نیاز دارید بنویسید به حداقل می رساند
    • به راحتی می توان ماژول ها را به صورت گرافیکی به یک برنامه متصل کرد
    • امنیت جعبه ایمنی

    معایب

    • قیمت نهایی مشخص نیست
    • برای ایجاد بازیگران به مهارت برنامه نویسی Rust or Go نیاز دارد

Cosmonic یک WebAssembly PaaS است که در بالای wasmCloud ساخته می شود. این یک رابط کاربری ابری گرافیکی برای طراحی برنامه‌ها، شبکه‌سازی قوی و CLI خود ارائه می‌دهد.

  • مقدار کدی را که برای ایجاد Actor نیاز دارید بنویسید به حداقل می رساند
  • به راحتی می توان ماژول ها را به صورت گرافیکی به یک برنامه متصل کرد
  • امنیت جعبه ایمنی
  • قیمت نهایی مشخص نیست
  • برای ایجاد بازیگران به مهارت برنامه نویسی Rust or Go نیاز دارد