Хороший вопрос! Я работаю в команде ZeroVM и надеюсь, что смогу прояснить ситуацию!
ZeroVM предоставляет контейнер, похожий на Docker?
Нет, не совсем. Docker использует LXC и другие функции ядра для обеспечения изолированной среды. ZeroVM полностью работает в пользовательском пространстве и помещает в песочницу одно приложение.
Вкратце, ZeroVM работает первый проверки приложения для запуска , а затем просто его выполнения. При выполнении приложение работает практически без дополнительных затрат - за ним нет виртуальной машины.
Чтобы проверить приложение, оно должно быть скомпилировано в специальную форму машинного кода x86. Эта специальная форма обладает приятным свойством, которое можно статически проверить как «безопасное». Помимо прочего, «безопасный» означает, что код не будет переходить по адресам вне определенного сегмента памяти, предоставляемого ZeroVM. Программа также не может вызывать обычные системные вызовы, она может вызывать только очень узкий интерфейс системного вызова, предоставляемый ZeroVM. Эта проверка взята из проекта Google Native Client .
Как бы я использовал ZeroVM для запуска Wordpress? Какие преимущества это даст?
В принципе, вы можете кросс-компилировать программу на C, которая является интерпретатором PHP. ZeroVM может затем запустить интерпретатор PHP в песочнице и передать ему файлы PHP, которые составляют WordPress. ZeroVM предоставляет доступную только для чтения файловую систему в памяти, и ее можно использовать для чтения базы данных SQLite. Это дало бы вам доступный только для чтения сайт WordPress - не очень интересно :-)
Однако, на мой взгляд, это не основной вариант использования ZerovM. Существующие приложения с интенсивным использованием базы данных необходимо переписать для использования с ZeroVM. ZeroVM больше предназначен для масштабируемых систем, в которых вы хотите обрабатывать множество элементов данных параллельно.
Представьте, что у вас есть 1 000 000 электронных писем, по которым вам нужно искать. Почта хранится в блочном хранилище, таком как OpenStack Swift или Amazon S3 . Это означает, что физические файлы хранятся на некотором количестве серверов хранения. Традиционно вам нужно было перетянуть всю почту на некоторое количество вычислительных узлов, чтобы найти их. С ZeroVM и его интеграцией со Swift вы можете отправить код к данным . Это возможно потому, что код небольшой (несколько мегабайт) по сравнению с громоздким образом виртуальной машины, а также потому, что безопасно выполнять ненадежный код в изолированной программной среде ZeroVM.
Таким образом, ZeroVM предназначен для сильно масштабируемых архитектур, где каждый запрос работает с различными частями данных.
Для сайта WordPress это может означать, что каждый пост в блоге должен храниться в отдельном фрагменте данных и иметь отдельный экземпляр ZeroVM, отвечающий за каждый пост. В настоящее время файловая система доступна только для чтения, но есть планы сделать ее доступной для чтения и записи, и экземпляр ZeroVM, отвечающий за данное сообщение в блоге, может затем обрабатывать такие вещи, как комментарии. Вам понадобится балансировщик нагрузки впереди, способный соответствующим образом маршрутизировать трафик. Результатом является совершенно другая архитектура, чем у текущего WordPress, но более масштабируемая. Фактически реализация этого в настоящее время остается в качестве упражнения для читателя.