- OpenWorkers adalah runtime open-source yang menjalankan JavaScript di atas V8, sehingga komputasi edge dapat diterapkan di infrastruktur sendiri
- Mendukung penyimpanan KV, PostgreSQL, storage kompatibel S3/R2, service bindings, serta variabel lingkungan dan secret
- Menjaga kompatibilitas tinggi dengan Cloudflare Workers, termasuk Web API utama seperti fetch, ReadableStream, dan crypto.subtle
- Self-hosting sederhana dimungkinkan dengan sandbox V8 Isolate, penjadwalan cron, dan deployment berbasis Docker Compose
- Proyek ini telah berkembang selama sekitar 7 tahun, dengan tujuan menjadi lingkungan eksekusi JavaScript tanpa ketergantungan vendor
Ikhtisar OpenWorkers
- OpenWorkers adalah runtime kompatibel Cloudflare Workers yang ditulis dengan Rust, dan menjalankan JavaScript menggunakan V8 Isolate
- Memungkinkan pemanfaatan keunggulan komputasi edge juga di lingkungan server sendiri
- Dirilis sebagai open source sehingga bebas untuk dideploy dan dimodifikasi
Fitur utama
- Melalui fitur Bindings, dapat terhubung ke berbagai sumber daya eksternal
- Storage KV: mendukung get, put, delete, list
- Integrasi dengan database PostgreSQL
- Dukungan untuk storage kompatibel S3/R2
- Termasuk service bindings, variabel lingkungan, dan manajemen secret
- Dukungan Web API
- Menyediakan API standar seperti fetch, Request, Response, dan ReadableStream
- Termasuk crypto.subtle, TextEncoder/Decoder, Blob, setTimeout, dan AbortController
Arsitektur
- Sistem terdiri dari proxy nginx, dashboard, API, layanan log, runner, PostgreSQL, NATS, scheduler, dan komponen lainnya
- Setiap runner mengeksekusi kode di dalam V8 Isolate, dengan batas CPU 100ms dan memori 128MB
- Termasuk scheduler bawaan yang mendukung sintaks cron 5–6 field
- Menjaga kompatibilitas sintaks dengan Cloudflare Workers
Self-hosting
- Deployment dapat dilakukan hanya dengan satu database PostgreSQL dan satu file Docker Compose
- Dapat dijalankan dengan mudah menggunakan perintah
git clone, pengaturan .env, dan docker compose up
- Termasuk proses migrasi dan pembuatan token
Latar belakang pengembangan
- Proyek ini diselesaikan melalui proses pengembangan selama sekitar 7 tahun
- Pada awalnya bereksperimen dengan sandboxing JS menggunakan vm2, lalu berkembang dengan inspirasi dari model Cloudflare Workers
- Setelah melalui Deno-core, kini ditulis ulang berbasis rusty_v8
- Tujuannya adalah menyediakan pengalaman pengembang (DX) setingkat Cloudflare Workers sambil membangun lingkungan eksekusi server sendiri tanpa ketergantungan vendor
- Ke depannya direncanakan penambahan fitur deterministic debugging melalui rekaman dan pemutaran ulang eksekusi
1 komentar
Komentar Hacker News
Konsep membawa kekuatan edge computing ke infrastruktur sendiri terasa menarik
Namun self-hosting terasa agak bertentangan dengan esensi edge computing itu sendiri
Ini adalah model yang dimungkinkan karena vendor besar seperti Cloudflare memiliki lebih dari 300 PoP (Point of Presence) di seluruh dunia
Tentu saja, struktur serupa bisa dibangun dengan menggabungkan vendor yang lebih kecil dan lebih etis, tetapi butuh usaha dan risiko yang jauh lebih besar
Mungkin sekitar 10 di wilayah-wilayah utama saja sudah cukup
Meski begitu, saya juga khawatir koordinasinya akan terlalu sulit untuk dilakukan dengan aman dan andal
Masalah dengan solusi sandbox adalah harus ada jaminan kuat bahwa kode tidak bisa keluar dari sandbox
Untuk membuktikannya, dibutuhkan hasil pengujian terhadap berbagai skenario serangan dan dokumentasi yang rinci
Namun dokumentasi setingkat itu sangat jarang, dan sulit menemukan contoh yang benar-benar bisa dipercaya
Karena itu, saya biasanya memeriksa apakah ada kasus penggunaan nyata di lingkungan produksi perusahaan besar yang dipelihara oleh tim keamanan
Bahkan kadang mereka menerapkan rilis V8 lebih cepat daripada Chrome
Setiap worker berjalan sebagai isolate, bukan proses terpisah, sehingga mirip dengan model Cloudflare
Tetapi saat menangani kode pihak ketiga yang benar-benar tidak tepercaya, lebih baik menambahkan satu lapis isolasi lagi dengan container atau VM
Sandboxing ini lebih berfokus pada isolasi resource daripada keamanan
Audit keamanan tingkat “kami sudah memverifikasi dan ini aman, percayalah” tidaklah cukup
tetapi di lingkungan self-hosting, Anda pada dasarnya sudah punya akses ke sistem, jadi kekhawatiran soal sandbox escape jauh lebih kecil
Menurut saya ini proyek yang keren
Jika workerd sudah open source, saya penasaran apakah pembeda OpenWorkers adalah bahwa ia menyediakan lingkungan lengkap
Saya juga ingin tahu perbedaan pada runtime itu sendiri, dan apakah ada rencana untuk layanan terkelola ke depannya
1️⃣ workerd hanya menyediakan runtime, sedangkan OpenWorkers adalah platform lengkap yang mencakup dashboard, API, scheduler, log, binding (KV, S3/R2, Postgres)
2️⃣ workerd berbasis C++, sementara OpenWorkers berbasis Rust + rusty_v8 sehingga lebih sederhana dan lebih mudah diutak-atik
3️⃣ Sudah ada versi terkelola di dash.openworkers.com, termasuk tier gratis
Namun self-hosting dirancang sebagai warga kelas satu
Inti dari Cloudflare Workers adalah penagihan per fungsi, tetapi jika di-self-host, pada akhirnya hardware tetap harus disiapkan di awal
Tidak semuanya harus dialihdayakan, dan bagus bahwa ada pilihan serupa
Opsi seperti ini membantu menurunkan hambatan adopsi
Dulu saya cukup banyak bekerja memisahkan deno_core, jadi saya paham kenapa dipindahkan ke raw rusty_v8
deno_core punya banyak kode legacy, jadi setiap kali diubah, test sering rusak
Namun kami pindah ke rusty_v8 agar bisa mengendalikan bagian dalam runtime dengan lebih rinci,
dan nantinya kami berencana menambahkan kembali fitur-fitur yang masih kurang ke runtime deno
Saya selalu mendukung proyek yang membantu mengurangi vendor lock-in
Saya berharap layanan cloud ditekan untuk menyesuaikan harga agar lebih masuk akal
Saat ini bahkan fitur dasar seperti NAT dikenai biaya berlebihan
Tentu cloud itu nyaman, tetapi masalahnya adalah biayanya tinggi dibanding DIY
Jika perusahaan besar memonopoli resource, individu bisa makin sulit melakukan hosting sendiri
Tetapi dalam praktiknya, di banyak negara biaya menjalankan sendiri justru lebih besar
Bukan sekadar instalasi, biaya personel untuk maintenance dan monitoring juga cukup signifikan
Akan bagus jika dokumentasi menjelaskan fitur yang saat ini belum berfungsi dan roadmap-nya
Prioritas berikutnya adalah fitur rekam/putar ulang eksekusi untuk debugging, dan kami akan menambahkan bagian roadmap ke dokumentasi
Diagram arsitektur ASCII terlihat rusak di Pixel + Firefox
Diagram berbasis teks memang menarik, tetapi dalam praktiknya lebih masuk akal untuk memublikasikan versi yang dikompilasi sebagai gambar
Secara teknis maupun struktural, ini ide produk yang sangat bagus
Saya terutama menyukai model membalas proyek open source milik vendor besar dengan open source juga
Artinya, alih-alih mereka mengambil open source lalu mengomersialkannya, kita justru mengembalikan model mereka ke open source — menurut saya pendekatan seperti inilah yang benar
Rasanya tren “bagaimana kalau kita host cloud langsung di komputer kita sendiri?” sedang kembali lagi
Belakangan ini tren self-hosting seperti ini terlihat di berbagai tempat
Video presentasi terkait juga menarik
Inti cloud adalah elastisitas (elasticity)
Struktur dasarnya adalah bisa menambah atau mengurangi instance sesuai kebutuhan, lalu membayar hanya untuk yang dipakai
Self-hosting memang membuat alat deployment jadi praktis, tetapi pada akhirnya Anda tetap harus menanggung biaya seluruh server
Jika bebannya tetap atau bisa diprediksi, itu tidak masalah, tetapi jika tidak, maka jadi tidak efisien
(Analogi sederhananya seperti naik bus dibanding memiliki van sendiri)
Developer bisa fokus mengimplementasikan event handler, dan menjadi lebih kuat lagi jika mencakup queue atau eksekusi yang durable
Pada akhirnya FaaS adalah alat tingkat tinggi yang mengabstraksikan kode boilerplate