Sunday, September 9, 2018

Beralih ke proxysql


Sebelum memulai pembahasan, saya ingin memberitahukan terlebih dahulu bahwa topik yang saya gunakan disini, sudah pernah diimplementasikan di proyek nostra, tepatnya proyek traveloka atau yang dikenal sebagai proyek “Candi”. Kenapa disebut proyek Candi? Karena proyek ini dikerjakan dalam waktu 2 minggu oleh para techlead+ 1 noob dari divisi Devops.

Si anak baru mendapat tugas untuk menyiapkan infrastruktur database yang dapat menampung 800 user aktif di waktu yang bersamaan. Dengan gambaran infrastruktur tersebut, si anak baru melakukan studi literatur dengan cara berkomunikasi dengan orang orang sudah berpengalaman dibidang ini. Dan akhirnya dia mendapatkan masukan untuk menggunakan tool yang bernama proxysql ini dari seniornya di kantor tempat dia bekerja sebelumnya.

Dan,,,
Mari kita berkenalan dengan si Proxysql tersebut.

Apa itu Proxysql?

Kalau kita lihat dari namanya, kita dapat mengetahui bahwa proxysql berasal dari kata proxy dan sql. Proxy yang berarti perantara dan sql(Structured Query Language). Proxysql merupakan sebuah proxy produk mysql yang berbasis opensource. Proxysql ini menjadi penghubung antara backend server dan database server. Proxysql hanya support untuk produk produk mysql lainnya seperti mysql, mariadb, percona dan galera cluster.

Kelebihan Proxysql

Jika Haproxy hanya bisa menggunakan 1 algoritma(Least conn, round robin atau source) saat pengimplementasian, lain halnya dengan proxysql. Proxysql dapat mengimplementasikan ketiga algoritma tersebut sekaligus.
Kita juga sangat mudah dalam pengkonfigurasian proxysql ini dikarenakan pengoperasiannya 99% mirip dengan pengoperasian mysql cli.





Selain itu proxysql juga memili prinsip kerja yang cukup spesifik, yaitu:

1.         Query Routing
Query select dapat diarahkan ke server yang kita inginkan( 1 atau lebih server). Demikian pula dengan query write, call, maupun select for update.
2.         Query caching
Kita dapat melakukan pengecekan query yang paling sering di hit,  maupun yang paling lama saat di hit. Dan query query tersebut dapat kita arahkan ke server yang kita inginkan.

Dengan 2 hal tersebut, kita dapat mengoptimalkan kinerja database server kita, sehingga tidak ada server yang overload dan tidak ada yang tidak bekerja sama sekali.  

Sebelum mengakhiri thread ini saya ingin mengajak untuk mengimplementasikan tool ini disetiap proyek yang memilih mysql sebagai databasenya khususnya yang sudah clustering. 

Terima kasih 

  

No comments:

Post a Comment