Tokowibu — Superapp Komunitas Anime, Cosplay & Game
Sisi backend untuk superapp komunitas anime dan cosplay: tiket event, konten berbayar kreator, dan marketplace multi-penjual.
Masalahnya
Tiga produk yang biasanya berdiri sendiri dipasang di dalam satu aplikasi: penjualan tiket, konten berbayar, dan marketplace multi-penjual. Ketiganya menyentuh uang, dan masing-masing punya aturan berbeda soal kapan uang dianggap berpindah — tiket dibayar di muka lalu ditukar saat acara, konten dibuka sekali lalu berlaku seterusnya, pesanan barang baru tuntas setelah barangnya sampai. Di bawah satu akun, ketiganya tetap harus terbaca sebagai satu riwayat.
Cara saya menanganinya
Yang menentukan di sini bukan jumlah fiturnya, melainkan batas yang harus dijaga backend. Stok penjual dan kuota tiket adalah sumber daya terbatas yang bisa diperebutkan dua pembeli pada detik yang sama, dan perebutan seperti itu harus diselesaikan di database — lapisan aplikasi bisa berjalan di beberapa proses sekaligus, dan pemeriksaan yang dilakukan di sana tidak melihat proses tetangganya. Uang juga menuntut riwayat yang bisa ditelusuri: pertanyaan yang selalu datang belakangan adalah kapan sebuah status berubah dan atas dasar apa, bukan apa statusnya sekarang.