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