• (022) 6902 1117

The Quest for Scalability

 

  • Published by superadmin
  • 10/12/2014 21:00:03 WIB

Banyak orang yang bisa membuat website, tapi membuat website yang mampu melayani ribuan pengunjung secara bersamaan, itu lain cerita. Begitu kata orang. Mungkin Anda pernah mendengar tentang Slashdot Effect atau kalau di Indonesia, Detik Effect, di mana sebuah website bisa berhenti beroperasi karena kelebihan beban. Oleh karenanya, dari sejak belum launching kami merancang infrastruktur Projects.co.id agar dapat menahan beban seperti itu.

Konfigurasi awal kami adalah 1 load balancer, 6 web server, 6 database server dan sebuah session database sendiri. Web server semuanya dilengkapi Varnish cache dan Redis. Apalagi dengan spesifikasi server 24 core 24 GB RAM, tampaknya seperti rencana yang sempurna. Nothing can go wrong, begitu kami pikir.

Ternyata dugaan kami salah. Salah besar. Cluster database yang kami bangun hanya bertahan satu minggu. Tiga dari enam node mengalami synchronization failure, sehingga akhirnya mengganggu kinerja cluster database secara keseluruhan. Lalu apa sebenarnya yang salah dengan konfigurasi 6 node database cluster?

Mungkin Anda pernah berbelanja di toko swalayan semacam Yogya atau Borma (halah ... iklan, biarin aja), di mana di satu lorong terdapat lebih dari 10 orang SPG. Sudah lorongnya sempit, ditambah mereka ogah bergerak ke mana-mana, hanya mengobrol saja sesama mereka di depan rak-rak barang. Akibatnya kita sebagai pengunjung jadi segan untuk melewati lorong itu. Kalaupun terpaksa kita harus mengambil suatu barang di situ, kadang suara permisi kita kalah terdengar oleh rumpian sesama mereka.

Inilah perumpamaan yang terjadi dengan database cluster kami. Enam node telalu banyak untuk menangani beberapa ratus pengunjung. Bahkan mungkin tidak diperlukan juga untuk menangani sampai puluhan ribu pengunjung. Mereka terlalu sibuk sendiri berkomunikasi antar node untuk men-sincron-kan data, sementara request dari user akhirnya harus mengalami antrian. Setiap perubahan di database seperti menjadi 6 kali dieksekusi. Keadaan diperparah dengan adanya satu node out-of-sync, kemudian menular ke dua server berikutnya.

Akibat dari peristiwa ini, Projects.co.id harus mengalami maintenance selama beberapa jam, dan kunjungan menurun drastis sampai beberapa hari berikutnya. Suatu pelajaran yang harus dibayar mahal.

Saat ini kami menggunakan cluster database dengan konfigurasi 3 node. Kelihatannya ini adalah konfigurasi yang optimal untuk kami saat ini. Performance dari website secara keseluruhan juga sudah terdongkrak kembali, apalagi setelah kami juga menggunakan jasa Content Delivery Network (CDN).

Moral of the story adalah jangan membunuh lalat memakai granat. Skalabilitas harus diterapkan secara bertahap, tidak bisa langsung lompat ke level yang tinggi berdasarkan asumsi dan kekhawatiran. Semoga ini bermanfaat buat para pelaku startup di Indonesia.

Comments

 


Live Chat