Bonne question! Je travaille dans l'équipe ZeroVM et j'espère pouvoir aider à clarifier les choses!
ZeroVM fournit-il un conteneur similaire à Docker?
Non, pas vraiment. Docker utilise LXC et d'autres fonctionnalités du noyau pour fournir un environnement en bac à sable. ZeroVM s'exécute entièrement dans l'espace utilisateur et met en sandbox une seule application.
En bref, ZeroVM fonctionne en validant d' abord l'application à exécuter, puis en l'exécutant simplement. Une fois exécutée, l'application s'exécute sans surcharge supplémentaire - il n'y a pas de machine virtuelle derrière.
Afin de valider une application, elle doit être compilée de manière croisée dans une forme spéciale de code machine x86. Cette forme spéciale a la belle propriété de pouvoir être vérifiée statiquement comme "sûre". Entre autres, «sûr» signifie que le code ne sautera pas aux adresses en dehors d'un certain segment de mémoire fourni par ZeroVM. Le programme ne peut pas non plus appeler les appels système normaux, il ne peut appeler qu'une interface syscall très étroite fournie par ZeroVM. Cette validation est tirée du projet Native Client de Google .
Comment utiliser ZeroVM pour exécuter Wordpress? Quels avantages cela apporterait-il?
Vous pourriez en principe compiler de manière croisée le programme C qui est l'interpréteur PHP. ZeroVM pourrait alors démarrer l'interpréteur PHP dans le bac à sable et l'alimenter des fichiers PHP qui composent WordPress. ZeroVM fournit un système de fichiers en lecture seule en mémoire qui peut être utilisé pour lire une base de données SQLite. Cela vous donnerait un site WordPress en lecture seule - pas terriblement excitant :-)
Cependant, à mon avis, ce n'est pas le cas d'utilisation principal de ZerovM. Les applications existantes chargées de bases de données doivent être réécrites pour être utilisées avec ZeroVM. ZeroVM est plus destiné aux systèmes massivement évolutifs où vous souhaitez traiter de nombreux éléments de données en parallèle.
Imaginez que vous ayez 1 000 000 d'e-mails à rechercher. Les e-mails sont stockés dans un stockage en bloc tel que OpenStack Swift ou Amazon S3 . Cela signifie que les fichiers physiques sont stockés sur un certain nombre de serveurs de stockage. Traditionnellement, vous devez tirer tout le courrier vers un certain nombre de nœuds de calcul afin de les rechercher. Avec ZeroVM et son intégration avec Swift , vous pouvez envoyer le code aux données . Cela est possible car le code est petit (quelques mégaoctets) par rapport à une image de machine virtuelle encombrante et parce qu'il est sûr d'exécuter du code non approuvé dans le sandbox ZeroVM.
ZeroVM est donc conçu pour des architectures hautement évolutives où chaque requête opère sur différentes données.
Pour un site WordPress, cela pourrait signifier que l'on devrait stocker chaque article de blog dans une donnée distincte et avoir une instance ZeroVM dédiée responsable de chaque article. Actuellement, le système de fichiers est en lecture seule, mais il est prévu de le faire en lecture-écriture et l'instance ZeroVM responsable d'un article de blog donné pourrait alors gérer des choses comme des commentaires. Vous auriez besoin d'un équilibreur de charge à l'avant capable de router le trafic de manière appropriée. Le résultat est une architecture très différente de celle de WordPress actuelle, mais plus évolutive. En fait, la mise en œuvre de cela est actuellement laissée au lecteur.