Qu'est-ce que ZeroVM virtualise?

12

J'ai un peu de mal à enrouler ma tête autour de ZeroVM .

Disons que je veux exécuter Wordpress. Une option consiste à louer un serveur virtuel hébergé exécutant VMWare, Virtualbox, Xen, CoreOS ou quelque chose de similaire. Dans ce cas, ce qui est virtualisé, c'est le serveur et son matériel. Une fois le serveur virtuel provisionné, je peux y accéder en SSH, démarrer et arrêter les services, redémarrer la machine, etc.

Ce que j'ai lu en ligne dit que ZeroVM virtualise l'application, mais je ne comprends pas ce que cela signifie. ZeroVM fournit-il un conteneur similaire à Docker ?

Poursuivant mon exemple ci-dessus, comment utiliser ZeroVM pour exécuter Wordpress? Quels avantages cela apporterait-il?

Étendons mon exemple Wordpress à un environnement d'hébergement partagé.

La page d'accueil ZeroVM dit:

Chaque demande à une application ZeroVM, ou zapp, entraîne la création d'une instance indépendante. Chaque instance est isolée et sécurisée, tourne en moins de 5 millisecondes et est détruite après avoir terminé la demande. La vitesse de ZeroVM provient de chaque instance ne virtualisant que ce qui est nécessaire pour exécuter un seul processus.

Est-ce à dire que chaque demande à l'application ZeroVM engendre un nouveau processus? Que se passe-t-il si vous exécutez plusieurs applications ZeroVM sur un serveur? Comment les demandes seraient-elles acheminées vers la bonne application?

braveterie
la source

Réponses:

9

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.

Martin Geisler
la source
4

Semble être le bord saignant. Rackspace est en train de creuser à LXC pour être «peu sûr» en comparaison, mais jusqu'à ce que les livres blancs apparaissent sur le sujet, je vais faire preuve de jugement.

  • ZeroVM fournit-il un conteneur similaire à Docker?

De: Info World "Certaines comparaisons évidentes sont possibles entre ZeroVM et un projet comme Docker, mais les intentions sont un peu différentes. Docker concerne l'empaquetage pour le déploiement dans une variété d'environnements. ZeroVM vise davantage à fournir un moyen de virtualiser les applications de manière légère dans un environnement donné où une solution de VM complète serait excessive et pas vraiment nécessaire. "

  • Comment utiliser ZeroVM pour exécuter Wordpress?

Vraisemblablement, vous auriez besoin d'Apache pour être compilé pour ZeroVM. Je ne suis pas sûr de la quantité de base de code Wordpress qui se brisera dans de telles conditions.

  • Quels sont les bénéfices?

Le service marketing de Rackspace en fera le meilleur cas: ici

  • À quels défis vais-je faire face? (Ajouté au profit des futurs lecteurs)

Le logiciel / la plate-forme est à la pointe de la technologie, donc tous les essais et les difficultés associés à l'exécution d'un logiciel à la pointe de la technologie s'appliquent. (Y compris le manque d'une large base d'utilisateurs pour le support). C'est aussi une nouvelle « plate-forme » . Les développeurs de logiciels s'habituent à gérer des plates-formes virtualisées ... mais il s'agit d'une toute nouvelle race de virtualisation au-delà du matériel (VMWare. OracleVM, HyperV) et de la virtualisation du noyau (OpenVZ). Ne soyez pas surpris si rien ne fonctionne comme prévu au début du jeu.

Daniel Widrick
la source
2

Poursuivant mon exemple ci-dessus, comment utiliser ZeroVM pour exécuter Wordpress? Quels avantages cela apporterait-il?

ZeroVM est essentiellement une plateforme pour construire des PaaS. Par conséquent, la question ci-dessus a peu de sens dans le "monde ZeroVM". Mais supposons que quelqu'un ait installé l'infrastructure ZeroVM pour vous (l'appellera "Fournisseur"). Ensuite, vous pouvez créer votre propre PaaS ou SaaS au-dessus de cette infrastructure. Dans le cas de WordPress: le fournisseur vous donne la possibilité d'exécuter n'importe quel code sur l'infrastructure du fournisseur, vous pouvez exécuter WordPress, lorsque votre code est en cours d'exécution - vous payez pour cela. Lorsque votre code ne fonctionne pas - vous ne payez pas. C'est-à-dire que lorsque quelqu'un ouvre une page wordpress, vous payez la demande, après l'envoi de la réponse à l'utilisateur - vous arrêtez de payer quoi que ce soit. Plus que cela, car chaque instance ZeroVM servira une seule demande, votre site WordPress n'a essentiellement besoin que de servir une page à un utilisateur. Et puis je dirais que vous n'avez pas vraiment besoin de "WordPress" car WordPress est actuellement une interface PHP avec la base de données MySQL, et dans le cas d'un utilisateur et d'une demande, vous n'avez pas besoin de base de données centralisée. Etc.

Est-ce à dire que chaque demande à l'application ZeroVM engendre un nouveau processus?

Oui et non. Cela dépend comment voulez-vous l'utiliser. Si chaque demande est une application totalement différente avec une base de code totalement différente - alors oui, vous aurez besoin d'un tout nouveau processus. Mais si chaque demande est un appel à une application Web PHP ou WSGI, ZeroVM peut agir comme un "démon" servant les demandes beaucoup plus rapidement en économisant le temps de configuration de la plate-forme (configuration du système de fichiers + python + wsgi dans le cas de l'application WSGI, par exemple ).

Comment les demandes seraient-elles acheminées vers la bonne application?

À l'heure actuelle, l'infrastructure est intégrée dans le magasin d'objets Swift . La demande d'objet Swift déclenchera l'exécution d'un morceau de code spécifique. Ou POST vers une URL spécifique déclenchera l'exécution de la charge utile de la demande POST. Bien entendu, tout autre type d'intégration est possible, par exemple dans un serveur Web ou une file d'attente distribuée.

user64204
la source