Wenn Sie eine verteilte Anwendung für einfaches Scale-out entwerfen, oder wenn Sie nur eines der neuen "Cloud Computing" -Angebote von Amazon, Google oder Microsoft nutzen möchten sind einige typische Konzepte oder Komponenten, die Sie in der Regel am Ende mit:"cloud architecture" -Konzepte in Systemarchitekturdiagrammen
- verteilt Blob Speicher (auch bekannt als S3)
- asynchron, dauerhafte Nachrichtenwarteschlangen (aka SQS)
- nicht-Relational-/nicht-transaktionalen Datenbanken (wie SimpleDB, Google BigTable, Azure SQL Services)
- verteilt Hintergrund Arbeitnehmer Pool
- Lastausgleich, edge-Service-Prozesse Benutzeranforderungen Handhabung (oft virtualisiert)
- verteilten Caches (wie memcached)
- CDN (Content-Delivery-Netzwerk wie Akamai)
Jetzt Wenn es darum geht, eine Architektur zu entwerfen und zu skizzieren, die solche Muster verwendet, gibt es irgendwelche allgemein gebräuchlichen Symbole, die ich verwenden könnte? Oder sogar einen Download mit ein paar coolen Visio-Schablonen? :)
Es muss kein formelles System wie UML sein, aber ich denke, es wäre toll, wenn es Symbole gäbe, die jeder kennt und versteht, wie wir zum Beispiel häufig Formen für Datenbanken oder Dokumente haben. Ich denke, es wäre wichtig, es nicht mit traditionellen Konzepten wie einem normalen Dateisystem (lokal oder Netzwerkserver/SAN) oder einer relationalen Datenbank zu verwechseln.
Einfach gesagt, möchte ich in der Lage sein, einige Schlussfolgerungen über die Skalierbarkeit oder Datenkonsistenz einer Anwendung zu ziehen, indem ich einfach das Systemarchitektur-Übersichtsdiagramm anschaue.
Update: Vielen Dank für Ihre Antworten. Ich mag die Idee, ein kleines "Wolkensymbol" auf die traditionellen Symbole zu setzen. Allerdings lasse ich diesen Thread offen für den Fall, dass jemand bestimmte Symbole findet (vielleicht in einem Buch oder so) - oder einige aufgemotzte Visio Schablonen hochladen;)
Aus einer höheren Perspektive - warum eine solche Unterscheidung abgrenzen? Eine Datenbank ist eine Datenbank. Ich denke, dass eine "Wolke" mit dem passenden Symbol darin Ihren Punkt herüberbringen würde. Eine detailliertere Perspektive - die tatsächliche Struktur betrachtend, hätte man N Maschinen vernetzt. – jim
"Eine Datenbank ist eine Datenbank" - ich glaube nicht. Zum Beispiel würde eine verteilte Datenbank natürlich besser skalieren, aber sie wäre vielleicht weniger "genau" als eine Transaktionsdatenbank, sie hat normalerweise weniger Funktionalität (zB keine Joins) etc. – realMarkusSchmidt