O que o ZeroVM virtualiza?

12

Estou tendo um pouco de dificuldade para resolver minha ZeroVM .

Digamos que eu queira executar o Wordpress. Uma opção é alugar um servidor virtual hospedado executando VMWare, Virtualbox, Xen, CoreOS ou algo semelhante. Nesse caso, o que está sendo virtualizado é o servidor e seu hardware. Uma vez que o servidor virtual é provisionado, posso SSH para ele, iniciar e parar serviços, reiniciar a máquina, etc.

O material que li on-line diz que o ZeroVM virtualiza o aplicativo, mas não entendo o que isso significa. O ZeroVM fornece um contêiner semelhante ao Docker ?

Continuando meu exemplo acima, como eu usaria o ZeroVM para executar o Wordpress? Quais os benefícios que isso proporcionaria?

Vamos estender meu exemplo do Wordpress para um ambiente de hospedagem compartilhada.

A página inicial do ZeroVM diz:

Each request to a ZeroVM App, or zapp, results in the spawning of an independent instance. Each instance is isolated and secure, spinning up in under 5 milliseconds, and is destroyed after finishing the request. The speed of ZeroVM comes from each instance virtualizing only what is required to run a single process.

Isso significa que cada solicitação para o aplicativo ZeroVM gera um novo processo? O que acontece se você estiver executando mais de um aplicativo ZeroVM em um servidor? Como as solicitações são encaminhadas para o aplicativo correto?

    
por braveterry 10.02.2014 / 17:15

3 respostas

9

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.

    
por 13.04.2014 / 20:25
4

Parece ser o limite do sangramento. A Rackspace está investigando o LXC por ser 'insegura' em comparação, mas até que os white papers apareçam no tópico, eu irei com julgamento.

  • O ZeroVM está fornecendo um contêiner semelhante ao Docker?

De: Info World "Algumas comparações óbvias são possíveis entre o ZeroVM e um projeto como o Docker, mas as intenções são um pouco diferentes. O Docker é sobre o empacotamento para implantação em vários ambientes. O ZeroVM é mais uma maneira de fornecer aplicativos virtualizado de maneira leve em um determinado ambiente, em que uma solução de VM completa seria excessiva e não seria realmente necessária. "

  • Como eu usaria o ZeroVM para executar o Wordpress?

Provavelmente você precisaria do apache para ser compilado para o ZeroVM. Eu não tenho certeza se a base de código do Wordpress vai quebrar em tais condições.

  • Quais são os benefícios?

O departamento de marketing da Rackspace fará o melhor caso para isso: Aqui

  • Que desafios enfrentarei? (Adicionado para benefício dos futuros leitores)

O software / plataforma é inovador, de modo que todas as tentativas e dificuldades associadas à execução de software de ponta são aplicáveis. (Incluindo a falta de uma grande base de usuários para suporte). É também uma nova " Plataforma". "Desenvolvedores de software estão se acostumando a lidar com plataformas virtualizadas ... mas essa é uma nova geração de virtualização acima e além do hardware (VMWare, OracleVM, HyperV) e virtualização de kernel (OpenVZ) ... Não se surpreenda se nada funcionar como esperado no início do jogo.

    
por 10.02.2014 / 17:53
2

Continuing my example above, how would I use ZeroVM to run Wordpress? What benefits would doing so provide?

ZeroVM é essencialmente uma plataforma para construir PaaS'es. Portanto, a questão acima tem pouco significado no "mundo ZeroVM". Mas vamos supor que alguém tenha instalado a infra-estrutura do ZeroVM para você (chamará de "Provedor"). Em seguida, você pode criar sua própria PaaS ou SaaS no topo dessa infraestrutura. No caso do WordPress: O Provedor oferece a você a capacidade de executar qualquer código na infraestrutura do Provedor, você pode executar o WordPress, quando o seu código está sendo executado - você paga por ele. Quando o seu código não está funcionando - você não paga. Ou seja quando alguém abre uma página do wordpress, você paga pela solicitação, depois que a resposta é enviada ao usuário - você para de pagar qualquer coisa. Mais do que isso, como cada instância do ZeroVM atenderá a uma solicitação, o site do WordPress precisará essencialmente servir apenas uma página para um usuário. E então eu diria que você realmente não precisa de "WordPress" como o WordPress agora é uma interface PHP para banco de dados MySQL, e no caso de um usuário e uma solicitação você não precisa de nenhum banco de dados centralizado. E assim por diante.

Does this mean that each request to the ZeroVM app spawns a new process?

Sim e não. Depende de como você deseja usá-lo. Se cada pedido é um aplicativo totalmente diferente com base de código totalmente diferente - então sim, você precisará de um novo processo. Mas se cada solicitação for uma chamada para o aplicativo da Web PHP ou WSGI, ZeroVM pode atuar como um daemon solicitando solicitações muito mais rápido economizando tempo de configuração da plataforma (configurando o sistema de arquivos + python + wsgi no caso do aplicativo WSGI, por exemplo ).

How would requests get routed to the correct app?

Neste momento, a infraestrutura é integrada em Swift armazenamento de objetos. Pedido de objeto Swift irá desencadear a execução de um pedaço específico de código. Ou o POST para um URL específico acionará a execução da carga útil do pedido POST. É claro que qualquer outro tipo de integração é possível, por exemplo, em um servidor da Web ou fila distribuída.

    
por 24.02.2014 / 13:01