HeadlinesBriefing HeadlinesBriefing.com

Pengujian simulasi deterministik pada celld

Hacker News •
×

Kami sedang membangun celld, runtime untuk aplikasi Cloudflare Workers dan Durable Objects di mesin Anda sendiri. Bisa berjalan dengan S3-compatible object store sebagai satu-satunya dependensi layanan eksternal.

celld adalah sistem terdistribusi. Membangun sistem terdistribusi yang andal sulit, sebagian karena kita mungkin tidak disengaja bergantung pada asumsi yang tidak berlaku dalam praktik, meskipun kita ketahui masalah. Peter Deutsch's Delapan Kesalahan Komputasi Terdistribusi menyantumkan asumsi seperti "Jaringan dapat diandalkan" dan "Latency nol."

Bug bisa bergantung pada urutan tertunda pesan, penulisan gagal, dan restart node. Peristiwa ini bisa terjadi urutan yang berbeda pada uji run berikutnya, membuat kesalahan sul direproduksi. Kita perlu mampu mengulang run gagal sehingga kita bisa meneliti penyebabnya dan memeriksa apakah solusi yang dicoba benar-benar masalah menyelesaikan. Itulah mengapa kita menggunakan simulasi deterministik (DST).

Simulator kami masih dalam pengembangan dan tidak termasuk repositori publik celld, tetapi sudah menemukan bug sebelumnya tidak dikenal. Dalam artikel ini, kita akan menjelaskan bagaimana DST bekerja di celld dan cara membantu kami menemukan, mereproduksi, dan memperbaiki salah satu bug tersebut. DST menjalankan produksi code celld dalam lingkungan yang dikontrol oleh simulator. Satu cell di celld menjalankan aplikasi code dan memiliki SQLite database sendiri. Selama cell melakukan pekerjaan, celld menangani peristiwa seperti permintaan masuk, operasi penyimpanan selesai, dan timer peluncuran. Kode yang memilih peristiwa selanjutnya adalah kode yang berbeda dari kode yang mengolahnya. Ini memungkinkan simulator mengontrol urutan peristiwa sambil menjalankan kode pengolahan peristiwa yang sama seperti di produksi.

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing