Що віртуалізує ZeroVM?


12

У мене виникають проблеми з обгортанням голови навколо ZeroVM .

Скажімо, я хочу запустити Wordpress. Один із варіантів - орендувати розміщений віртуальний сервер під управлінням VMWare, Virtualbox, Xen, CoreOS або щось подібне. У цьому випадку віртуалізується сервер та його обладнання. Після створення віртуального сервера я можу SSH на нього, запускати та зупиняти послуги, перезавантажувати машину тощо.

У матеріалах, які я читав в Інтернеті, йдеться про те, що ZeroVM віртуалізує додаток, але я не розумію, що це означає. Чи забезпечує ZeroVM контейнер, подібний до Docker ?

Продовжуючи приклад вище, як я можу використовувати ZeroVM для запуску Wordpress? Які б вигоди це забезпечувало?

Давайте поширимо мій приклад Wordpress на загальне середовище хостингу.

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

Кожен запит до додатка ZeroVM або zapp призводить до нерестування незалежного екземпляра. Кожен екземпляр є ізольованим та захищеним, він обертається за 5 мілісекунд і знищується після завершення запиту. Швидкість ZeroVM виходить з кожного примірника, віртуалізуючи лише те, що потрібно для запуску одного процесу.

Чи означає це, що кожен запит на додаток ZeroVM породжує новий процес? Що станеться, якщо на сервері працює кілька додатків ZeroVM? Як запити будуть спрямовані на правильний додаток?

Відповіді:


9

Хороше питання! Я працюю над командою ZeroVM і сподіваюся, що зможу допомогти прояснити речі!

Чи забезпечує ZeroVM контейнер, подібний до Docker?

Ні, не дуже. Docker використовує LXC та інші функції ядра для створення середовища з піском. ZeroVM повністю працює в просторі користувачів та пісочницях в одному додатку.

Якщо коротко, ZeroVM працює, спершу перевіряючи запущену програму, а потім просто виконуючи її. Після запуску додаток запускається в основному без зайвих накладних витрат - за ним немає віртуальних машин.

Щоб перевірити додаток, його потрібно перекреслити в спеціальну форму машинного коду x86. Ця спеціальна форма має приємне властивість, що її можна статично перевірити як "безпечну". Крім усього іншого, "безпечний" означає, що код не може переходити до адрес поза певним сегментом пам'яті, що надається ZeroVM. Програма також не може викликати звичайні системні виклики, вона може викликати лише дуже вузький інтерфейс системного виклику, який надає ZeroVM. Ця перевірка взята з проекту Native Client від 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, але більш масштабована. Власне реалізація цього в даний час залишається як вправа для читача.


4

Здається, кров кровоточить. Rackspace копається в LXC за те, що він "незахищений" порівняно, але поки не з'являться події на цю тему, я буду з твердим рішенням.

  • Чи є ZeroVM контейнер подібним до Docker?

З: Інформаційний Світ "Деякі очевидні порівняння можливі між ZeroVM та таким проектом, як Docker, але наміри дещо інші. Докер - це упаковка для розгортання в різних середовищах. ZeroVM більше стосується створення способів віртуалізації додатків легким способом у даному середовищі, де повноцінне рішення VM було б надмірним та не дуже потрібним ".

  • Як я можу використовувати ZeroVM для запуску Wordpress?

Імовірно, вам знадобиться апаш для компіляції для ZeroVM. Я не впевнений, яка частина кодової бази Wordpress зламається за таких умов.

  • Які переваги?

Відділ маркетингу компанії Rackspace зробить найкращий випадок для цього: Ось

  • З якими викликами я зіткнуся? (Додано для користі майбутніх читачів)

Програмне забезпечення / платформа є кровоточивим, тому застосовуються всі випробування та труднощі, пов'язані із запуском програмного забезпечення для кровотоку. (У тому числі відсутність великої бази користувачів для підтримки). Це також нова " Платформа ". Розробники програмного забезпечення звикають мати справу з віртуалізованими платформами ... але це абсолютно нова порода віртуалізації над апаратними засобами (VMWare. OracleVM, HyperV) та віртуалізацією ядра (OpenVZ). Не дивуйтеся, якщо нічого не вийде, як очікувалося, на початку гри.


2

Продовжуючи приклад вище, як я можу використовувати ZeroVM для запуску Wordpress? Які б вигоди це забезпечувало?

ZeroVM по суті є платформою для побудови PaaS'es. Тому вищезазначене питання мало значення в "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. Звичайно, можливий будь-який інший тип інтеграції, наприклад, у веб-сервер чи в розподілену чергу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.