Boa pergunta! Eu trabalho na equipe do ZeroVM e espero poder ajudar a esclarecer as coisas!
Is ZeroVM providing a container similar to Docker?
Não, não realmente. O Docker usa o LXC e outros recursos do kernel para fornecer um ambiente de área restrita. O ZeroVM é executado inteiramente no espaço do usuário e nos sandboxes, em um aplicativo único .
Resumidamente, o ZeroVM funciona primeiro validando o aplicativo a ser executado e simplesmente executando-o. Quando executado, o aplicativo é executado basicamente sem sobrecarga extra - não há nenhuma máquina virtual por trás dele.
Para validar um aplicativo, ele deve ser compilado em uma forma especial de código de máquina x86. Este formulário especial tem a boa propriedade que pode ser estatisticamente verificada como "segura". Entre outras coisas, "seguro" significa que o código não vai passar para endereços fora de um determinado segmento de memória fornecido pelo ZeroVM. O programa também não pode chamar as chamadas normais do sistema, ele só pode chamar uma interface syscall muito estreita fornecida pelo ZeroVM. Esta validação foi retirada do projeto Cliente nativo do Google .
How would I use ZeroVM to run Wordpress? What benefits would doing so provide?
Você poderia, em princípio, compilar de forma cruzada o programa C que é o interpretador PHP. O ZeroVM poderia então iniciar o interpretador PHP no sandbox e alimentá-lo com os arquivos PHP que compõem o WordPress. ZeroVM fornece um sistema de arquivos na memória somente leitura e isso pode ser usado para ler um banco de dados SQLite. Isso lhe daria um site WordPress somente para leitura - não muito empolgante: -)
No entanto, como eu vejo, este não é o principal caso de uso do ZerovM. Os aplicativos existentes com base em banco de dados precisam ser reescritos para uso com o ZeroVM. O ZeroVM é mais voltado para sistemas massivamente escaláveis, nos quais você deseja processar muitos itens de dados em paralelo.
Imagine que você tem 1.000.000 de e-mail pelos quais precisa pesquisar. Os e-mails são armazenados em um armazenamento em bloco, como OpenStack Swift ou Amazon S3 . Isso significa que os arquivos físicos são armazenados em alguns servidores de armazenamento. Tradicionalmente, você precisaria puxar todos os emails para alguns nós de computação para pesquisá-los. Com o ZeroVM e sua integração com o Swift, você pode enviar o código para os dados. Isso é possível porque o código é pequeno (alguns megabytes) comparado a uma imagem volumosa da máquina virtual e porque é seguro executar código não confiável na caixa de proteção ZeroVM.
Portanto, o ZeroVM é destinado a arquiteturas altamente escaláveis, em que cada solicitação opera em diferentes partes de dados.
Para um site WordPress, isso pode significar que cada um deve armazenar cada postagem do blog em um dado separado e ter uma instância dedicada do ZeroVM responsável por cada publicação. Atualmente, o sistema de arquivos é somente leitura, mas há planos para torná-lo read-write e a instância do ZeroVM responsável por uma determinada postagem do blog pode, então, manipular itens como comentários. Você precisaria de um balanceador de carga na frente capaz de rotear o tráfego adequadamente. O resultado é uma arquitetura muito diferente do WordPress atual, mas mais escalável. Atualmente, implementar isso é deixado como um exercício para o leitor.