¡Buena pregunta! ¡Trabajo en el equipo de ZeroVM y espero poder ayudar a aclarar las cosas!
¿ZeroVM proporciona un contenedor similar a Docker?
No en realidad no. Docker utiliza LXC y otras características del núcleo para proporcionar un entorno de espacio aislado. ZeroVM se ejecuta completamente en el espacio de usuario y sandboxes una sola aplicación.
Brevemente, ZeroVM funciona validando primero la aplicación que se ejecutará y luego simplemente ejecutándola. Cuando se ejecuta, la aplicación se ejecuta básicamente sin sobrecarga adicional: no hay una máquina virtual detrás de ella.
Para validar una aplicación, debe compilarse en una forma especial de código máquina x86. Este formulario especial tiene la buena propiedad de que se puede verificar estáticamente como "seguro". Entre otras cosas, "seguro" significa que el código no saltará a direcciones fuera de un cierto segmento de memoria proporcionado por ZeroVM. El programa tampoco puede llamar a las llamadas normales del sistema, solo puede llamar a una interfaz syscall muy estrecha proporcionada por ZeroVM. Esta validación se toma del proyecto Native Client de Google .
¿Cómo usaría ZeroVM para ejecutar Wordpress? ¿Qué beneficios proporcionaría hacerlo?
En principio, podría compilar el programa C que es el intérprete PHP. ZeroVM podría iniciar el intérprete PHP en el sandbox y alimentarlo con los archivos PHP que componen WordPress. ZeroVM proporciona un sistema de archivos en memoria de solo lectura y esto podría usarse para leer una base de datos SQLite. Eso le daría un sitio de WordPress de solo lectura, no terriblemente emocionante :-)
Sin embargo, tal como lo veo, este no es el caso de uso principal para ZerovM. Las aplicaciones existentes con gran cantidad de bases de datos deben reescribirse para su uso con ZeroVM. ZeroVM está más destinado a sistemas masivamente escalables donde desea procesar muchos elementos de datos en paralelo.
Imagine que tiene 1,000,000 de correos electrónicos que necesita buscar. Los correos se almacenan en un bloque de almacenamiento como OpenStack Swift o Amazon S3 . Esto significa que los archivos físicos se almacenan en cierto número de servidores de almacenamiento. Tradicionalmente, necesitaría extraer todo el correo a una cierta cantidad de nodos de cómputo para buscarlos. Con ZeroVM y su integración con Swift , puede enviar el código a los datos . Esto es posible porque el código es pequeño (algunos megabytes) en comparación con una imagen de máquina virtual voluminosa, y porque es seguro ejecutar código no confiable en el sandbox ZeroVM.
Por lo tanto, ZeroVM está diseñado para arquitecturas altamente escalables donde cada solicitud opera en diferentes piezas de datos.
Para un sitio de WordPress, esto podría significar que uno debe almacenar cada publicación de blog en un dato separado y tener una instancia de ZeroVM dedicada responsable de cada publicación. Actualmente, el sistema de archivos es de solo lectura, pero hay planes para hacerlo de lectura y escritura y la instancia de ZeroVM responsable de una publicación de blog dada podría manejar cosas como comentarios. Necesitaría un equilibrador de carga en el frente que sea capaz de enrutar el tráfico de manera adecuada. El resultado es una arquitectura muy diferente a la actual de WordPress, pero más escalable. Actualmente implementar esto se deja como un ejercicio para el lector.