На прошедшей конференции Explore 2022 компания VMware представляла большие корпоративные продукты, о которых мы пишем вот тут. Но был показан и еще один небольшой исследовательский проект - WebAssembly
(Wasm) - открытый стандарт, определяющий бинарный стандарт исполняемых программ.
Во время демонстрации был показан эксперимент, который ставил своей целью собрать веб-сервер на базе самых дешевых микрокомпьютеров Raspberry Pi Zero W and Pi Zero 2 W. Эти маленькие low-end платы интегрируют в себе чипсеты BCM2835 (ARM 32-Bits / 1GHz) и BCM2710A1 (ARM 64-bits / Quad core 1GHz) и имеют на борту 512MB памяти SRAM. Системы эти очень бюджетные - стоят около $10, они применяются для прототипирования и некоторых прикладных задач.
Технология Server-Side Rendering позволяет обработать клиентскую часть JS на стороне сервера и послать HTML-ответ в браузер. После загрузки специальный компонент берет на себя контроль над веб-страницей, чтобы обеспечить с ней интерактивное взаимодействие, которое называется hydration.
Вот что из этого получилось:
Развертывание веб-сервера производится в 4 простых шага:
1. Логинимся по SSH:
ssh pi@PI_ZERO_IP_ADDRESS
2. Скачиваем и распаковываем контент:
wget https://github.com/vmware-samples/webassembly-browser-apps/releases/download/pi-zero-ssr%401.0.0/build.tar.gz
tar xvf build.tar.gz
3. Запускаем веб-сервер:
# Pi Zero (32-bit):
./ssr-handler ./ssr.wasm ./dist
# Pi Zero 2 (64-bit):
./ssr-handler-64 ./ssr.wasm ./dist
4. Заходим на него:
http://PI_ZERO_IP_ADDRESS:8080
По итогам теста генерация страниц получилась достаточно производительной для 64-битной архитектуры: