2009-07-06 5 views
3

G'day,Ist es möglich, die Skalierbarkeit als Anforderung zu quantifizieren?

Ich las den Artikel Quantify in dem Buch "97 Dinge, die jeder Software Architect Should Know" (sanitised Amazon link), und es hat mich gefragt, wie Skalierbarkeit zu quantifizieren.

ich zwei Systeme für eine große britische Rundfunkgesellschaft entwickelt haben, die es gewohnt sind:

  1. erkennt das Ursprungsland für eingehende HTTP-Anforderungen oder
  2. bestimmen die geeigneten Videoformate für ein Bildschirm des Handys Geometrie und aktueller Verbindungstyp.

Beide Designs mussten Skalierbarkeit bieten.

Meine Entwürfe für beide Systeme sind horizontal hinter Caching Load-Balancing-Schichten skalierbar, die eingehende Anfragen für beide dieser Dienste verarbeiten und sie auf mehrere Server verteilen, die tatsächlich den Dienst selbst bereitstellen. Die anfängliche Erhöhung der Servicekapazität erfolgt durch Hinzufügen weiterer Server hinter der Lastausgleichsebene, daher der Begriff horizontale Skalierbarkeit.

Die Skalierbarkeit dieser Architektur ist jedoch begrenzt, wenn die Lastausgleichsschicht Schwierigkeiten hat, den eingehenden Anforderungsverkehr zu bewältigen.

Ist es also möglich, die Skalierbarkeit zu quantifizieren? Wäre es eine Schätzung, wie viele zusätzliche Server Sie hinzufügen könnten, um die Lösung horizontal zu skalieren?

Antwort

2

Ich denke, dass es in einigen Kontexten möglich ist - zum Beispiel die Skalierbarkeit einer Web-Anwendung könnte in Bezug auf die Anzahl der Benutzer, die Anzahl der gleichzeitigen Anfragen, Mittelwert und Standardabweichung der Antwortzeit, etc. quantifiziert werden. Sie können auch in allgemeine Zahlen für Bandbreite und Speicher, Transaktionen pro Sekunde und Wiederherstellungszeiten (für Backup und DR).

Sie können auch häufig Zahlen innerhalb der Anwendungsdomäne angeben. Sagen wir, das System unterstützt das Kommentieren. Sie können quantifizieren, in welcher Größenordnung die Anzahl der Kommentare liegt, die gespeichert werden müssen.

Es ist jedoch wichtig zu bedenken, dass nicht alles, was zählt, gemessen werden kann und nicht alles, was gemessen werden kann.

:-)
3

Ich denke, das kommt darauf an, was die Skalierbarkeit bedeutet in ein gegebener Kontext und daher wäre die Antwort es kommt darauf an.

Ich habe Skalierbarkeit in Anforderungen für Dinge gesehen, die einfach noch nicht existierten. Zum Beispiel ein neues Kreditantragstool, das speziell dazu aufgerufen hat, in Zukunft auf dem iPhone und anderen mobilen Geräten zu arbeiten.

Ich habe auch gesehen Skalierbarkeit verwendet, um die mögliche Erweiterung von mehr Rechenzentren und Webservern in verschiedenen Gebieten der Welt zu beschreiben, um die Leistung zu verbessern.

Beide obigen Beispiele können quantifizierbar sein, wenn es ein bekanntes Ziel für die Zukunft gibt. Aber die Skalierbarkeit ist möglicherweise nicht quantifizierbar, wenn es wirklich kein bekanntes Ziel oder Plan gibt, der es zu einem beweglichen Ziel macht.

+1

Ah, das muss "zukunftssicher" sein! (-: –

+1

@Rob - zumindest wurde es aber identifiziert ... Mein Favorit ist, wenn etwas fertig ist und dann kommt jemand herein und sagt, aber es funktioniert nicht dabei .... – RSolberg

1

Das richtige Maß für die Skalierbarkeit (nicht die einfachste ;-) ist eine Reihe von Kurven definiert Ressourcenbedarf (CPUs, Speicher, Speicher, lokale Bandbreite, ...), und Leistung (zB Latenz) geliefert, wie die Last wächst (z. B. in Bezug auf Abfragen pro Sekunde, aber auch andere Maßnahmen wie der geforderte Gesamtdatendurchsatz können für einige Anwendungen ebenfalls angemessen sein). Entscheidungsträger werden typischerweise fordern, dass solche genauen, aber komplexen Maßnahmen auf wenige Schlüsselzahlen (spezifische Punkte auf einigen der verschiedenen Kurven) heruntergeregelt werden, aber ich versuche immer, genauer zu verhandeln, als einfachere Messungen von solchen Schlüsselmetriken!-)

1

Wenn ich an Skalierbarkeit denke, denke ich an:

  • Leistung - wie reagieren die App für eine gegebene Last sein muss
  • , wie groß eine Last die App in und wachsen können, was Kosten pro Einheit (wenn pro Server Software, Support usw. enthalten sind)
  • Wie schnell können Sie die App hochskalieren und wie viel Puffer Sie über den Spitzenzeitraum benötigen (wir können 50% mehr Bandbreite in 2-3 Stunden hinzufügen und benötigen 30% Puffer über geplanten Spitzenverbrauch)

Redundanz ist etwas anderes, sollte aber ebenfalls berücksichtigt und berücksichtigt werden.

1

"Das System muss so skaliert werden, dass eine lineare Beziehung von X für Kosten/Benutzer aufrechterhalten wird".