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.