Lewati ke konten utama

Skalabilitas

Ketika kita memanfaat queue, secara alami kita dapat menerapkan arsitektur publisher -> consumer dengan mudah. Jika antrian submission berada di channel queue yang sudah menumpuk, kita bisa secara mudah membuat consumer baru (instance worker) untuk menangani submission yang masuk.

Selain itu, kita juga bisa secara mudah untuk memetakan submission tertentu untuk ditangani oleh consumer tertentu dengan memanfaatkan channel queue yang berbeda. Ini akan sangat berguna ketika kita membutuhkan machine specification yang berbeda untuk kategori submission tertentu.

Contoh pemetaan antara machine specification dengan kategori submission tertentu.

Nama Channel QueueMachine SpecificationSubmission CategorySuitable Existing autograder
submissions:low_spec1 CPU; 2 GB RAMNode.js, Python, Front-End Webassistest, tetrapod, al-battani.
submissions:middle_spec2 CPU; 4 GB RAMMachine Learning, JVM, Kotlinquicksilver, keris.
submissions:high_spec4 CPU; 8 GB RAMAndroid, Flutter, iOS, React Native, etc.-

Scalable, Apakah Perlu?

Cara worker bekerja layaknya sebuah antrian di toko. Pelanggan yang antri merepresentasikan submission yang masuk, sedangkan petugas kasir merepresentasikan sistem worker.

Ketika antrian sudah sangat panjang, alias terjadi badai submission, waiting time submission akan meningkat. Ketika waiting time dianggap sudah melebihi batas wajar, merekrut kasir baru alias menambah instance worker adalah solusi untuk mengurangi panjangnya antrian. Sebaliknya, ketika kita berada di fase surut, kita juga bisa secara mudah menghapus instance worker agar bisa kembali "berhemat".

Faktanya, proses scaling hingga saat ini belum pernah dilakukan (per November 2023), bahkan ketika ada badai submission Back-End Pemula hingga 300+ submission masuk per harinya. Di kala itu, satu instance masih sangat sanggup untuk menangani submission dengan hasil rata-rata waiting time submission < 60 Menit.

Desain dari worker memang sangat scalable, tetapi proses scaling akan sangat jarang dilakukan, bahkan pada kondisi badai submission. Pernyataan ini mungkin tidak akurat jika memang Dicoding sudah sangat massive.