Verteilungsdiagramm-Beispiele
Drei Verteilungsdiagramme von Systemen, die Sie kennen - eine dreischichtige Webanwendung, ein Kubernetes-Cluster und ein Pool hinter einem Load Balancer - jeweils mit der Begründung, was gezeichnet und was bewusst weggelassen wurde.
8 Min. LesezeitUML 2.5.122 von 35
Die kurze Antwort
- Vier Knoten, drei beschriftete Kommunikationspfade und drei Deploy-Pfeile ergeben ein vollständiges Diagramm: Browser, Webserver, Anwendungsserver, Datenbank.
- Ein laufender Container ist eine Ausführungsumgebung und damit ein Knoten. Das Image, aus dem er startete, ist ein Artefakt - das Image als Knoten zu zeichnen ist der übliche Fehler.
- Zeigen Sie Redundanz über eine Multiplizität wie 3..* an einem Knoten. Ein Diagramm, das genau drei Instanzen behauptet, ist nach dem ersten Autoscaling falsch.
- Zeichnen Sie nur so viel, wie die Frage beantwortet, wegen der Sie zeichnen. Jeder weitere Knoten ist eine Behauptung, die nach der nächsten Migration jemand wahr halten muss.
01Beispiel 1: eine dreischichtige Webanwendung#
Das Diagramm oben ist das, welches man aus dem Kopf zeichnen können sollte. Ein Browser, ein Webserver, der TLS terminiert, ein Anwendungsserver, eine Datenbank. Drei Kommunikationspfade mit Protokoll und Port und drei Artefakte, auf die Knoten gelegt, die sie ausführen.
Zwei Entscheidungen darin verdienen einen Namen. Erstens sind die Protokollbeschriftungen der Grund, warum das Diagramm nützlich ist: HTTPS, HTTP/8080, TCP/5432 ist der gesamte Inhalt der meisten Sicherheitsprüfungen, und ein Diagramm ohne sie sind vier Kästen, die jeder hätte raten können. Zweitens sind die Artefakte echte Dateinamen - orders.jar, nicht „Anwendung“ - denn ein Verteilungsdiagramm handelt von physischen Dingen, und ein Build erzeugt Dateien mit Namen.
02Beispiel 2: ein Kubernetes-Cluster#
Container lassen Leute zögern, weil ein Container zugleich etwas Laufendes und etwas Gebautes ist. UML trennt das bereits: der laufende Container ist eine Ausführungsumgebung, also ein Knoten, und das Image, aus dem er startete, ist ein Artefakt, das darauf deployt wird.
An der Form dieses Diagramms unterscheidet sich nichts vom dreischichtigen, und das ist der Punkt: die Laufzeit hat sich geändert, die Notation nicht. Der Load Balancer ist ein «device», weil er Infrastruktur ist, in die Sie nicht deployen. Der Ingress-Controller und der Pod sind «execution environment», weil in ihnen anderes läuft. Der Image-Tag orders:1.4.2ist ein Artefakt, weil ein Build ihn erzeugt hat, und die Version in die Beschriftung zu setzen ist das, was das Diagramm „was läuft gerade in Produktion“ beantworten lässt.
Die verwaltete Datenbank sitzt als schlichtes Gerät am Rand. Das ist die ehrliche Zeichnung: man deployt keine Artefakte auf einen Dienst, den jemand anders betreibt, und so zu tun, als sei das Schema „auf RDS“ installiert, stimmt nur in dem Sinn, dass es dort einmal angewandt wurde.
03Beispiel 3: ein lastverteilter Pool#
Der häufigste Grund, ein Verteilungsdiagramm zu öffnen, ist herauszufinden, was passiert, wenn ein Kasten stirbt. Diese Frage hat eine Form, und es lohnt sich, sie ausdrücklich zu zeichnen, statt sie einer Fußnote zu überlassen.
Drei Anwendungsknoten hinter einem Load Balancer, alle auf eine einzige Primärdatenbank schreibend. So gezeichnet ist der Single Point of Failure sichtbar, ohne dass ihn jemand aussprechen muss: die Anwendungsschicht fächert auf, die Datenschicht nicht. Das ist ein Satz, auf den jemand reagieren wird, und er hat keine zusätzliche Notation gekostet.
Ändert sich die Anzahl zur Laufzeit, ersetzen Sie die drei Knoten durch einen mit Multiplizität - app-node [3..*] - statt eine willkürliche Zahl zu zeichnen. Ein Diagramm, das genau drei behauptet, ist beim ersten Skalieren der Gruppe falsch, und ein als falsch bekanntes Diagramm wird nicht mehr konsultiert.
04Was wegzulassen ist#
Jedes Verteilungsdiagramm, das nutzlos wird, wird es auf dieselbe Weise: jemand hat immer weiter Knoten ergänzt. Die Disziplin besteht darin, zu entscheiden, wofür das Diagramm da ist, bevor der zweite Kasten fällt.
Dazu greifen, wenn
- Protokolle und Ports auf jedem Kommunikationspfad - das ist der Inhalt der meisten Prüfungen.
- Echte Artefaktnamen mit Versionen, damit das Diagramm beantwortet, was jetzt läuft.
- Eine repräsentative Instanz je Rolle, mit Multiplizität, wenn die Anzahl schwankt.
- Verwaltete Dienste als schlichte Geräte am Rand, mit sichtbarer Grenze dessen, was Sie betreiben.
Zu etwas anderem greifen, wenn
- Logische Schichten - sie haben keine Adresse, und nichts wird auf sie deployt.
- Jeden Microservice einer großen Landschaft. Zeichnen Sie stattdessen ein Teilsystem je Diagramm.
- Monitoring, Logging und CI-Agenten, außer das Diagramm handelt von ihnen.
- Aktuelle Instanzzahlen, die zum Zeitpunkt des Reviews schon falsch sind.
Brauchen Sie das Gegenstück, das die Software statt der Maschinen zeigt, ist das ein Komponentendiagramm. Die beiden werden meist als Paar gezeichnet, und das Verteilungsdiagramm ist das kürzere.
05Was zu behalten ist#
In je einer Zeile
- 01Vier Knoten, beschriftete Protokolle und benannte Artefakte sind bereits ein vollständiges Verteilungsdiagramm.
- 02Ein laufender Container ist ein Knoten; das Image, aus dem er startete, ist ein Artefakt. Beides zu verwechseln ist der übliche Containerfehler.
- 03Protokoll- und Portbeschriftungen sind es, die das Diagramm in einem Review öffnenswert machen.
- 04Zeichnen Sie eine Instanz je Rolle und nutzen Sie eine Multiplizität, wenn die Anzahl zur Laufzeit schwankt.
- 05Lässt sich ein Kasten nicht anpingen, gehört er nicht auf dieses Diagramm.
06Häufige Fragen#
Was ist ein einfaches Beispiel für ein Verteilungsdiagramm?
Ein Browser verbindet sich mit einem Webserver, dieser mit einem Anwendungsserver und dieser mit einer Datenbank, wobei auf jedem ein Artefakt liegt. Vier Knoten, drei mit Protokollen beschriftete Kommunikationspfade und drei Deploy-Pfeile ergeben ein vollständiges, nützliches Diagramm.
Wie zeichnet man ein Verteilungsdiagramm für Kubernetes?
Modellieren Sie die Laufzeitteile des Clusters als Knoten und die Images als Artefakte. Der Load Balancer ist ein Gerät, Ingress-Controller und jeder Pod sind Ausführungsumgebungen, und das Container-Image ist ein auf den Pod verteiltes Artefakt. Managed Services wie eine gehostete Datenbank bleiben Geräte am Rand.
Sind Container in UML Knoten oder Artefakte?
Beides, je nachdem, welchen Container Sie meinen. Ein laufender Container ist eine Ausführungsumgebung und damit ein Knoten, weil darin etwas anderes läuft. Das Image, aus dem er gestartet wurde, ist ein Artefakt, weil es eine Builddatei ist. Das Image als Knoten zu zeichnen ist der häufigste Fehler.
Wie zeigt man Redundanz in einem Verteilungsdiagramm?
Entweder Sie zeichnen die Instanzen einzeln - ehrlich, aber jenseits von vier unbrauchbar - oder Sie zeichnen einen Knoten mit einer Multiplizität in der Ecke, etwa app-node mit 3..*. Nehmen Sie das Zweite, wenn die Anzahl zur Laufzeit schwankt: ein Diagramm, das genau drei behauptet, ist nach dem ersten Autoscaling falsch.
Wie viel Detail gehört in ein Verteilungsdiagramm?
So viel, dass es die Frage beantwortet, wegen der Sie es gezeichnet haben. Ein Infrastruktur-Review will Protokolle und Ports an den Kommunikationspfaden; ein Onboarding-Diagramm will vier Kästen und sonst nichts. Jeder weitere Knoten ist eine Behauptung, die nach der nächsten Migration jemand wahr halten muss.
In dieser Reihe
- 01Was ist UML?
- 02UML-Symbole
- 03Diagramm auswählen
- 04Klassendiagramme
- 05Klassendiagramm-Beispiele
- 06Klassendiagramm zeichnen
- 07Klassendiagramm-Symbole
- 08Sequenzdiagramme
- 09Sequenzdiagramm-Beispiele
- 10Sequenzdiagramm zeichnen
- 11Anwendungsfalldiagramme
- 12Anwendungsfall-Beispiele
- 13Aktivitätsdiagramme
- 14Aktivitätsbeispiele
- 15Zustandsdiagramme
- 16Zustandsdiagramm-Beispiele
- 17Komponentendiagramme
- 18Komponenten-Beispiele
- 19Komponentendiagramm zeichnen
- 20Komponenten-Symbole
- 21Verteilungsdiagramme
- 22Verteilungsbeispiele
- 23Objektdiagramme
- 24Paketdiagramme
- 25Kompositionsstrukturdiagramme
- 26Kommunikationsdiagramme
- 27Sequenz vs Kommunikation
- 28Zeitverlaufsdiagramme
- 29Interaktionsübersichtsdiagramme
- 30Profildiagramme
- 31UML mit KI
- 32E-Commerce-Beispiel
- 33Banken-Beispiel
- 34Microservices-Beispiel
- 35AWS-Beispiel
Passend dazu
Strukturdiagramme
Strukturdiagramme
Strukturdiagramme
Modellierungspraxis
Strukturdiagramme
Strukturdiagramme