Pertimbangkan situs e-commerce, tempat Alice dan Bob mengedit daftar produk. Alice meningkatkan deskripsi, sementara Bob memperbarui harga. Mereka mulai mengedit Acme Wonder Widget secara bersamaan. Bob selesai lebih dulu dan menyimpan produk dengan harga baru. Alice membutuhkan waktu lebih lama untuk memperbarui deskripsi, dan ketika dia selesai, dia menyimpan produk dengan deskripsi barunya. Sayangnya, dia juga menimpa harga dengan harga lama, yang tidak dimaksudkan.
Dalam pengalaman saya, masalah ini sangat umum di aplikasi web. Beberapa perangkat lunak (mis. Perangkat lunak wiki) memang memiliki perlindungan terhadap ini - biasanya penyimpanan kedua gagal dengan "halaman diperbarui saat Anda mengedit". Tetapi sebagian besar situs web tidak memiliki perlindungan ini.
Perlu dicatat bahwa metode pengontrolnya aman untuk diri mereka sendiri. Biasanya mereka menggunakan transaksi basis data, yang membuat mereka aman dalam arti bahwa jika Alice dan Bob mencoba menyelamatkan pada saat yang sama, itu tidak akan menyebabkan korupsi. Kondisi balapan muncul dari Alice atau Bob yang memiliki data basi di browser mereka.
Bagaimana kita dapat mencegah kondisi balapan seperti itu? Secara khusus, saya ingin tahu:
- Teknik apa yang bisa digunakan? mis. melacak waktu perubahan terakhir. Apa pro dan kontra dari masing-masing.
- Apa pengalaman pengguna yang bermanfaat?
- Kerangka apa yang memiliki perlindungan ini dibangun?