Come viene misurata la scalabilità del software?

21

Mi è stato chiesto di fare una piccola presentazione tecnica sulla scalabilità specifica dell'applicazione. L'applicazione è sviluppata utilizzando Java, Spring MVC, Hibernate. Ho accesso al codice sorgente dell'applicazione.

Come posso misurare la scalabilità del software (usando le fonti) e quali metriche ho bisogno di prendere in considerazione quando si misura la scalabilità del software?

    
posta artjom 22.10.2010 - 10:53
fonte

2 risposte

8

Vorrei iniziare leggendo articolo di Wikipedia sull'argomento.

In breve, la scalabilità è come le prestazioni del sistema aumentano con l'aggiunta di più risorse o, in alternativa, come l'utilizzo delle risorse aumenta con l'aumento del carico . Ad esempio, quanti utenti concorrenti possono gestire il tuo sito fino a quando il tempo di risposta aumenta oltre 0,3 sec? La stessa domanda dopo aver raddoppiato la RAM / disco / CPU / ecc. Disponibili. Probabilmente puoi usare la tua conoscenza degli interni dell'applicazione per decidere quali parametri vale la pena controllare.

Imposta un banco di prova con una macchina server e uno o più computer client. Utilizzare alcuni strumenti per limitare la quantità di risorse disponibili al server (ad esempio ulimit ) o eseguire alcune applicazioni di interferenza sul server. Misura come il server gestisce le richieste dei client. Ripetere il carico interferente gradualmente crescente / decrescente / le risorse disponibili. Alla fine ottieni uno spazio n-dimensionale con dei punti. Potrebbe essere più semplice cambiare solo un parametro alla volta mentre si fissano tutti gli altri con un valore tipico (o un paio di valori). In questo caso puoi rappresentare il risultato come un grappolo di grafici 2D con prestazioni del server (ad esempio il numero di utenti / richieste) su un asse e utilizzo / disponibilità delle risorse sull'altro.

Esistono scenari più complessi in cui l'applicazione utilizza diversi server per diverse parti dell'applicazione e puoi variare la quantità e il rapporto, ma suppongo che non sia il tuo caso. Al massimo, è probabile che tu voglia variare il numero di thread / processi, se questo è importante.

Se si misura l'intera applicazione di solito non è necessario l'accesso al codice sorgente. Tuttavia, potresti essere interessante nel misurare alcune parti specifiche del codice (ad esempio solo DB o UI). Quindi è possibile utilizzare il codice sorgente per esporre solo questo modulo per le misurazioni ed eseguire i test. Questo è chiamato microbenchmark .

Se stai cercando degli esempi, ce ne sono molti negli articoli accademici. Cerca lo studio di Google per valutazione del rendimento + i tuoi termini preferiti.

    
risposta data 22.10.2010 - 15:44
fonte
1

La scalabilità non è realmente una proprietà quantificabile per le applicazioni reali.

In termini pratici, la scalabilità riguarda la capacità di supportare carichi di lavoro in aumento in varie dimensioni.

Per iniziare, l'applicazione supporterà l'aumento dei carichi di lavoro con le risorse hardware esistenti. Ma ci sono vari punti in cui colpisci i limiti; per esempio. la quantità di memoria, il numero di core, la contesa sulle strutture dati, il throughput del database e così via. Ogni volta che raggiungi uno di questi limiti, devi adottare un approccio diverso per supportare l'aumento dei carichi di lavoro. La scalabilità indica quanto tempo è possibile continuare ad aumentare il carico di lavoro prima di raggiungere un limite insormontabile, oppure è necessario intraprendere una riprogettazione importante.

    
risposta data 22.10.2010 - 16:02
fonte

Leggi altre domande sui tag