Почему Wasm — это будущее облачных вычислений

автор vadim


Wasm, возможно, является самой важной новой технологией, о которой вы никогда не слышали. Хорошо, возможно, вы слышали об этом. Это важно!

Сокращение языка WebAssembly, Wasm был разработан для Интернета. Однако технология Wasm вышла за рамки веб-браузера. Теперь организации начинают использовать Wasm на стороне сервера. Например, моя компания SingleStore использует его в нашей базе данных.

Некоторые полагают, что Wasm заменит контейнерную технологию и вездесущий JavaScript.

Верите вы в это или нет, но 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. Каждую секунду каждая из стратегических функций космических кораблей вызывается для принятия решения о следующем шаге.

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

Но Васм – это не только развлечения и игры. Вы можете использовать его для решения бесчисленного множества других приложений и вариантов использования. Например, вы можете использовать Wasm для анализа настроений. Сложную логику, необходимую для анализа настроений, нелегко выразить на диалекте SQL базы данных. Итак, чтобы это сделать, вам обычно нужно реализовать это на более сложном языке, а затем перенести в него данные, загружая каждую строку данных. Затем вам нужно отправить рейтинг анализа настроений обратно в базу данных. Это означает обход каждой строки в используемой вами базе данных. Если у вас миллионы строк, это создает большой сетевой трафик. Но благодаря тому, как SingleStore интегрировал Wasm, вы уже находитесь в базе данных, поэтому вам не придется нести эти накладные расходы.

Wasm постоянно становится лучше: создание стандартов делает его еще более мощным

Васм уже очень способен. А с появлением новых технологий и стандартов Wasm позволит вам сделать еще больше.

Например, группа сообщества W3C WebAssembly с помощью членов таких организаций, как Bytecode Alliance (членом которого является 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 вы можете получить лучшее из обоих миров.

Питер Ветере занимается разработкой программного обеспечения уже 25 лет. В настоящее время он работает на Один магазинсоздатель SingleStoreDB, распределенной базы данных SQL, работающей в режиме реального времени, предназначенной для приложений с интенсивным использованием данных, в качестве члена команды LaunchPad, где он исследует способы внедрения новых инновационных идей в базу данных.

Форум новых технологий предоставляет место для изучения и обсуждения новых корпоративных технологий с беспрецедентной глубиной и широтой. Выбор является субъективным и основан на выборе технологий, которые мы считаем важными и представляющими наибольший интерес для читателей InfoWorld. InfoWorld не принимает маркетинговую информацию для публикации и оставляет за собой право редактировать весь предоставленный контент. Все вопросы отправляйте по адресу newtechforum@infoworld.com.

Related Posts

Оставить комментарий