Verteilungsanforderungen analysieren
Zweck
|
Für das System erforderlichen Verteilungsumfang definieren.
|
Verteilungsanforderungen werden durch folgende Faktoren gesteuert:
-
Verteilungsbedarf in der Problemdomäne (funktionale Anforderungen) - Es können explizite Anforderungen
dahingehend vorliegen, dass das System auf einen bestimmten verteilten Prozessor, eine verteilte Datenbank oder ein
traditionelles System zugreifen muss, um einen Teil seiner Funktionalität zu erbringen.
-
Ausgewählte Deployment-Konfiguration - Spezifische Deployment-Konfigurationen erlegen der Verteilung des
Systems bestimmte Einschränkungen auf, indem sie die Anzahl und Typen der Knoten und ihrer Verbindungen
untereinander definieren. Beispielsweise bedeutet die Auswahl einer mehrschichtigen Deployment-Konfiguration in der
Regel, dass Sie einen Clientknoten, einen Webserver-Knoten und einen Anwendungsserverknoten haben. Eine spezielle
Deployment-Konfiguration wird normalerweise während der Aufgabe:
Architekturanalyse ausgewählt und anschließend in dieser Aufgabe präzisiert.
-
Erforderliche Ressourcen (nicht funktionale Anforderungen) - Zeitintensive oder rechenintensive
Funktionalität kann bestimmte Hardwarekonfigurationen erfordern, die speziell am Bedarf der Funktionalität
ausgerichtet ist, z. B. ein schneller Prozessor, viel RAM oder viel Plattenspeicherplatz. Ein Beispiel hierfür ist
die Verarbeitung digitaler Signale, die spezielle und dedizierte Prozessoren erfordern kann.
-
Bedarf an Fehlertoleranz (nicht funktionale Anforderungen) - Die Anforderung könnte sein,
Backup-Prozessoren einzusetzen.
-
Skalierbarkeit und Flexibilität (nicht funktionale Anforderungen) - Die Anzahl gleichzeitiger
Benutzer ist einfach zu hoch, als dass sie von einem einzelnen Prozessor unterstützt werden könnte. Es könnte
beispielsweise die Anforderung geben, die Systemfunktionalität gleichmäßig zu verteilen und damit eine maximale
Leistung und Skalierbarkeit zu erreichen.
-
Wirtschaftliche Faktoren - Das Preis-Leistungs-Verhältnis kleinerer, billigerer Prozessoren kann in größeren
Modellen nicht gehalten werden.
Wie bei Architekturproblemen können diese Anforderungen so beschaffen sein, dass sie sich gegenseitig ausschließen. Es
ist nicht unüblich, zumindest zu Beginn Anforderungen bewältigen zu müssen, die miteinander im Konflikt stehen. Das
Ordnen der Anforderungen nach Wichtigkeit hilft bei der Lösung des Konflikts.
|
Netzkonfiguration definieren
Zweck
|
Konfiguration und Topologie des Netzes definieren.
|
In diesem Schritt wird das anfängliche Deployment-Modell (das in der Aufgabe:
Architekturanalyse definiert wurde) präzisiert, um die Verteilungsanforderungen zu unterstützen, die im vorherigen
Schritt identifiziert wurden.
Die Topologie des Netzes sowie die Fähigkeiten und Merkmale der Prozessoren und Einheiten im Netz bestimmen den
Charakter und den Grad der Verteilung, der im System möglich ist.
Die folgenden Informationen müssen erfasst werden:
-
Physisches Layout des Netzes, einschließlich Standorten.
-
Die Knoten im Netz sowie ihre Konfigurationen und Fähigkeiten (die Konfiguration umfasst sowohl die Hardware als
auch die auf den Knoten installierte Software, die Anzahl der Prozessoren, den Plattenspeicherplatz, den
Hauptspeicher, den Auslagerungsspeicher usw.). Die Hardware des Knotens kann mit Einheiten dargestellt werden.
-
Bandbreite jedes Segments im Netz.
-
Vorhandensein redundanter Kanäle im Netz (hilft bei der Bereitstellung von Fehlertoleranzfunktionen).
-
Primärer Zweck des Knotens, einschließlich:
-
-
Workstation-Knoten, die von Benutzern verwendet werden.
-
Serverknoten, auf denen Headless-Verarbeitung stattfindet (zur Vereinfachung der Serverkonfiguration können
Serverkomponenten in ein Headless-Image gepackt werden, das keine Benutzerschnittstellenkomponenten
enthält).
-
Spezialkonfigurationen, die für Entwicklung und Test verwendet werden.
-
Andere spezielle Prozessoren.
-
IP-Design und -Funktionen (z. B. DNS, VPN), wenn ein IP-Netz vorhanden ist.
-
Rolle, die das Internet in der Lösung spielt.
Beispiel
Das folgende Diagramm veranschaulicht die Deployment-Sicht für das Geldautomatensystem.
Deployment-Sicht für das Geldautomatensystem
Das Diagramm zeigt zwei Knoten (den Geldautomaten (GA) selbst, der im Mittelpunkt dieses Beispiels steht, und den
GA-Netzserver, über den alle Verbindungen zum Interbankennetz erfolgen). Obwohl der GA-Netzserver außerhalb der
Reichweite der Ersteller des GA liegt, wird er hier gezeigt, um zu veranschaulichen, wie Netzbandbreite dokumentiert
werden kann. Das Diagramm zeigt außerdem die Prozesse und Threads, die auf dem GA-Knoten ausgeführt werden und im
nächsten Schritt, Systemelemente zu Knoten zuordnen
beschrieben sind.
Beachten Sie die Verwendung von Annotationen zur Dokumentation von Prozessor- und Netzkapazität. Eine solche
Dokumentation kann auch in den Dokumentationsfeldern des Knotens (oder der Einheiten) dargestellt werden. In diesem
Fall wird sie im Diagramm nicht angezeigt.
|
Systemelemente zu Knoten zuordnen
Zweck:
|
Arbeitslast des Systems verteilen.
|
In diesem Schritt werden den Knoten, die im vorherigen Schritt
definiert wurden, Systemelemente zugeordnet. Das Deployment kann aus logischer und physischer Perspektive beschrieben
werden.
Beim logischen Deployment werden logische Elemente (Klassen, Subsysteme oder Instanzen dergleichen) zu Knoten
zugeordnet. Dazu können auch Steuerungs-Threads gehören. Beispielsweise kann ein logisches
Deployment beschreiben, dass das Subsystem Auktionsleiter im Anwendungsserver eingesetzt wird.
Beim physischen Deployment werden die Dateien den Knoten zugeordnet. Beispielsweise kann ein physisches
Deployment beschreiben, dass die Klasse CloseAuctionTimer.class in server76 eingesetzt wird.
Die Verteilung ist ein Bereich, in dem die Summe kleiner als die Summe der Teile sein kann und dies auch gewöhnlich
ist. Wirkliche Vorteile durch Verteilung zu erzielen, erfordert Aufwand und sorgfältige Planung. Berücksichtigen Sie
Folgendes, wenn Sie entscheiden, welche Elemente welchen Knoten zugeordnet werden:
-
Knotenkapazität (mit Hauptspeicher und Verarbeitungsleistung)
-
Bandbreite des Kommunikationsmediums (Bus, LANs, WANs)
-
Verfügbarkeit der Hardware- und Kommunikationsverbindungen, Rufweiterschaltung
-
Anforderungen bezüglich Redundanz und Fehlertoleranz
-
Anforderungen bezüglich Antwortzeiten
-
Anforderungen bezüglich Durchsatz
Elemente werden Knoten mit der Absicht zugeordnet, den netzübergreifenden Datenverkehr zu minimieren. Elemente, die in
einem hohen Maß interagieren, sollten auf demselben Knoten zusammengefasst werden. Elemente hingegen, die weniger
häufig interagieren, können auf unterschiedliche Knoten verteilt werden. Die kritische Entscheidung, die manchmal sogar
eine Iteration erforderlich macht, ist, wo die Linie zu ziehen ist. Die Verteilung von Prozessen auf zwei oder mehr
Knoten erfordert eine gründlichere Untersuchung der Muster der Interprozesskommunikation im System. Häufig besteht die
naive Auffassung, dass durch die Verteilung der Verarbeitung Arbeit von einer Maschine auf eine zweite ausgelagert
werden kann. In der Praxis kann die zusätzliche Arbeitslast für die Interprozesskommunikation alle Vorteile, die durch
die Lastverteilung erzielt worden sind, zunichte machen, wenn die Prozess- und Knotengrenzen nicht sorgfältig
berücksichtigt werden.
Beispiel
Das vorherige Beispieldiagramm, die Deployment-Sicht für das Geldautomatensystem, veranschaulicht die Verteilung
der Prozesse für den GA-Knoten. Es gibt einen Prozess (GA Main), der sich aus drei separaten Steuerungs-Threads
(Kundenschnittstelle, ATM-Netzschnittstelle und Einheitencontroller) zusammensetzt.
Einige Umgebungen stellen Mechanismen für die Automatisierung und/oder Vereinfachung der Verteilung bereit. Beispiel:
-
Cluster: Ein Cluster ist eine Gruppe von Servern, die als Einheit auftreten und typischerweise
Funktionalität wie Failover und Lastausgleich enthalten. In diesem Fall muss die Deployment-Sicht beschreiben, wie
die Systemelemente den Clustern zugeordnet werden und wie Cluster für die Zuordnung der physischen Knoten
konfiguriert werden.
-
Container: In komponentenorientierten Umgebungen wie J2EE, Microsoft .NET und anderen werden die Komponenten
in einer logischen Rechenumgebung, einem so genannten Container, ausgeführt. Sie können sich einen Container als
"logischen Knoten" vorstellen. Die Deployment-Sicht muss beschreiben, wie Systemelemente in Containern eingesetzt
und wie Container physischen Knoten zugeordnet werden.
Die Verwendung solcher unterstützenden Verteilungsmechanismen sowie deren Konfiguration und Zuordnung zu physischen
Knoten in Übereinstimmung mit den Verteilungsanforderungen müssen in der Deployment-Sicht dokumentiert werden.
|
|