Apa yang ZeroVM lakukan virtualisasi?

12

Saya mengalami sedikit kesulitan membungkus kepala saya di antara ZeroVM .

Katakanlah saya ingin menjalankan Wordpress. Salah satu opsi adalah menyewa server virtual yang di-host yang menjalankan VMWare, Virtualbox, Xen, CoreOS, atau yang serupa. Dalam hal ini, apa yang sedang divirtualisasikan adalah server dan perangkat kerasnya. Setelah server virtual disediakan, saya dapat SSH untuk itu, memulai dan menghentikan layanan, restart mesin, dll.

Hal-hal yang saya baca online mengatakan bahwa ZeroVM membuat aplikasi virtual, tetapi saya tidak mengerti apa artinya itu. Apakah ZeroVM menyediakan wadah yang mirip dengan Docker ?

Melanjutkan contoh saya di atas, bagaimana saya menggunakan ZeroVM untuk menjalankan Wordpress? Apa manfaatnya dengan memberikan?

Mari kita memperluas contoh Wordpress saya ke lingkungan hosting bersama.

Halaman beranda ZeroVM mengatakan:

Setiap permintaan ke Aplikasi ZeroVM, atau zapp, menghasilkan pemijahan instance independen. Setiap instance terisolasi dan aman, berputar dalam waktu di bawah 5 milidetik, dan dihancurkan setelah menyelesaikan permintaan. Kecepatan ZeroVM berasal dari setiap instance yang memvirtualisasikan hanya apa yang diperlukan untuk menjalankan satu proses.

Apakah ini berarti bahwa setiap permintaan ke aplikasi ZeroVM memunculkan proses baru? Apa yang terjadi jika Anda menjalankan lebih dari satu aplikasi ZeroVM di server? Bagaimana permintaan dialihkan ke aplikasi yang benar?

keberanian
sumber

Jawaban:

9

Pertanyaan bagus! Saya bekerja di tim ZeroVM dan berharap saya dapat membantu membereskan semuanya!

Apakah ZeroVM menyediakan wadah yang mirip dengan Docker?

Tidak terlalu. Docker menggunakan LXC dan fitur kernel lainnya untuk menyediakan lingkungan berpasir. ZeroVM berjalan sepenuhnya di ruang pengguna dan kotak pasir satu aplikasi.

Secara singkat, ZeroVM bekerja dengan terlebih dahulu memvalidasi aplikasi yang akan dijalankan dan kemudian hanya menjalankannya. Ketika dijalankan, aplikasi pada dasarnya berjalan dengan tidak ada overhead tambahan - tidak ada mesin virtual di belakangnya.

Untuk memvalidasi aplikasi, itu harus dikompilasi silang ke dalam bentuk khusus kode mesin x86. Bentuk khusus ini memiliki properti bagus yang dapat diverifikasi secara statis sebagai "aman". Antara lain, "aman" berarti bahwa kode tidak akan melompat ke alamat di luar segmen memori tertentu yang disediakan oleh ZeroVM. Program ini juga tidak dapat memanggil panggilan sistem normal, hanya dapat memanggil antarmuka syscall yang sangat sempit yang disediakan oleh ZeroVM. Validasi ini diambil dari proyek Native Client Google .

Bagaimana saya menggunakan ZeroVM untuk menjalankan Wordpress? Apa manfaatnya dengan memberikan?

Pada prinsipnya Anda bisa mengkompilasi silang program C yang merupakan penerjemah PHP. ZeroVM kemudian dapat memulai juru bahasa PHP di kotak pasir dan memberinya file PHP yang membentuk WordPress. ZeroVM menyediakan sistem file yang hanya dapat dibaca dalam memori dan ini dapat digunakan untuk membaca basis data SQLite. Itu akan memberi Anda situs WordPress hanya-baca - tidak terlalu menarik :-)

Namun, seperti yang saya lihat, ini bukan kasus penggunaan utama untuk ZerovM. Aplikasi database-berat yang ada perlu ditulis ulang untuk digunakan dengan ZeroVM. ZeroVM lebih dimaksudkan untuk sistem berskala besar di mana Anda ingin memproses banyak item data secara paralel.

Bayangkan Anda memiliki 1.000.000 email yang harus Anda cari. Email disimpan dalam penyimpanan blok seperti OpenStack Swift atau Amazon S3 . Ini berarti bahwa file fisik disimpan di sejumlah server penyimpanan. Secara tradisional, Anda perlu menarik semua email ke sejumlah node komputasi untuk mencari mereka. Dengan ZeroVM dan integrasinya dengan Swift , Anda dapat mengirim kode ke data . Ini dimungkinkan karena kodenya kecil (beberapa megabyte) dibandingkan dengan gambar mesin virtual yang besar, dan karena aman untuk mengeksekusi kode yang tidak terpercaya di kotak pasir ZeroVM.

Jadi ZeroVM dimaksudkan untuk arsitektur yang sangat skalabel di mana setiap permintaan beroperasi pada bagian data yang berbeda.

Untuk situs WordPress, ini bisa berarti bahwa seseorang harus menyimpan setiap posting blog di bagian data yang terpisah dan memiliki instance ZeroVM khusus yang bertanggung jawab untuk setiap posting. Saat ini, sistem file bersifat read-only, tetapi ada rencana untuk membuatnya read-write dan instance ZeroVM yang bertanggung jawab untuk posting blog yang diberikan kemudian dapat menangani hal-hal seperti komentar. Anda akan memerlukan penyeimbang beban di depan yang mampu merutekan lalu lintas dengan tepat. Hasilnya adalah arsitektur yang sangat berbeda dari WordPress saat ini, tetapi lebih scalable. Sebenarnya menerapkan ini saat ini dibiarkan sebagai latihan untuk pembaca.

Martin Geisler
sumber
4

Tampaknya menjadi ujung pendarahan. Rackspace melakukan penggalian di LXC karena 'tidak aman' sebagai perbandingan, tetapi sampai whitepaper muncul pada topik, saya akan dengan penilaian yang kuat.

  • Apakah ZeroVM Menyediakan wadah yang mirip dengan Docker?

From: Info World "Beberapa perbandingan yang jelas dimungkinkan antara ZeroVM dan proyek seperti Docker, tetapi tujuannya sedikit berbeda. Docker adalah tentang pengemasan untuk penyebaran melalui berbagai lingkungan. ZeroVM lebih tentang menyediakan cara agar aplikasi divirtualisasi dengan cara yang ringan di lingkungan tertentu di mana solusi VM penuh akan berlebihan dan tidak benar-benar dibutuhkan. "

  • Bagaimana cara saya menggunakan ZeroVM untuk menjalankan Wordpress?

Agaknya Anda perlu apache untuk dikompilasi untuk ZeroVM. Saya tidak yakin berapa banyak basis kode Wordpress akan rusak dalam kondisi seperti itu.

  • Apa manfaatnya?

Departemen pemasaran Rackspace akan membuat kasus terbaik untuk ini: Sini

  • Tantangan apa yang akan saya hadapi? (Ditambahkan untuk kepentingan pembaca masa depan)

Perangkat lunak / platform adalah pendarahan sehingga semua cobaan dan kesulitan yang terkait dengan menjalankan perangkat lunak pendarahan berlaku. (Termasuk kurangnya basis pengguna yang besar untuk dukungan). Ini juga merupakan " Platform " baru . Pengembang perangkat lunak mulai terbiasa dengan platform tervirtualisasi ... tetapi ini adalah generasi baru dari virtualisasi di atas dan di luar perangkat keras (VMWare. OracleVM, HyperV) dan virtualisasi kernel (OpenVZ) .. Jangan kaget jika tidak ada yang berfungsi seperti yang diharapkan di awal permainan ini.

Daniel Widrick
sumber
2

Melanjutkan contoh saya di atas, bagaimana saya menggunakan ZeroVM untuk menjalankan Wordpress? Apa manfaatnya dengan memberikan?

ZeroVM pada dasarnya adalah platform untuk membangun PaaS'es. Oleh karena itu pertanyaan di atas memiliki sedikit makna dalam "dunia ZeroVM". Tetapi mari kita asumsikan bahwa seseorang telah menginstal infrastruktur ZeroVM untuk Anda (akan menyebutnya "Penyedia"). Kemudian Anda dapat membuat PaaS atau SaaS Anda sendiri di atas infrastruktur itu. Dalam kasus WordPress: Penyedia memberi Anda kemampuan untuk menjalankan kode apa pun pada infrastruktur Penyedia, Anda dapat menjalankan WordPress, ketika kode Anda berjalan - Anda membayar untuk itu. Ketika kode Anda tidak berjalan - Anda tidak membayar. Yaitu ketika seseorang membuka halaman wordpress Anda akan membayar permintaan tersebut, setelah tanggapan dikirimkan kepada pengguna - Anda berhenti membayar apa pun. Lebih dari itu, karena setiap instance ZeroVM akan melayani satu permintaan, situs WordPress Anda pada dasarnya hanya perlu melayani satu halaman untuk satu pengguna. Dan kemudian saya berpendapat bahwa Anda tidak benar-benar membutuhkan "WordPress" karena WordPress saat ini adalah antarmuka PHP ke database MySQL, dan dalam hal satu pengguna dan satu permintaan Anda tidak memerlukan database terpusat. Dan seterusnya.

Apakah ini berarti bahwa setiap permintaan ke aplikasi ZeroVM memunculkan proses baru?

Iya dan tidak. Tergantung bagaimana Anda ingin menggunakannya. Jika setiap permintaan adalah aplikasi yang sama sekali berbeda dengan basis kode yang sama sekali berbeda - maka ya, Anda akan memerlukan proses baru. Tetapi jika setiap permintaan adalah panggilan ke aplikasi web PHP atau WSGI, maka ZeroVM dapat bertindak sebagai "daemon" yang melayani permintaan jauh lebih cepat dengan menghemat waktu setup platform (mengatur filesystem + python + wsgi untuk aplikasi WSGI, misalnya ).

Bagaimana permintaan dialihkan ke aplikasi yang benar?

Sekarang infrastruktur diintegrasikan ke dalam toko objek Swift . Permintaan objek Swift akan memicu eksekusi potongan kode tertentu. Atau POST ke URL tertentu akan memicu pelaksanaan payload permintaan POST. Tentu saja semua jenis integrasi lain dimungkinkan, misalnya ke server web atau antrian yang didistribusikan.

user64204
sumber