Size: a a a

WebAssembly — русскоговорящее сообщество

2021 July 26

Б

Богдан in WebAssembly — русскоговорящее сообщество
Кстати у меня есть паста касательно того почему я написал выше что считаю что ос не нужна для сервера, предлагаю обсудить (или удалить если оффтоп)
источник

Б

Богдан in WebAssembly — русскоговорящее сообщество
ОС не нужна для сервера. Я пишу бэкенд для некого сайта/spa-приложения и есть допустим некий сервер на nodejs. Сначала я как и все юзал всякие ubuntu/debian-дистрибутивы но мне было сильно неприятно думать что вообще происходит и какие процессы/сервисы запущены и какой софт там крутится (современный линукс-дистрибутив тащит кучу ненужного) и как все это контролировать.
Потом мне все это надоело - зачем мне все эти дистрибутивы - я ведь могу взять чистое ядро линукса и дальше скомпилировать ноду как статический бинарник (без внешних шаред c++ библиотек) и тупо запустить сервер ноды как единственный процесс при старте (init он же pid0).
Вы только представьте себе - никакого лишнего софта, нет systemd, нет busybox-а (он же shell), нет даже ssh-сервера (деплой через сборку нового образа) - только ядро линукса и сервер на ноде который взаимодействует с ядром через системные вызовы (никаких шаред библиотек)
Сейчас это у меня все крутится в докере но дальше я планирую упаковать этот образ в iso и задеплоить к хостеру как кастомный образ ос. И это будет работать эффективнее чем с докером - потому что типичный способ деплоя и запуска на сервере для хостера выглядит так hypervisor -> kvm-образ с каким-то там ubuntu/debian образом -> докер -> еще одно ос-окружение с nodejs-приложением  а в моем случае это будет  hypervisor -> kvm-образ с ядром линукса которое запускает нод-жс приложение

Продолжая тему можно легко прийти к выводу что в случае когда у тебя на сервере крутится единственный процесс то тебе не нужны и та огромная куча фич и абсракций и слоев которую предоставляет операционная система.

Зачем такому серверу нужны абстракция пользователей и группы пользователей вместе с их правами доступов которые есть в linux? (кстати я никогда не понимал совет "не запускать под рутом")

Зачем такому серверу нужен сложный платировщик задач который есть в linux? Почему бы просто не создать количество процессов равное количеству ядер и прибить каждый такой процес к соответствующему ядру и дальше вместо мютексов просто юзать спинлоки (да, будет 100% загрузка но кто-то там говорил что если ваш сервер не используется на 100% то вы теряете деньги) и тогда этот scheduler который есть в линуксе становится попросту не нужен

Зачем такому серверу нужна изоляция аддресного простанства и виртуальная память которую предоставляет линукс? Ведь у меня на сервере крутится доверенный код и у меня нет смысла изолировать отдельные части программы друг от друга (добавляя тем самым оверхед на их общение)

Зачем такому серверу нужно разделять выполнение кода на режим ядра и режим юзера (добавляя тем самым оверхед на переключение контекстов) ? Почему бы не запусить весь сервер в виде модуля ядра (и избавиться от оверхеда на переключения контекстов) если я все равно запускаю сервер в виде единственного init-процесса на голом ядре?

Кароче вот с такими взглядами я и пришел к выводу что операционная система на сервере не нужна а вместо этого нужно просто скомпилировать весь сервер в один бинарник для запуска на голом железе в режиме ядра без всякого рантайма операционной системы а ос будет представлена просто статической прилинкованной библиотекой в этом бинарнике и будет заниматься только общением с регистрами специфичного диска и сетевой карты (то есть будет играть роль драйвера)
источник

DM

Dmitry M in WebAssembly — русскоговорящее сообщество
Это всё нужно, для максимальной утилизации железа
источник

DM

Dmitry M in WebAssembly — русскоговорящее сообщество
multitenancy и всё такое прочее
источник

DI

Dmitry Ilyin in WebAssembly — русскоговорящее сообщество
предлагаю продолжить мысль, зачем нужны другие языки, если есть Javascript
источник

С

Сергей in WebAssembly — русскоговорящее сообщество
вы только что изобрели unikernel
источник

A

Anon in WebAssembly — русскоговорящее сообщество
Так то да. Так же про JavaScript думает походу вся современная индустрия связанная с кроссплатформенными приложениями.
источник

A

Anon in WebAssembly — русскоговорящее сообщество
А меня просто жизнь заставила
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Сейчас вроде становятся популярны микрокернелы и плагинная структура, особенно среди IoT. Например Redox, FreeRTOS и L4
источник

С

Сергей in WebAssembly — русскоговорящее сообщество
У них всё таки чуть другие задачи и чуть другое назначение, не совсем то, что описывает автор сообщения.
источник

AC

Alexander Chichigin in WebAssembly — русскоговорящее сообщество
Отлично, ещё немного и Вы переизобретёте Unikernel. Но можно сразу взять https://mirage.io/ 😉
источник

SR

Sergey Rubanov in WebAssembly — русскоговорящее сообщество
лифтофф без в8 нельзя, я уже спрашивал у них
источник

SR

Sergey Rubanov in WebAssembly — русскоговорящее сообщество
а остальное прибито еще сильнее
источник

A

Alexandr Borisovich in WebAssembly — русскоговорящее сообщество
чтобы создать конкурентное преимущество для своей персоны
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Он пока что не отписался, у него скорей всего забот и с llvm достаточно
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
И ревью моих PR в Binaryen. Не надо его отвлекать, человек и так перегружен задачами
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Я подписался cost model делать, что бы его разгрузить
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Нужна помощь?
источник
2021 July 27

DB

Dmitry Bezhetskov in WebAssembly — русскоговорящее сообщество
вот вам реализация вашего unikernel https://github.com/includeos/IncludeOS
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Уже и на оранжевом сайте ругают Safari
https://news.ycombinator.com/item?id=27968394
источник