Bagaimana skalabilitas perangkat lunak diukur?

21

Saya diminta membuat presentasi teknis kecil tentang skalabilitas aplikasi spesifik. Aplikasi ini dikembangkan menggunakan Java, Spring MVC, Hibernate. Saya memiliki akses ke kode sumber aplikasi.

Bagaimana saya bisa mengukur skalabilitas perangkat lunak (menggunakan sumber) dan metrik apa yang harus saya perhatikan ketika mengukur skalabilitas perangkat lunak?

artjom
sumber

Jawaban:

8

Saya akan mulai dengan membaca artikel Wikipedia tentang masalah ini.

Singkatnya, skalabilitas adalah bagaimana kinerja sistem tumbuh dengan menambahkan lebih banyak sumber daya atau, sebagai alternatif, bagaimana pemanfaatan sumber daya tumbuh dengan meningkatnya beban . Misalnya, berapa banyak pengguna secara bersamaan yang dapat menangani situs Anda sampai waktu respons tumbuh melampaui 0,3 detik? Pertanyaan yang sama setelah Anda menggandakan RAM / disk / CPU / etc yang tersedia. Anda mungkin dapat menggunakan pengetahuan Anda tentang internal aplikasi untuk memutuskan parameter mana yang perlu diperiksa.

Siapkan bangku tes dengan mesin server dan satu atau lebih mesin klien. Gunakan beberapa alat untuk membatasi jumlah sumber daya yang tersedia untuk server (misalnya ulimit) atau menjalankan beberapa aplikasi yang mengganggu di server. Ukur bagaimana server menangani permintaan klien. Ulangi langkah di atas secara bertahap meningkatkan / mengurangi beban yang mengganggu / sumber daya yang tersedia. Pada akhirnya Anda mendapatkan ruang n-dimensi dengan titik-titik di dalamnya. Mungkin lebih mudah untuk mengubah hanya satu parameter pada satu waktu sambil memperbaiki semua yang lain pada beberapa nilai khas (atau beberapa nilai). Dalam hal ini Anda dapat merepresentasikan hasilnya sebagai sekelompok grafik 2D dengan kinerja server (mis. Jumlah pengguna / permintaan) pada satu sumbu dan pemanfaatan / ketersediaan sumber daya di sisi lainnya.

Ada beberapa skenario yang lebih kompleks di mana aplikasi Anda menggunakan beberapa server untuk beberapa bagian aplikasi dan Anda dapat memvariasikan jumlah dan rasio mereka, tetapi saya kira itu bukan masalah Anda. Paling-paling, Anda mungkin ingin memvariasikan jumlah utas / proses, jika ini penting.

Jika Anda mengukur keseluruhan aplikasi, Anda biasanya tidak memerlukan akses kode sumber. Namun, Anda mungkin menarik dalam mengukur beberapa bagian spesifik dari kode (mis. Hanya DB atau UI). Kemudian Anda dapat menggunakan kode sumber untuk mengekspos modul ini hanya untuk pengukuran dan menjalankan tes Anda. Ini disebut microbenchmark .

Jika Anda mencari contoh, ada banyak di artikel akademis. Cari google scholar untuk evaluasi kinerja + istilah yang Anda sukai.

Ilia K.
sumber
1

Skalabilitas sebenarnya bukan properti yang dapat diukur untuk aplikasi nyata.

Dalam istilah praktis, skalabilitas adalah kemampuan untuk mendukung beban kerja yang meningkat dalam berbagai dimensi.

Untuk memulainya dengan aplikasi akan mendukung meningkatnya beban kerja dengan sumber daya perangkat keras yang ada. Tetapi ada berbagai titik di mana Anda mencapai batas; misalnya jumlah memori, jumlah core, pertikaian tentang struktur data, throughput basis data, dan sebagainya. Setiap kali Anda mencapai salah satu dari batasan ini, Anda harus mengambil pendekatan berbeda untuk mendukung peningkatan beban kerja. Skalabilitas adalah tentang berapa lama Anda dapat terus meningkatkan beban kerja sebelum mencapai batas yang tidak dapat diatasi, atau Anda perlu melakukan desain ulang besar.

Stephen C
sumber