Terbaru & Terpercaya
Software

WebAssembly di Luar Peramban: Sandbox Ringan untuk Komputasi Tepi dan Plugin

Format bytecode portabel yang lahir di peramban kini menjalankan fungsi tepi dan sistem plugin, dengan waktu mulai jauh di bawah kontainer konvensional.

Andi Pratama
Andi Pratama
2 menit baca
Bagikan:
GTechUpdate Tech Banner
Foto: GTechUpdate Tech Banner

WebAssembly dirancang untuk menjalankan kode berkinerja tinggi di dalam peramban. Sifat yang membuatnya berhasil di sana — isolasi ketat, waktu mulai singkat, dan portabilitas antar arsitektur — ternyata persis yang dibutuhkan di luar peramban.

Perbandingan yang tepat bukan dengan kontainer

Kontainer mengisolasi dengan berbagi kernel sistem operasi dan memisahkan namespace. Modul WebAssembly mengisolasi pada tingkat yang lebih dalam: kode berjalan pada mesin virtual dengan model memori linear sendiri, tanpa akses apa pun ke sistem kecuali yang diberikan secara eksplisit.

Konsekuensinya terlihat pada waktu mulai. Kontainer membutuhkan puluhan hingga ratusan milidetik untuk siap; modul WebAssembly dapat diinstansiasi dalam hitungan mikrodetik hingga milidetik rendah, karena tidak ada sistem berkas yang dipasang dan tidak ada proses yang dijalankan.

Di mana perbedaan itu bernilai

Fungsi tepi adalah penerapan yang paling jelas. Ketika kode harus berjalan di puluhan lokasi dan dipanggil sesekali, biaya cold start mendominasi. Modul yang siap dalam satu milidetik menghilangkan persoalan tersebut sepenuhnya.

Penerapan kedua yang sering diremehkan adalah sistem plugin. Aplikasi yang ingin menjalankan kode buatan pengguna — aturan kustom, transformasi data, ekstensi — menghadapi dilema lama antara fleksibilitas dan keamanan. WebAssembly menyelesaikannya dengan memberi jaminan bahwa plugin tidak dapat menyentuh apa pun yang tidak diserahkan kepadanya, termasuk berkas dan jaringan.

WASI dan pertanyaan tentang akses sistem

Modul yang benar-benar terisolasi tidak dapat melakukan apa pun yang berguna. WASI menjawabnya dengan model kapabilitas: program tidak meminta "akses ke sistem berkas", melainkan menerima pegangan ke direktori tertentu yang diserahkan induknya.

Perbedaannya dengan izin tradisional cukup tajam. Pada model izin, program dapat menyebut jalur mana pun dan sistem memutuskan boleh atau tidak. Pada model kapabilitas, program hanya dapat menyebut hal yang sudah dipegangnya — jalur yang tidak diserahkan tidak dapat dirujuk sama sekali.

Batas yang masih nyata

Beberapa hal belum matang. Dukungan threading dan jaringan berkembang tetapi belum seragam antar runtime. Bahasa dengan pengumpul sampah menghasilkan modul yang jauh lebih besar karena runtime-nya ikut disertakan, meski proposal GC bersama mulai memperbaiki keadaan ini.

Ekosistem pustaka juga belum sebanding dengan platform mapan. Kode yang mengasumsikan akses sistem bebas sering memerlukan penyesuaian sebelum dapat dikompilasi.

Cara menilainya

WebAssembly bukan pengganti kontainer untuk layanan berumur panjang yang membutuhkan akses sistem penuh. Ia unggul pada beban kerja yang singkat, sering dipanggil, dan membutuhkan isolasi kuat.

Pertanyaan yang tepat sebelum mengadopsinya adalah apakah waktu mulai benar-benar menjadi persoalan, dan apakah isolasi yang lebih ketat memberi nilai nyata. Jika jawabannya tidak untuk keduanya, kontainer yang sudah dikuasai tim tetap merupakan pilihan yang lebih bijak.

Andi Pratama

Andi Pratama

Kontributor Redaksi

Spesialis keamanan siber, ethical hacker, dan analis kerentanan infrastruktur jaringan industri.

Artikel Terkait

Lihat Semua →