Что виртуализирует ZeroVM?

12

У меня возникли проблемы с тем, чтобы обернуть голову вокруг ZeroVM .

Допустим, я хочу запустить Wordpress. Одним из вариантов является аренда размещенного виртуального сервера под управлением VMWare, Virtualbox, Xen, CoreOS или чего-то подобного. В этом случае виртуализируется сервер и его оборудование. После подготовки виртуального сервера я могу подключиться к нему по SSH, запустить и остановить службы, перезагрузить компьютер и т. Д.

В материалах, которые я читал онлайн, говорится, что ZeroVM виртуализирует приложение, но я не понимаю, что это значит. ZeroVM предоставляет контейнер, похожий на Docker ?

Продолжая мой пример выше, как бы я использовал ZeroVM для запуска Wordpress? Какие преимущества это даст?

Давайте расширим мой пример Wordpress для среды общего хостинга.

На домашней странице ZeroVM написано:

Каждый запрос к ZeroVM App или zapp приводит к появлению независимого экземпляра. Каждый экземпляр изолирован и защищен, вращается менее чем за 5 миллисекунд и уничтожается после завершения запроса. Скорость ZeroVM определяется каждым экземпляром, который виртуализирует только то, что требуется для запуска одного процесса.

Означает ли это, что каждый запрос к приложению ZeroVM порождает новый процесс? Что произойдет, если вы запускаете более одного приложения ZeroVM на сервере? Как запросы будут перенаправлены в правильное приложение?

braveterry
источник

Ответы:

9

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

Мартин Гайслер
источник
4

Кажется, это кровоточащий край. Rackspace пытается разобраться в том, что LXC «небезопасен» по сравнению с ним, но до тех пор, пока технические документы не появятся по этой теме, я буду с уверенностью судить.

  • Предоставляет ли ZeroVM контейнер, похожий на Docker?

From: Info World "Некоторые очевидные сравнения возможны между ZeroVM и таким проектом, как Docker, но его намерения немного иные. Docker - это пакет для развертывания в различных средах. ZeroVM - это больше способ обеспечения виртуализации приложений. в упрощенном виде в данной среде, где полное решение виртуальной машины было бы чрезмерным и не очень нужно ".

  • Как бы я использовал ZeroVM для запуска Wordpress?

Предположительно, вам понадобится apache для компиляции для ZeroVM. Я не уверен, сколько базы кода Wordpress сломается при таких условиях.

  • Каковы преимущества?

Маркетинговый отдел Rackspace сделает лучшее для этого: здесь

  • С какими проблемами я столкнусь? (Добавлено для пользы будущих читателей)

Программное обеспечение / платформа являются передовыми, поэтому применяются все испытания и сложности, связанные с работающим передовым программным обеспечением. (В том числе отсутствие большой базы пользователей для поддержки). Это также новая « платформа». Разработчики программного обеспечения привыкают к работе с виртуализированными платформами ... но это совершенно новое поколение виртуализации, помимо аппаратного (VMWare. OracleVM, HyperV) и виртуализации ядра (OpenVZ). Не удивляйтесь, если в начале игры ничего не будет работать так, как ожидалось.

Дэниел Видрик
источник
2

Продолжая мой пример выше, как бы я использовал ZeroVM для запуска Wordpress? Какие преимущества это даст?

ZeroVM - это, по сути, платформа для создания PaaS. Поэтому вопрос выше не имеет большого значения в «мире ZeroVM». Но давайте предположим, что кто-то установил для вас инфраструктуру ZeroVM (назовем ее «Провайдер»). Затем вы можете создать свой собственный PaaS или SaaS поверх этой инфраструктуры. В случае WordPress: провайдер дает вам возможность запускать любой код в инфраструктуре провайдера, вы можете запускать WordPress, когда ваш код работает - вы платите за него. Когда ваш код не работает - вы не платите. Т.е. когда кто-то открывает страницу WordPress, вы платите за запрос, после отправки ответа пользователю - вы перестаете платить что-либо. Более того, поскольку каждый экземпляр ZeroVM будет обслуживать один запрос, вашему сайту WordPress, по сути, нужно лишь обслуживать одну страницу одному пользователю. И тогда я бы сказал, что вам не нужен WordPress, поскольку WordPress прямо сейчас представляет собой PHP-интерфейс к базе данных MySQL, и в случае одного пользователя и одного запроса вам не нужна централизованная база данных. И так далее.

Означает ли это, что каждый запрос к приложению ZeroVM порождает новый процесс?

Да и нет. Зависит от того, как вы хотите его использовать. Если каждый запрос - это совершенно другое приложение с совершенно другой кодовой базой - тогда да, вам понадобится совершенно новый процесс. Но если каждый запрос является вызовом веб-приложения PHP или WSGI, то ZeroVM может действовать как «демон», обслуживающий запросы гораздо быстрее, экономя время настройки платформы (например, настройка файловой системы + python + wsgi в случае приложения WSGI). ).

Как запросы будут перенаправлены в правильное приложение?

Прямо сейчас инфраструктура интегрирована в хранилище объектов Swift . Запрос объекта Swift инициирует выполнение определенного фрагмента кода. Либо POST на конкретный URL вызовет выполнение полезной нагрузки POST-запроса. Конечно, возможен любой другой тип интеграции, например, в веб-сервер или распределенную очередь.

user64204
источник