良い質問!私はZeroVMチームで働いており、物事を解決できるよう願っています!
ZeroVMはDockerに似たコンテナーを提供していますか?
いいえ、そうでもありません。DockerはLXCおよびその他のカーネル機能を使用して、サンドボックス環境を提供します。ZeroVMは完全にユーザースペースで実行され、単一のアプリケーションをサンドボックス化します。
簡単に言えば、ZeroVMは、実行するアプリケーションを最初に検証し、次にそれを実行するだけで機能します。実行すると、アプリケーションは基本的に余分なオーバーヘッドなしで実行されます。その背後に仮想マシンはありません。
アプリケーションを検証するには、x86マシンコードの特別な形式にクロスコンパイルする必要があります。この特別な形式には、「安全」であることが静的に検証できるという素晴らしい特性があります。とりわけ、「安全」とは、ZeroVMが提供する特定のメモリセグメント外のアドレスにコードがジャンプしないことを意味します。また、プログラムは通常のシステムコールを呼び出すことはできません。ZeroVMが提供する非常に狭いsyscallインターフェイスのみを呼び出すことができます。この検証は、GoogleのNative Clientプロジェクトから取得されます。
ZeroVMを使用してWordpressを実行するにはどうすればよいですか?それによりどのようなメリットが得られますか?
原則として、PHPインタープリターであるCプログラムをクロスコンパイルできます。ZeroVMは、サンドボックスでPHPインタープリターを起動し、WordPressを構成するPHPファイルをフィードします。ZeroVMは読み取り専用のメモリ内ファイルシステムを提供し、これを使用してSQLiteデータベースを読み取ることができます。それはあなたに読み取り専用のWordPressサイトを与えるでしょう-非常にエキサイティングではありません:-)
しかし、私が見るように、これはZerovMの主なユースケースではありません。既存のデータベースが重いアプリケーションは、ZeroVMで使用するために書き直す必要があります。ZeroVMは、多くのデータアイテムを並列処理する、非常にスケーラブルなシステム向けです。
1,000,000件のメールを検索する必要があるとします。メールは、OpenStack SwiftやAmazon S3などのブロックストレージに保存されます。これは、物理ファイルがいくつかのストレージサーバーに保存されることを意味します。従来、メールを検索するには、すべてのメールをいくつかの計算ノードに引き渡す必要がありました。ZeroVMとSwiftとの統合により、コードをデータに送信できます。これは、コードがかさばる仮想マシンイメージに比べて小さいため(数メガバイト)、ZeroVMサンドボックスで信頼できないコードを実行しても安全であるため可能です。
そのため、ZeroVMは、各要求が異なるデータで動作する非常にスケーラブルなアーキテクチャを対象としています。
WordPressサイトの場合、これは、各ブログ投稿を別々のデータに保存し、各投稿を担当する専用のZeroVMインスタンスを持つ必要があることを意味します。現在、ファイルシステムは読み取り専用ですが、読み取り/書き込み可能にする計画があり、特定のブログ投稿を担当するZeroVMインスタンスがコメントなどを処理できます。トラフィックを適切にルーティングできるロードバランサーが必要です。結果は、現在のWordPressとは非常に異なるアーキテクチャですが、よりスケーラブルなものです。実際にこれを実装することは、読者の演習として残されています。