Aufgabe: Verteilung beschreiben
Diese Aufgabe definiert die Deployment-Architektur für ein verteiltes System mit Hilfe physischer Knoten und ihren Verbindungen untereinander.
Disziplinen: Analyse und Design
Zweck
Beschreiben, wie die Funktionalität des Systems auf physische Knoten verteilt wird. Diese Aufgabe gilt nur für verteilte Systeme.
Beziehungen
Hauptbeschreibung

Diese Aufgabe definiert die Deployment-Architektur für das System mit Hilfe physischer Knoten und ihren Verbindungen untereinander. Während der Aufgabe: Architekturanalyse wird ein erstes Deployment-Modell definiert. In dieser Aufgabe wird dieses Deployment-Modell (insbesondere die Deployment-Sicht) präzisiert, um das aktuelle Design widerzuspiegeln.

In einem frühen Stadium der Ausarbeitungsphase ist die Deployment-Sicht gewöhnlich provisorisch, aber später in der Ausarbeitungsphase muss sie klar definiert sein.

Schritte
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.

Diagramm der Deployment-Sicht für den Geldautomaten

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.

Weitere Informationen