У меня проблемы с оборачиванием головы ZeroVM.
Допустим, я хочу запустить Wordpress. Один из вариантов - арендовать размещенный виртуальный сервер с VMWare, Virtualbox, Xen, CoreOS или чем-то подобным. В этом случае виртуализируется сервер и его оборудование. Как только виртуальный сервер подготовлен, я могу подключиться к нему по SSH, запускать и останавливать службы, перезагружать компьютер и т. Д.
В материалах, которые я читал в Интернете, говорится, что ZeroVM виртуализирует приложение, но я не понимаю, что это значит. Предоставляет ли ZeroVM контейнер, похожий на Докер?
Продолжая мой пример выше, как мне использовать ZeroVM для запуска Wordpress? Какие преимущества это даст?
Давайте расширим мой пример Wordpress на среду виртуального хостинга.
На домашней странице ZeroVM говорится:
Каждый запрос к приложению ZeroVM или zapp приводит к созданию независимого экземпляра. Каждый экземпляр изолирован и безопасен, разгоняется менее чем за 5 миллисекунд и уничтожается после завершения запроса. Скорость ZeroVM зависит от виртуализации каждого экземпляра только того, что требуется для запуска одного процесса.
Означает ли это, что каждый запрос к приложению ZeroVM порождает новый процесс? Что произойдет, если вы запустите более одного приложения ZeroVM на сервере? Как запросы будут направляться в правильное приложение?
Хороший вопрос! Я работаю в команде ZeroVM и надеюсь, что смогу помочь прояснить ситуацию!
Предоставляет ли ZeroVM контейнер, похожий на Docker?
Нет, не совсем. Docker использует LXC и другие функции ядра для создания изолированной среды. ZeroVM полностью работает в пользовательском пространстве и в песочнице не замужем применение.
Вкратце, ZeroVM работает сначала подтверждение приложение, которое нужно запустить, а затем просто запустить его. При выполнении приложение работает практически без дополнительных затрат - за ним нет виртуальной машины.
Чтобы проверить приложение, оно должно быть скомпилировано в специальную форму машинного кода x86. Эта специальная форма обладает тем замечательным свойством, что ее можно статически проверить на «безопасность». Среди прочего, «безопасный» означает, что код не будет перескакивать по адресам за пределами определенного сегмента памяти, предоставляемого ZeroVM. Программа также не может вызывать обычные системные вызовы, она может вызывать только очень узкий интерфейс системных вызовов, предоставляемый ZeroVM. Это подтверждение взято из Собственный клиент Google проект.
Как мне использовать 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, но более масштабируемая. Фактическая реализация этого в настоящее время оставлена в качестве упражнения для читателя.
Кажется, это передний край. Rackspace критикует LXC за то, что он по сравнению с ним «небезопасен», но до тех пор, пока не появятся официальные документы по этой теме, я буду придерживаться суждения.
Из: Информационный мир «Некоторые очевидные сравнения возможны между ZeroVM и таким проектом, как Docker, но намерения немного разные. Docker - это упаковка для развертывания в различных средах. ZeroVM - это больше о том, как облегчить виртуализацию приложений в данной среде, где полное решение виртуальной машины было бы чрезмерным и не совсем необходимым ».
Предположительно вам понадобится apache для компиляции для ZeroVM. Я не уверен, какая часть кода Wordpress сломается в таких условиях.
Отдел маркетинга Rackspace сделает все возможное для этого: Вот
Программное обеспечение / платформа передовые, поэтому применимы все испытания и трудности, связанные с запуском новейшего программного обеспечения. (В том числе отсутствие большой базы пользователей для поддержки). Это тоже новый "Платформа.«Разработчики программного обеспечения привыкают иметь дело с виртуализированными платформами ... но это совершенно новое поколение виртуализации помимо оборудования (VMWare. OracleVM, HyperV) и виртуализации ядра (OpenVZ) ... Не удивляйтесь, если ничего работает так, как ожидалось в начале игры.
Продолжая мой пример выше, как мне использовать ZeroVM для запуска Wordpress? Какие преимущества это принесет?
ZeroVM - это, по сути, платформа для создания PaaS. Поэтому вопрос выше не имеет большого значения в "мире ZeroVM". Но предположим, что кто-то установил для вас инфраструктуру ZeroVM (назовем ее «Провайдер»). Затем вы можете создать свой собственный PaaS или SaaS поверх этой инфраструктуры. В случае WordPress: Provider дает вам возможность запускать любой код в инфраструктуре Provider, вы можете запускать WordPress, когда ваш код работает - вы платите за это. Когда ваш код не запущен - вы не платите. Т.е. когда кто-то откроет страницу wordpress, вы заплатите за запрос, после того, как ответ будет отправлен пользователю - вы перестанете платить. Более того, поскольку каждый экземпляр ZeroVM будет обслуживать один запрос, вашему сайту WordPress необходимо обслуживать только одну страницу одному пользователю. И тогда я бы сказал, что вам действительно не нужен «WordPress», поскольку WordPress прямо сейчас представляет собой PHP-интерфейс для базы данных MySQL, а в случае одного пользователя и одного запроса вам не нужна централизованная база данных. И так далее.
Означает ли это, что каждый запрос к приложению ZeroVM порождает новый процесс?
Да и нет. Зависит от того, как вы хотите его использовать. Если каждый запрос представляет собой совершенно другое приложение с совершенно разной кодовой базой - тогда да, вам понадобится совершенно новый процесс. Но если каждый запрос является вызовом веб-приложения PHP или WSGI, тогда ZeroVM может действовать как «демон», обслуживающий запросы намного быстрее, экономя время настройки платформы (например, настройка файловой системы + python + wsgi в случае приложения WSGI ).
Как запросы будут направляться в нужное приложение?
Сейчас инфраструктура интегрированный в Swift объектный магазин. Запрос на объект Swift запускает выполнение определенного фрагмента кода. Или POST для определенного URL-адреса вызовет выполнение полезной нагрузки POST-запроса. Конечно, возможен любой другой тип интеграции, например, в веб-сервер или распределенную очередь.