Kami menolak desain yang lebih murah dan memberi setiap agen kernelnya sendiri

2026-08-05

Cara paling hemat untuk menjual hosting agen adalah kolam bersama. Beli beberapa mesin besar, jalankan tiap pelanggan sebagai kontainer dengan kuota CPU dan memori, lalu padatkan. Per pelanggan biayanya sepersekian dari instance khusus, penyewa baru menyala dalam hitungan detik karena tidak ada yang perlu di-boot, dan Anda bisa menjual melebihi kapasitas, karena pelanggan menganggur di waktu yang berbeda-beda dan puncak pemakaian mereka saling meratakan.

Kebanyakan platform agen dibangun begini. Ini desain yang bagus untuk hal yang memang dirancang untuknya. Kami menolaknya, dan alasannya ada pada sifat beban kerjanya.

Penyewanya bukan aplikasi web

Multi-tenancy berbasis kontainer mengasumsikan penyewa yang cukup sempit perilakunya. Aplikasi web menerima request, menjalankan kode yang ditulis dan ditinjau penulisnya, bicara dengan sedikit host yang sudah diketahui, dan tinggal di dalam amplop sumber daya yang bisa Anda perkirakan dari trafiknya. Penyewa seperti itu mudah dipagari, karena hampir semua yang dia lakukan sudah diputuskan sebelum deployment.

Agen AI mematahkan tiap asumsi itu.

Dia mengeksekusi kode yang tidak ditinjau siapa pun. Itu bukan cacat, itu produknya. Anda menyuruh agen mencapai sesuatu, lalu dia menulis dan menjalankan apa pun yang menurutnya mencapai itu. Kumpulan syscall yang mungkin dia panggil tidak bisa diketahui di muka, dan berubah ketika modelnya berubah — yang terjadi menurut jadwal penyedia model, bukan jadwal Anda.

Dia memulai trafik keluar atas penilaiannya sendiri. Aplikasi web bicara ke host yang ada di konfigurasinya. Agen mengambil URL yang dia temukan di sebuah dokumen, memasang paket yang menurutnya dia butuhkan, dan memanggil API yang dia temukan di tengah tugas. Penyaringan egress adalah kontrol kontainer standar di sini, dan allowlist yang benar-benar memuat apa yang dibutuhkan agen sudah mendekati internet terbuka.

Dia memegang rahasia berumur panjang di memori. Kunci model Anda, kredensial apa pun yang Anda berikan untuk dia bekerja, berkas-berkas yang sedang dia olah. Bukan sekadar lewat lalu dibuang, tapi dipegang, selama tugas yang bisa berjalan berjam-jam.

Taruh beberapa hal seperti itu di satu kernel, dan radius ledakan dari satu container escape adalah seluruh penyewa di mesin itu: kunci mereka, berkas mereka, pekerjaan mereka yang sedang berjalan. Container escape bukan hal teoretis, dan banyaknya cara sebuah beban kerja bisa menggapainya bertambah seiring makin banyaknya kode sembarang yang dia jalankan. Beban kerja ini menjalankan banyak sekali.

Kuota bukan isolasi seperti yang Anda kira

Kegagalan kedua lebih senyap dan terjadi tanpa ada yang menyerang apa pun.

Beban kerja agen meledak-ledak dengan pola yang mengalahkan penjadwalan bagi rata. Agen menganggur bermenit-menit menunggu jawaban model, lalu memenuhi satu inti untuk mengompilasi sesuatu, lalu menganggur lagi. Kalikan dengan tumpukan penyewa yang padat, dan kurva utilisasinya berduri, bukan mulus — persis kasus yang paling buruk ditangani oleh penjualan melebihi kapasitas.

Lalu ada soal loop. Agen yang salah membaca keluarannya sendiri lalu mencoba ulang selamanya adalah mode kegagalan yang biasa, bukan yang eksotis. CPU share akan menahannya, dalam arti tetangganya masih kebagian jadwal. Yang tidak ditahan oleh share adalah semua yang dipakai bersama tapi tidak dikuotai: tekanan page cache, kedalaman antrean disk, antarmuka jaringan, kunci-kunci milik kernel sendiri. Loop liar milik tetangga Anda menjadi latensi Anda, dan tidak ada apa pun di dasbor Anda yang menjelaskannya, karena dari sisi Anda tidak ada yang berubah.

Versi jujur dari “terisolasi dengan kuota” adalah: CPU dan memori terisolasi, sisanya kesepakatan sopan santun.

Apa yang kami bayar untuk pilihan ini

Instance khusus lebih mahal dijalankan, dan kami harus spesifik soal bagaimana mahalnya, karena keputusan tanpa harga yang disebutkan cuma slogan.

Harga dasarnya lebih tinggi. Satu slot kontainer bisa dijual seharga sepotong mesin besar. Instance khusus tidak bisa turun di bawah harga satu instance, dan itu menetapkan batas minimum keras untuk barang termurah yang bisa kami tawarkan. Tidak ada cara memutarinya dengan volume.

Penyediaan makan waktu menit, bukan detik. Kontainer menyala dengan membongkar image ke mesin yang sudah berjalan. Kami membuat instance, menunggu boot, menyetel kredensial sebagai langkah terpisah, memverifikasi kredensial itu benar-benar bekerja, lalu mengonfigurasi agen di atasnya. Proses awal kami terukur lebih lambat dibanding pesaing yang pendaftarannya langsung menjatuhkan Anda ke kontainer yang sudah hidup.

Kapasitas tidak bisa diratakan. Tiap instance disediakan untuk puncaknya dan dibayar terus-menerus, termasuk saat dia menganggur menunggu panggilan model. Di kolam bersama, waktu nganggur itu adalah ledakan pemakaian orang lain. Bagi kami itu ya waktu nganggur, dan kami membayarnya.

Itu bukan masalah cara bercerita. Itu ongkos permanen dari desain ini.

Apa yang kami dapat

Sebuah mesin yang password root-nya Anda pegang.

Itu satu kalimat dan layak dibongkar, karena itulah seluruh imbalan atas tiga ongkos di atas. Anda bisa SSH lewat port 22 dengan kredensial yang kami verifikasi bekerja sebelum kami tunjukkan ke Anda. Anda bisa membaca log yang sebenarnya, bukan tampilan yang sudah disaring. Anda bisa memasang sesuatu yang tidak pernah kami sertakan dan tidak pernah kami antisipasi, termasuk hal yang butuh modul kernel atau operasi istimewa yang tidak akan pernah diberikan platform kontainer mana pun. Anda bisa memeriksa persis apa yang dilakukan agen Anda, sampai ke level proses, karena Anda punya level proses untuk diperiksa.

Anda juga bisa pergi. Ambil snapshot, pindahkan ke tempat lain, lanjut bekerja. Tidak ada bagian dari setup Anda yang bergantung pada control plane kami saat berjalan. Agen berjalan di mesin itu, memegang kuncinya sendiri, dan tidak perlu menelepon kami untuk berfungsi.

Sifat terakhir itu yang paling penting bagi kami, dan itu sebenarnya bukan argumen teknis. Sebuah kursi di platform bisa dibentuk ulang oleh platform. Batasan berubah, sebuah runtime dihentikan, sandbox diperketat karena alasan yang tidak ada hubungannya dengan Anda. Server sewaan adalah janji yang lebih kecil, dan janji yang lebih kecil lebih jarang ingkar. Yang Anda dapat adalah instance, sebuah IP, sebuah disk, dan sebuah password root. Yang bisa kami ubah sepihak setelahnya hampir tidak ada, dan justru itu intinya.

Di mana batasnya sebenarnya

Saya ingin hati-hati supaya tidak berlebihan mengklaim. Instance khusus bukan jaminan keamanan. Dia satu batas, di level kernel, dan dia menghapus satu kelas kegagalan: kelas di mana masalah tetangga Anda menjadi masalah Anda. Semua yang ada di atas batas itu tetap tanggung jawab Anda, dan agen yang memegang kunci Anda tetap bisa melakukan sesuatu yang Anda sesali sepenuhnya di dalam mesinnya sendiri. Kami belum memecahkan itu, dan belum ada orang lain yang memecahkannya.

Yang kami lakukan adalah menolak menumpuk kelas kegagalan kedua di atas yang pertama demi membuat hitungan biaya kami sendiri lebih enak.

Pertanyaan terbuka yang jawabannya belum saya punya: penalaran ini berlaku karena agen menjalankan kode sembarang dan memegang rahasia. Kalau suatu saat ada runtime agen yang membuat kedua hal itu terbukti tidak benar lagi, alasan untuk desain yang lebih murah akan kembali sah, dan kamilah yang menagih lebih mahal untuk sebuah batas yang tidak dibutuhkan siapa-siapa.

Kembali ke blog