Memahami horizontal dan vertical scaling, dan tiga cara lain dalam melakukan perbaikan performa suatu layanan

Berkembangnya ekosistem startup digital di tanah air menuntut para pelaku startup digital perlu memastikan ketersediaan layanannya agar senantiasa dapat diakses oleh pengguna selama 24 jam. Ditambah strategi marketing gencar seperti promo tanggal dan bulan yang sama pada 11-11 (Promo 11 November), Harbolnas (Hari belanja online nasional), dan black friday kerap digaungkan untuk meningkatkan penjualan yang berbuntut pada tidak hanya memastikan ketersediaan layanan secara normal namun kemampuan melayani pengguna yang tiba-tiba meluap hingga jutaan pengguna per detik. Di sini lah kemudian konsep horizontal scaling dan vertical scaling berkembang guna menanggulangi hal tersebut.

Horizontal Scaling

Secara harfiah horizontal scaling berarti menambah jumlah server yang digunakan untuk melayani pengguna sehingga dapat mengurai antrian dan menghindari terjadinya RTO (request time out). Anda dapat membayangkan misal saat anda belanja di swalayan dengan hanya dua dari lima kasir yang terbuka, maka di jam-jam padat akan terjadi antrian untuk membayar di kasir. Kemudian manajemen swalayan menugaskan tiga orang karyawan untuk membuka tiga kasir yang masih tertutup sehingga seluruh lima kasir terbuka untuk melayani pelanggan yang sudah mengantri. Setelah jumlah pelanggan berkurang, maka ketiga kasir tersebut kemudian ditutup kembali. Hal seperti ini juga kita temukan pada pos pembayaran pintu tol, layanan imigrasi, teller perbankan, dan lain-lainnya.

Begitu juga di dunia IT, para pelaku startup digital melakukan penambahan jumlah server secara horizontal agar dapat melayani seluruh penguna yang menggunakan layanannya dan kemudian mematikan kembali server tambahan tersebut setelah jumlah pengguna menurun. Menariknya, di dunia digital tidak ada batasan dalam melakukan penambahan jumlah server seperti di dunia fisik. Dengan layanan cloud, para pelaku startup digital dapat menambah jumlah server hingga ratusan jumlahnya dalam tempo yang sangat singkat seperti satu jam atau beberapa menit kemudian menonaktifkannya kembali sesuai kebutuhan. Hal ini tentunya tidak dapat dilakukan di dunia fisik. Swalayan tadi tidak dapat tiba tiba membuka kasir lebih dari lima dikarenakan batasan fisik, meskipun antrian sudah sangat panjang.

Vertical Scaling

Vertical scaling dipahami sebagai peningkatan spesifikasi server, misal yang sebelumnya 2 CPU (Central Processing Unit), menjadi 4 CPU, begitu pula untuk RAM (Random Access Memory), storage dan bandwidth-nya. Kembali ke kasus swalayan, anda pasti pernah merasakan bahwa komputer yang digunakan kasir beroperasi sangat lama dalam membaca barcode, memasukkan promo, hingga mengeluarkan struk. Analogi vertical scaling adalah mengganti komputer tersebut dengan yang lebih cepat secara tiba-tiba kemudian mengembalikannya ke komputer lama dalam beberapa waktu kemudian. Semakin tidak mungkin dilakukan bukan di dunia fisik, namun hal tersebut dapat dilakukan di layanan digital berbasis cloud. Semisal server biasa dapat melayani pengguna dalam waktu 3 detik, pada saat-saat dibutuhkan misal satu jam atau bahkan beberapa menit, para pelaku startup digital dapat meningkatkan kapasitas server mereka hingga dua bahkan pulihan kali lipat agar dapat memberikan layanan yang dapat menyelesaikan tugasnya dalam 1 detik selesai.

Baik horizontal scaling maupun vertical scaling merupakan cara termudah untuk meningkatkan layanan secara instan. Namun selain itu masih ada tiga metodologi lain dalam melakukan perbaikan performa layanan yang tentunya memakan waktu, biaya, dan keputusan manajemen yang lebih kompleks.

Code Improvement / Refactoring

Code improvement atau istilah kerennya refactoring secara harfiah berarti memperbaiki kode, dalam hal ini kode yang memberikan layanan tersebut. Semakin hari semakin banyak saya temukan kecenderungan developer-developer membuat kode yang asal berhasil dan asal keluar hasilnya tanpa mengindahkan kaidah pemrograman yang baik. Misal penggunaan if beruntun dibandingkan switch, penggunaan loop di dalam loop, menyimpan semua data dalam bigint (big integer), tidak melakukan indexing database, dan sebagainya. Dapat diperdebatkan bahwa hal tersebut hanya memperbaiki response time yang cuma beberapa mili second (ms). Namun jangan salah beberapa ms tersebut jika dikalikan dengan jutaan request akan menghasilkan delay yang luar biasa lamanya.

Tentunya code improvement / refactoring membutuhkan waktu, keahlian, dan kedisiplinan. Hanya saja hal ini dapat menghemat jumlah dan spesifikasi server yang dibutuhkan dalam memberikan layanan.

OS / Service Tuning

Lebih sulit dibandingkan Code Improvement / Refactoring, OS / Service Tuning menuntut pelaku startup digital untuk mengoptimasi teknologi yang dipakai. Untuk melakukan hal ini dibutuhkan ahli yang mengerti OS / Service yang digunakan untuk kemudian disesuaikan dengan kebutuhan. Dewasa ini developer dibanjiri dengan banyaknya pilihan teknologi yang ada sehingga kehabisan waktu untuk mempelajari teknologi yang digunakan secara mendalam. Misal penggunaan PHP-FPM yang secara default hanya menggunakan 5 max_children. Jika tidak disetting, meskipun pelaku startup digital memiliki server 128 CPU, dengan RAM 2 TB, kodenya hanya akan tetap dapat melayani 5 pelanggan dalam satu waktu.

Alih Teknologi

Tidak dapat dipungkiri ada teknologi yang lebih superior dibandingkan teknologi lainnya. Teknologi PHP misalnya, meskipun mudah digunakan dan dipelajari teknologi PHP yang dikembangkan pada tahun 1995 tidak dapat menandingi kecepatan NodeJS dan Go Lang meskipun sudah diperbaharui hingga PHP 8.2 (versi terakhir saat tulisan ini dibuat). Tentunya alih teknologi tidak memakan usaha dan biaya yang sedikit mengingat perlu dilakukannya menulis ulang kode dalam bahasa baru dan melatih SDM yang dapat mengelola teknologi tersebut, namun yang paling esensial untuk menciptakan alih teknologi adalah dorongan manajemen.

Meskipun terlihat simpel, namun pilihan ini justru yang paling sulit dikarenakan perlunya dilakukan suatu transformasi dan berlaku hukum pertama Newton kelembaman. Namun, alih teknologi dapat meningkatkan performa layanan misal untuk kasus PHP ke NodeJS hingga 3 kali lipat lebih cepat, dan 4 kali lebih ringan yang berdampak sangat-sangat signifikan.

———————

Fadhli Zakiy

Technology Enthusiast, IT Principal, Full Stack Developer, Project Manager, and Sustainable Innovator