To Be Efficient, Faster, Just Scale It Is Not Enought. You Need To Think about The Flow of Process or Algorithm That Run Thorugh It Too
Status
In progress
Created
May 23, 2025 04:55 AM
Tags
Gua inget dulu pernah ada diskusi di tempat kerja “kalo emang mau nambah data, cara gampanya naikin spek PC nya terus”. Vertical scaling, dimana biayanya akan exponensial seiring resoruce yang makin besar
Lalu apa alternatifnya? Horizontal scaling. Ibarat kalau di game lebih cepet kita pindah ke secondary weapon dibandingkan reload, di system engineering juga jauh lebih murah kalo kita nambah aja jumlah instancenya ketimbang memperkuat satu instance tersebut. Ini juga sekaligus ngatasi masalah availability jika kita take geo-redudnant into a hand. Tapi ini juga nimbulin masalah baru. Such HA configuration require complex data consistency handling yang gak ditemui di single instance.
Lalu bagaimana dengan efisiensi? Apakah dengan semakin banyak instance otomatis makin cepat. Yes jika emang compare dengan satu insance, tapi bagaimana dengan single insatnce process? Apakah satu resoruce itu diproses lebih cepat dibandingkan proses tanpa scaling.
That’s why the single approach of efficiency related too of fundamental dari computer programming: algorithm complexity. Algorithm complexity menjelaskan secara matematis seberapa efisien suatu algoritma compare dengan algoritma lainnya untuk masalah yang sama. Contoh klasik adalah algoritma sorting, dimana ada banyak sekali cara untuk melakukan sorting, tapi berabagai cara ini punya perbedaan dari efisiensi waktu dan tempat. Ada algoritama yang cepat, tapi makan space gede. Ada yang efisien dalam penggunaan space, tapi dia bisa tremendously lama
Mau masalah scaling atau masalah kompleksitas algoritma,s atu hal yang gak bisa dideny dari software industry adala kita mesti bisa menguji itu semua secara empirik. Kita mesti bener-bener punya data oh kalo jumlah isntance dikit duration dari aplikasi lama dengan angka sekian, oh algoritma sorting total waktu proses rata2 nya 15ms compare dengan algoritma sorring satunya yg rata2 nya 2ms. Timpang banget, dan kalo ini diterapiin di puluhan atau ratusan fungsi dalam satu aplikasi atau bahkan satu sistem, efeknya bisa radikal.
Such force to unleash itu semua adalah observability. Observability yang memungkinkan kita melakukan eksperimen saintifik dengan data real, bukan teori aja. Observability yang memungkinkan developer menguji algoritma, atau devops menguji settingan HA mereka. So we should understand observabilkity apa yang membantu.
One thing about scalability adalah kita mesti bisa memeasure performance aplikasi secara objektif dan konsisten. Ada metrik apa saja: pertama kita mesti tahu volume request yang masuk ke aplikasi atau volume operasi aplikasi itu seberapa besar. Kedua adalah dari semua volume operasi itu ada berapa persentase yang error. Dan perforamcen ketiga adalah rata-rata satu operasi dari awal sampai selesai itu berapa lama. Tiga perfroamcen indicator ini bisa jadi parameter untuk menguji oh kalo settingan HA satu ketiga di volume operasi yang sama mana yang errornya lebih besar, mana yang durasinya lebi lama.
Satu lagi soal code performance adalah dengan code profliri dan distributed traces. Kita bisa mengukur setiap run process, satu function tersebut berapa lama durasinya. Kita bisa compare dengan kondisi infrastruktur, memastika kondsitensi resource di bawah aplikasi itu sama sehingga didapat hasil yang reloiable. Aiming untuk sebuah nilai performanc ebisa jadi hal yang valuable buat developer