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 devo tenere in considerazione quando misuro la scalabilità del software?

Risposte:


8

Vorrei iniziare a leggere l' articolo di Wikipedia sull'argomento.

In breve, la scalabilità è il modo in cui le prestazioni del sistema aumentano con l'aggiunta di più risorse o, in alternativa, come l'utilizzo delle risorse aumenta con l'aumentare del carico . Ad esempio, quanti utenti simultanei possono gestire il tuo sito fino a quando i tempi di risposta aumentano oltre 0,3 secondi? 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 verificare.

Configurare un banco di prova con una macchina server e una o più macchine client. Utilizzare alcuni strumenti per limitare la quantità di risorse disponibili per il server (ad es. ulimit) O eseguire alcune applicazioni interferenti sul server. Misura come il server gestisce le richieste del client. Ripetere quanto sopra aumentando / diminuendo gradualmente il carico interferente / le risorse disponibili. Alla fine ottieni spazio n-dimensionale con punti all'interno. Potrebbe essere più semplice modificare un solo parametro alla volta fissando tutti gli altri su un valore tipico (o un paio di valori). In questo caso è possibile rappresentare il risultato come un insieme di grafici 2D con prestazioni del server (ad es. 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 loro quantità e il loro rapporto, ma suppongo che non sia il tuo caso. Al massimo, probabilmente potresti voler 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 es. Solo DB o UI). Quindi è possibile utilizzare il codice sorgente per esporre solo questo modulo per le misurazioni ed eseguire i test. Questo si chiama microbenchmark .

Se stai cercando esempi, ce ne sono molti in articoli accademici. Cerca lo studioso di Google per la valutazione delle prestazioni + i tuoi termini preferiti.


1

La scalabilità non è in realtà una proprietà quantificabile per 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 risorse hardware esistenti. Ma ci sono vari punti in cui si raggiungono i limiti; ad esempio la quantità di memoria, il numero di core, la contesa sulle strutture di dati, la velocità di trasmissione del database e così via. Ogni volta che si raggiunge uno di questi limiti, è necessario adottare un approccio diverso per supportare i carichi di lavoro in aumento. La scalabilità riguarda il tempo in cui è possibile continuare ad aumentare il carico di lavoro prima di raggiungere un limite insormontabile o è necessario eseguire una riprogettazione importante.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.