Грядет WebAssembly



Один из дайджестов в прошлом месяце практически целиком был посвящен WebAssembly. И на то есть свои причины. Михаил Петров, руководитель проекта «Платформа» в VK, подготовил небольшую сводку — что это такое и почему про этот язык так много говорят в последнее время.



Что такое WebAssembly?



В первую очередь это W3C-стандарт для реализации переносимых программ. Изначально его разрабатывали для запуска программ в браузере, но потом люди поняли, что их можно запускать далеко не только в браузере — и понеслось!



По факту wasm-контейнеры могут запускаться где угодно. Один раз собранные, они могут запуститься в том числе на linux/windows/arm. При этом они выдают производительность, сопоставимую с нативными программами. А еще WebAssembly-программа может быть написана почти на любом языке — это не принципиально.



По словам сооснователя Docker, если бы в 2008 году существовал WebAssembly, технология Docker была бы просто не нужна.



docker vs WebAssembly



🌀 docker



• более зрелая технология;



• поддержка лучше и охватывает больше аспектов поддержки;



• запуск за секунды;



• размер образа — десятки мегабайт.



🌀 wasm



• более мобильный, Edge Computing как раз про него;



• меньше бинари;



• потребляет меньше памяти;



• запускается очень быстро. Как вам, например, запуск в 100 раз быстрее обычного контейнера?



• по умолчанию более безопасный;



• ограниченные сетевые доступы;



• размер образа — мегабайты;



• однотредный;



• проблемы с использованием некоторых библиотек. Часто приходится разбираться самому;



• хорошо подходит для Serverless, Oneshot-задач.



А еще, судя по документации, wasm поддерживается в Kubernetes и может быть next Big Thing в Cloud Native Landscape.



Вот еще несколько полезных ссылок для самостоятельного изучения вопроса:



➡️ Про WebAssembly и контейнеры

➡️ Про WebAssembly в K8s

➡️ Технический обзор WebAssembly в Docker Hub

➡️ Про запуск WasmEdge



#за_минуту