Domanda

Buongiorno,

Stavo leggendo la voce Quantificare nel libro "97 cose che ogni Software Architect dovrebbe conoscere"( sterilizzata link Amazon ) e mi ha fatto chiedendo come per quantificare la scalabilità.

Ho progettato due sistemi per una grande società di trasmissione britannica che vengono utilizzati per:

  1. individuare il paese di origine per le richieste HTTP in ingresso, o
  2. determinare i formati video adatti per la geometria dello schermo di un cellulare di telefoni e il tipo di connessione corrente.

Entrambi i disegni erano tenuti a fornire la scalabilità.

I miei progetti per entrambi i sistemi scalabili orizzontalmente dietro strati di bilanciamento del carico di caching che vengono utilizzati per gestire le richieste in arrivo per entrambi questi servizi e distribuirli su più server che in realtà forniscono il servizio stesso. aumenti iniziali nella capacità di servizio sono create aggiungendo più server dietro il livello di bilanciamento del carico, quindi la scalabilità orizzontale termine.

V'è un limite alla scalabilità di questa architettura se lo strato di bilanciamento del carico inizia ad avere difficoltà ad affrontare il traffico richiesta in ingresso.

Quindi, è possibile quantificare la scalabilità? Sarebbe una stima di quanti server aggiuntivi che si potrebbe aggiungere per scalare orizzontalmente la soluzione?

È stato utile?

Soluzione

Credo che sia possibile in alcuni contesti - per esempio la scalabilità di un'applicazione web potrebbe essere quantificato in termini di numero di utenti, il numero di richieste simultanee, media e deviazione standard dei tempi di risposta, ecc È inoltre possibile ottenere in generale numeri per la larghezza di banda e lo stoccaggio, transazioni al secondo, e tempi di recupero (per il backup e DR).

È possibile anche spesso dare i numeri all'interno del dominio di applicazione - Diciamo che il sistema supporta commento, è possibile quantificare ciò che è l'ordine di grandezza del numero di commenti che ha bisogno di essere in grado di memorizzare

.

E 'comunque importante tenere a mente che non tutto ciò che conta può essere misurata, e non tutto ciò che può essere misurato questioni. : -)

Altri suggerimenti

Credo che questo si riduce a ciò che significa la scalabilità in un determinato contesto, e quindi la risposta sarebbe Dipende .

Ho visto la scalabilità dei requisiti per le cose che semplicemente non esisteva ancora. Ad esempio, un nuovo strumento di richiesta di prestito che specificamente chiamato fuori la necessità di lavorare su iPhone e altri dispositivi mobili in futuro.

Ho visto anche la scalabilità usato per descrivere il potenziale espansione del più data center e server web in diverse aree del mondo per migliorare le prestazioni.

Entrambi gli esempi sopra possono essere quantificabili se c'è un bersaglio noto per il futuro. Ma scalabilità non può essere quantificabile se non c'è davvero alcun obiettivo noti o di un piano che lo rende un bersaglio mobile.

La misura corretta di scalabilità (non la più semplice ;-) è un insieme di curve delle risorse definire richiesto (CPU, memoria, storage, banda locale, ...), e le prestazioni (ad esempio latenza) consegnati, come il carico cresce (ad esempio in termini di query al secondo, ma altre misure quali throughput complessivo richiesto può anche essere adatto per alcune applicazioni). I decisori in genere chiedere che tali misure accurate ma complessi essere riassunta in alcuni numeri chiave (punti specifici su alcune delle più curve), ma ho sempre cercare di negoziare per più accurato rispetto più semplice da comprendere misure di tale metriche chiave -!)

Quando penso scalabilità penso:

  • prestazioni - come reattivo l'applicazione ha bisogno di essere per un determinato carico
  • quanto grande un carico l'applicazione può crescere in ea quale costo unitario (se il suo server per includere software, supporto, etc)
  • quanto velocemente è possibile scalare l'applicazione e la quantità di buffer che si desidera sull'utilizzo periodo di picco (possiamo aggiungere il 50% in più di larghezza di banda in 2-3 ore e richiedono un buffer del 30% rispetto al picco di utilizzo previsto)

La ridondanza è un'altra cosa, ma dovrebbe anche essere incluso e considerato.

"Il sistema deve scalare da mantenere una relazione lineare di X per costo / utente".

Ecco un modo:

"si supponga che un singolo processore può elaborare 100 unità di lavoro al secondo ..."

http://www.information-management.com/ problemi / 19971101 / 972-1.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top