Cosa virtualizza ZeroVM?


12

Sto avendo un po 'di problemi a avvolgere la testa intorno a ZeroVM .

Diciamo che voglio eseguire Wordpress. Un'opzione è quella di noleggiare un server virtuale ospitato che esegue VMWare, Virtualbox, Xen, CoreOS o qualcosa di simile. In tal caso, ciò che viene virtualizzato è il server e il suo hardware. Una volta eseguito il provisioning del server virtuale, posso accedere a SSH, avviare e arrestare i servizi, riavviare la macchina, ecc.

Le cose che ho letto online dicono che ZeroVM virtualizza l'app, ma non capisco cosa significhi. ZeroVM fornisce un contenitore simile a Docker ?

Continuando il mio esempio sopra, come dovrei usare ZeroVM per eseguire Wordpress? Quali benefici offrirebbe in tal modo?

Estendiamo il mio esempio di Wordpress a un ambiente di hosting condiviso.

La home page di ZeroVM dice:

Ogni richiesta a un'app ZeroVM, o zapp, comporta la generazione di un'istanza indipendente. Ogni istanza è isolata e sicura, ruotando in meno di 5 millisecondi e viene distrutta dopo aver completato la richiesta. La velocità di ZeroVM viene da ogni istanza virtualizzando solo ciò che è necessario per eseguire un singolo processo.

Questo significa che ogni richiesta all'app ZeroVM genera un nuovo processo? Cosa succede se si esegue più di un'app ZeroVM su un server? In che modo le richieste verrebbero indirizzate all'app corretta?

Risposte:


9

Buona domanda! Lavoro nel team ZeroVM e spero di poter aiutare a chiarire le cose!

ZeroVM fornisce un contenitore simile a Docker?

No, non proprio. Docker utilizza LXC e altre funzionalità del kernel per fornire un ambiente sandbox. ZeroVM funziona interamente nello spazio utenti e sandbox una singola applicazione.

In breve, ZeroVM funziona convalidando prima l'applicazione da eseguire e quindi semplicemente eseguendola. Una volta eseguita, l'applicazione viene eseguita praticamente senza sovraccarico aggiuntivo: non c'è alcuna macchina virtuale dietro di essa.

Per convalidare un'applicazione, deve essere compilata in una forma speciale di codice macchina x86. Questo modulo speciale ha la proprietà piacevole che può essere verificato staticamente come "sicuro". Tra le altre cose, "sicuro" significa che il codice non passerà agli indirizzi al di fuori di un determinato segmento di memoria fornito da ZeroVM. Il programma non può inoltre chiamare le normali chiamate di sistema, può solo chiamare un'interfaccia syscall molto stretta fornita da ZeroVM. Questa convalida è tratta dal progetto Native Client di Google .

Come utilizzerei ZeroVM per eseguire Wordpress? Quali benefici offrirebbe in tal modo?

In linea di principio, è possibile compilare in modo incrociato il programma C che è l'interprete PHP. ZeroVM potrebbe quindi avviare l'interprete PHP nella sandbox e alimentare i file PHP che compongono WordPress. ZeroVM fornisce un filesystem in memoria di sola lettura e può essere utilizzato per leggere un database SQLite. Questo ti darebbe un sito WordPress di sola lettura - non terribilmente eccitante :-)

Tuttavia, a mio avviso, questo non è il principale caso d'uso di ZerovM. Le applicazioni esistenti che richiedono un elevato numero di database devono essere riscritte per l'uso con ZeroVM. ZeroVM è più indicato per i sistemi scalabili in modo massiccio in cui si desidera elaborare molti elementi di dati in parallelo.

Immagina di avere 1.000.000 di e-mail che devi cercare. I messaggi vengono archiviati in un archivio a blocchi come OpenStack Swift o Amazon S3 . Ciò significa che i file fisici sono archiviati su un numero di server di archiviazione. Tradizionalmente, è necessario eseguire il pull di tutta la posta verso un certo numero di nodi di calcolo per cercarli. Con ZeroVM e la sua integrazione con Swift , è possibile inviare il codice ai dati . Ciò è possibile perché il codice è piccolo (alcuni megabyte) rispetto a un'immagine ingombrante della macchina virtuale e perché è sicuro eseguire codice non attendibile nella sandbox ZeroVM.

Quindi ZeroVM è pensato per architetture altamente scalabili in cui ogni richiesta opera su dati diversi.

Per un sito WordPress, ciò potrebbe significare che si dovrebbe archiviare ogni post del blog in un dato separato e avere un'istanza ZeroVM dedicata responsabile di ciascun post. Attualmente, il filesystem è di sola lettura, ma ci sono piani per renderlo di lettura-scrittura e l'istanza ZeroVM responsabile di un determinato post di blog potrebbe quindi gestire cose come i commenti. Avresti bisogno di un bilanciamento del carico di fronte in grado di instradare il traffico in modo appropriato. Il risultato è un'architettura molto diversa dall'attuale WordPress, ma più scalabile. In realtà implementare questo è attualmente lasciato come esercizio per il lettore.


4

Sembra essere il limite sanguinante. Rackspace sta facendo uno scavo a LXC per essere "insicuro" in confronto, ma fino a quando i white paper non compariranno sull'argomento, con giudizio giudicherò.

  • ZeroVM sta fornendo un contenitore simile a Docker?

Da: Info World "Sono possibili alcuni confronti evidenti tra ZeroVM e un progetto come Docker, ma le intenzioni sono un po 'diverse. Docker riguarda l'imballaggio per l'implementazione in una varietà di ambienti. ZeroVM si occupa principalmente di fornire un modo per virtualizzare le app in modo leggero in un determinato ambiente in cui una soluzione VM completa sarebbe eccessiva e non realmente necessaria ".

  • Come utilizzerei ZeroVM per eseguire Wordpress?

Presumibilmente avresti bisogno di compilare apache per ZeroVM. Non sono sicuro di quanta parte del codice di Wordpress si romperà in tali condizioni.

  • Quali sono i vantaggi?

Il dipartimento marketing di Rackspace farà il caso migliore per questo: qui

  • Quali sfide dovrò affrontare? (Aggiunto a beneficio dei futuri lettori)

Il software / piattaforma è all'avanguardia quindi si applicano tutte le prove e le difficoltà associate all'esecuzione del software bleeding edge. (Inclusa la mancanza di un'ampia base di utenti per il supporto). È anche una nuova " Piattaforma " . Gli sviluppatori di software si stanno abituando a gestire piattaforme virtualizzate ... ma questa è una nuova generazione di virtualizzazione al di là dell'hardware (VMWare. OracleVM, HyperV) e virtualizzazione del kernel (OpenVZ). Non essere sorpreso se nulla funziona come previsto all'inizio del gioco.


2

Continuando il mio esempio sopra, come dovrei usare ZeroVM per eseguire Wordpress? Quali benefici offrirebbe in tal modo?

ZeroVM è essenzialmente una piattaforma per la costruzione di PaaS. Pertanto la domanda sopra ha poco significato nel "mondo ZeroVM". Ma supponiamo che qualcuno abbia installato l'infrastruttura ZeroVM per te (la chiameremo "Provider"). Quindi puoi creare il tuo PaaS o SaaS su quella infrastruttura. Nel caso di WordPress: il provider ti dà la possibilità di eseguire qualsiasi codice sull'infrastruttura del provider, puoi eseguire WordPress, quando il tuo codice è in esecuzione - lo paghi. Quando il tuo codice non è in esecuzione, non paghi. Cioè quando qualcuno apre una pagina di wordpress pagherai per la richiesta, dopo che la risposta è stata inviata all'utente - smetti di pagare qualsiasi cosa. Inoltre, poiché ogni istanza ZeroVM servirà una richiesta, il tuo sito WordPress deve essenzialmente servire solo una pagina per un utente. E poi direi che non hai davvero bisogno di "WordPress" poiché WordPress in questo momento è un'interfaccia PHP per il database MySQL, e nel caso di un utente e una richiesta non hai bisogno di alcun database centralizzato. E così via.

Questo significa che ogni richiesta all'app ZeroVM genera un nuovo processo?

Sì e no. Dipende da come si desidera utilizzarlo. Se ogni richiesta è un'app completamente diversa con una base di codice completamente diversa, quindi sì, avrai bisogno di un processo completamente nuovo. Ma se ogni richiesta è una chiamata all'app Web PHP o WSGI, ZeroVM può agire come un "demone" che serve le richieste molto più velocemente risparmiando tempo di configurazione della piattaforma (impostazione del filesystem + python + wsgi nel caso dell'app WSGI, ad esempio ).

In che modo le richieste verrebbero indirizzate all'app corretta?

In questo momento l'infrastruttura è integrata nell'archivio oggetti Swift . La richiesta per l'oggetto Swift attiverà l'esecuzione di un pezzo di codice specifico. Oppure POST a URL specifico attiverà l'esecuzione del payload della richiesta POST. Naturalmente è possibile qualsiasi altro tipo di integrazione, ad esempio in un server Web o in una coda distribuita.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.