Gute Frage! Ich arbeite im ZeroVM-Team und hoffe, dass ich bei der Klärung helfen kann!
Stellt ZeroVM einen Container ähnlich wie Docker bereit?
Nein nicht wirklich. Docker verwendet LXC und andere Kernel-Funktionen, um eine Sandbox-Umgebung bereitzustellen. ZeroVM läuft vollständig im Userspace und Sandboxen einer einzigen Anwendung.
Kurz gesagt, arbeitet ZeroVM , indem zunächst die Validierung der Anwendung einfach zu laufen und dann die Ausführung es. Bei der Ausführung wird die Anwendung im Grunde genommen ohne zusätzlichen Overhead ausgeführt - es steckt keine virtuelle Maschine dahinter.
Um eine Anwendung zu validieren, muss sie in eine spezielle Form von x86-Maschinencode übersetzt werden. Diese spezielle Form hat die nette Eigenschaft, dass sie statisch als "sicher" verifiziert werden kann. Unter "sicher" versteht man unter anderem, dass der Code nicht zu Adressen außerhalb eines bestimmten von ZeroVM bereitgestellten Speichersegments springt. Das Programm kann auch nicht die normalen Systemaufrufe aufrufen, sondern nur eine sehr enge Syscall-Schnittstelle, die von ZeroVM bereitgestellt wird. Diese Validierung stammt aus dem Native Client- Projekt von Google .
Wie würde ich ZeroVM verwenden, um Wordpress auszuführen? Welche Vorteile hätte dies?
Sie können das C-Programm, das der PHP-Interpreter ist, grundsätzlich crosskompilieren. ZeroVM könnte dann den PHP-Interpreter in der Sandbox starten und ihm die PHP-Dateien zuführen, aus denen WordPress besteht. ZeroVM bietet ein schreibgeschütztes In-Memory-Dateisystem, mit dem eine SQLite-Datenbank gelesen werden kann. Das würde dir eine schreibgeschützte WordPress-Seite geben - nicht besonders aufregend :-)
Aus meiner Sicht ist dies jedoch nicht der Hauptanwendungsfall für ZerovM. Bestehende datenbankintensive Anwendungen müssen für die Verwendung mit ZeroVM neu geschrieben werden. ZeroVM ist eher für massiv skalierbare Systeme gedacht, in denen Sie viele Datenelemente parallel verarbeiten möchten.
Stellen Sie sich vor, Sie haben 1.000.000 E-Mails, die Sie durchsuchen müssen. Die Mails werden in einem Blockspeicher wie OpenStack Swift oder Amazon S3 gespeichert . Dies bedeutet, dass die physischen Dateien auf einer Reihe von Speicherservern gespeichert sind. Normalerweise müssen Sie die gesamte E-Mail auf eine bestimmte Anzahl von Rechenknoten herunterziehen, um sie zu durchsuchen. Mit ZeroVM und seiner Integration in Swift können Sie den Code an die Daten senden . Dies ist möglich, weil der Code im Vergleich zu einem umfangreichen Image einer virtuellen Maschine klein ist (einige Megabyte) und weil es sicher ist, nicht vertrauenswürdigen Code in der ZeroVM-Sandbox auszuführen.
Daher ist ZeroVM für hochskalierbare Architekturen gedacht, bei denen jede Anforderung unterschiedliche Daten verarbeitet.
Für eine WordPress-Site könnte dies bedeuten, dass jeder Blog-Beitrag in einem separaten Datenelement gespeichert wird und für jeden Beitrag eine dedizierte ZeroVM-Instanz verantwortlich ist. Derzeit ist das Dateisystem schreibgeschützt. Es ist jedoch geplant, das Dateisystem schreibgeschützt zu machen, und die für einen bestimmten Blogeintrag verantwortliche ZeroVM-Instanz kann dann beispielsweise Kommentare verarbeiten. Sie benötigen einen Load-Balancer, der den Datenverkehr entsprechend weiterleitet. Das Ergebnis ist eine ganz andere Architektur als das aktuelle WordPress, aber skalierbarer. Die tatsächliche Umsetzung bleibt dem Leser derzeit als Übung überlassen.