Софт

Выпущена версия 3.0 Fermyon's Spin WebAssembly

Выпущена версия 3.0 Fermyon's Spin WebAssembly

Мы рассматривали Spin в прошлом году в статье Spin Brings WebAssembly To The Cloud, где мы описали, что это такое на самом деле:

Spin предоставляет интерфейсы для написания модулей WebAssembly, которые могут делать такие вещи, как отвечать на HTTP-запросы. С помощью Spin вы уменьшаете накладные расходы микросервисов, отменяя веб-сервер (его заменяет WAGI-сервер) и записывая HTTP-обработчики на любом языке (Rust, C, JavaScript, Python и т. д.), которые затем компилируются в WebAssembly.

Время выполнения хоста обеспечит все необходимые функции, такие как файловая система (с высокой степенью песочницы), исходящий HTTP, хранение ключей/значений и т. д. Таким образом, мы можем сосредоточить наши микросервисы на обработке бизнес-логики, оставив базовой платформе управление всеми HTTP, SSL-сертификатами и так далее.

Итак, что же нового предлагает версия 3. 0?

Уникальность Spin заключается в том, что это мультиязычный фреймворк. В новой версии появилась первоклассная поддержка написания компонентов на любом из поддерживаемых языков, которые можно вызывать с любого из поддерживаемых языков. Например:

вы написали клиент AWS S3 на Rust и хотите использовать его в своем приложении Spin на Javascript.
теперь вы можете выразить компонент S3 как зависимость и использовать его функциональность в коде вашего приложения.

Благодаря этому свойству вы можете легко смешивать и сочетать компоненты в своем рабочем процессе. Кроме того, с помощью новой функции «Выборочное развертывание» вы можете разделить приложение по средам, но при этом распространять его как единое целое. Например, вы отправляете один и тот же двоичный файл, состоящий из фронт-энда, бэкэнда базы данных и сервиса искусственного интеллекта, в разные места, но вызываете только определенную часть в соответствующем месте:

Фронтальная часть, которая обрабатывает браузерные и API-запросы, должна работать в центрах обработки данных, расположенных вблизи пользователей.
Бэкэнд базы данных должен работать в одном центральном месте.

А сервис искусственного интеллекта, который требует загрузки модели LLM на оборудование

Несмотря на то, что Spin уже был модульным с модулями, называемыми «хост-компонентами», чтобы обеспечить низкое сопряжение, на практике
эта попытка не была столь успешной, поскольку детали реализации просачивались по всей кодовой базе. «Факторы Spin» - это более удачная попытка, в которой независимые наборы функций организованы в отдельные „факторы“, позволяющие реализациям во время выполнения выбирать те возможности, которые они хотят предоставить.

Новая версия также предлагает более глубокую интеграцию со стандартами WASI. Напомним, что WASI (WebAssembly System Interface) - это модульный системный интерфейс для WebAssembly (Wasm), который позволяет разработчикам запускать программы на Wasm на любой платформе, включая браузер, облако и периферию.
WASI разработан как безопасный, быстрый и портативный компонент, который позволяет разработчикам писать свои программы один раз и запускать их в любом месте.

В связи с этим Spin теперь официально поддерживает API WASI Key-Value и WASI Config. WASI key/value определяет набор интерфейсов для взаимодействия с хранилищами ключевых значений, а Config нацелен на предоставление набора общих интерфейсов для конфигурирования компонента.

Чтобы применить Spin на практике, вот код простого приложения с поддержкой LLM, написанного на Rust и работающего с Spin sdk:

Обратите внимание, что вы можете делать то же самое на других языках, таких как Python или Typescript, и/или соединять вместе другие компоненты, написанные на любых других поддерживаемых языках. Мультиязычное программирование на практике!

Если предложение показалось вам интересным, скачайте SDK и посмотрите множество примеров на множестве языков, найденных в репозитории Github.

Читайте также