Architektur Distributed System

6 views
Skip to first unread message

Laurin Stoll

unread,
Aug 4, 2010, 5:31:27 AM8/4/10
to altnetde
Hallo zusammen,

Ich stehe vor einer neuen Herausforderung. Und wollte mal fragen ob
jemand von euch hier einige Erfahrungen hat mit kürzlich realisierten
Projekten (Stolpersteine, Fehlentscheide, usw.).

Und zwar geht es um die Architektur einer Kundenmanagement-Software.
Diese soll zukünftig auf vielen Plattformen laufen (OS X, Android,
iOS, Windows). D.h. es sieht sehr nach einer SOA-Server - Client
Architektur aus. Ich sehe da eigentlich gerade nur XML WebServices als
mögliche Zugriffsvariante. Habt ihr noch andere Ideen?
Hat jemand gerade sowas gemacht? Lohnt es sich eventuell andere
Kommunikationswege in betracht zu ziehen als SOAP XML Webservices?
z.B. Jabber?
Wie habt ihr es mit dem Change-Tracking gemacht? Habt ihr in allen
Clients die Objekte aufgrund von WSDL generieren lassen? Wie war der
Server aufgebaut, wurden die WSDL Objekte am Ende in Domain Objekte
verpackt?

Ich wäre sehr froh über einige Erfahrungsberichte/Ideen/Anregungen/
Tipps :-)

Danke euch schonmal,
Viele Grüsse
Laurin

Ralf Ronneburger

unread,
Aug 4, 2010, 6:19:52 AM8/4/10
to altn...@googlegroups.com
Hallo Laurin,

eine Web-Anwendung (mit unterschiedlichen GUIs optimiert f�r das
Ausgabeger�t) ist wohl keine Option? Wenn Du f�r die verschiedenen
Clients jeweils Anwendungen deployen musst, machst Du Dich vermutlich
bei Wartung und Support kaputt...

Viele Gr��e,

Ralf


Am 04.08.2010 11:31, schrieb Laurin Stoll:
> Hallo zusammen,
>
> Ich stehe vor einer neuen Herausforderung. Und wollte mal fragen ob

> jemand von euch hier einige Erfahrungen hat mit k�rzlich realisierten


> Projekten (Stolpersteine, Fehlentscheide, usw.).
>
> Und zwar geht es um die Architektur einer Kundenmanagement-Software.

> Diese soll zuk�nftig auf vielen Plattformen laufen (OS X, Android,


> iOS, Windows). D.h. es sieht sehr nach einer SOA-Server - Client
> Architektur aus. Ich sehe da eigentlich gerade nur XML WebServices als

> m�gliche Zugriffsvariante. Habt ihr noch andere Ideen?


> Hat jemand gerade sowas gemacht? Lohnt es sich eventuell andere
> Kommunikationswege in betracht zu ziehen als SOAP XML Webservices?
> z.B. Jabber?
> Wie habt ihr es mit dem Change-Tracking gemacht? Habt ihr in allen
> Clients die Objekte aufgrund von WSDL generieren lassen? Wie war der
> Server aufgebaut, wurden die WSDL Objekte am Ende in Domain Objekte
> verpackt?
>

> Ich w�re sehr froh �ber einige Erfahrungsberichte/Ideen/Anregungen/


> Tipps :-)
>
> Danke euch schonmal,

> Viele Gr�sse
> Laurin
>

Laurin Stoll

unread,
Aug 4, 2010, 7:12:36 AM8/4/10
to altnetde
Hallo Ralf,

Dessen sind sich die Auftraggeber bewusst. Das ist natürlich ein
grosses Risiko. Danke für den Hinweis.

Hast du sonst sowas schon des öfterne gemacht? Hast du einige Tipps
für mich auf die obigen Fragen? Du hast mir ja auch mal einige
antworten auf einen Thread hier mit dem Thema D-DDD gegeben... :-)

Viele Grüsse
Laurin
> > Laurin- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Ralf Ronneburger

unread,
Aug 4, 2010, 8:26:23 AM8/4/10
to altn...@googlegroups.com
Hallo Laurin,

das ist nat�rlich schwer, ohne die genaueren Anforderungen und
Rahmenbedingungen zu kennen. Erfahrungen auf dem Gebiet Fat-Client auf
mobilen Plattformen habe ich nicht, aber mit WebServices habe ich schon
oft gearbeitet.

F�r mich w�rde das erstmal nach einer JAVA-Gui f�r die Clients riechen,
wenn Du wirklich auf Fat-Client gehen musst. Die Kommunikation mit dem
Server w�rde ich auch �ber Web-Services machen, wobei ich die Services
selbst (die asmx-Files) so versionieren w�rde, dass ich bei �nderungen
z.B. am CustomerService aus einer CustomerServiceV1.asmx eine
CustomerServiceV2.asmx machen w�rde, dann kannst Du unterschiedliche
Versionen parallel betreiben (f�r alte Clients). Die
CustomerServiceV1.asmx m�sstest Du dann nat�rlich asap aus dem Rennen
nehmen, sonst hast Du irgendwann 10 verschiedene Versionen. F�r die
Clients w�rde ich versuchen, automatische Updates umzusetzen, dann hast
Du weniger Stress mit dem Support X verschiedener Versionen im
Zusammenspiel mit Deinem Server.

Auf dem Client w�rde ich dann auf jeden Fall die View vom Rest trennen
und nur die View f�r unterschiedliche Ger�te anpassen (Du wirst ja
vermutlich auf Android eine andere GUI brauchen als auf einem OS X oder
einem PC).

Viele Gr��e,

Ralf


Am 04.08.2010 13:12, schrieb Laurin Stoll:
> Hallo Ralf,
>

> Dessen sind sich die Auftraggeber bewusst. Das ist nat�rlich ein
> grosses Risiko. Danke f�r den Hinweis.
>
> Hast du sonst sowas schon des �fterne gemacht? Hast du einige Tipps
> f�r mich auf die obigen Fragen? Du hast mir ja auch mal einige


> antworten auf einen Thread hier mit dem Thema D-DDD gegeben... :-)
>

> Viele Gr�sse

Laurin Stoll

unread,
Aug 4, 2010, 8:57:46 AM8/4/10
to altnetde
Danke :-) Ja, die Clients machen mir nicht mal so bauchschmerzen. Mehr
die Art und Weise wie ich mit Daten umgehe und die bearbeite. Wie
realisiere ich ein Change Tracking?
Habe ich Methoden wie
Customer GetCustomerById(Guid id);

und nachher
UpdateCustomer(Customer cust);

und der Server macht das ChangeTracking oder gibt es da allgemeine
Patterns?
> >> - Zitierten Text anzeigen -- Zitierten Text ausblenden -

Ralf Westphal

unread,
Aug 5, 2010, 1:50:06 AM8/5/10
to altnetde
Laurin:

Warum denkst du in technologischen Kategorien zuerst? XML Webservice,
SOA Server (was immer das sein mag ;-), Change Tracking...
Viel wichtiger ist doch erstmal zu wissen, warum diese Clients auf
einen Server zugreifen sollen.
In welchen Fällen kommunizieren die mit ihm? Um welche Daten und
wieviele geht es?
Was sind dann die Anforderungen an Antwortzeiten, Robustheit,
Sicherheit?

Es gibt viele Alternativen zu XML Webservices (womit du WSDL/SOAP
Webservices meinst):

1. REST Service
2. Jabber Service
3. SQS Service
4. FTP
5. WebDAV

Dahinter steckt dann auch die Überlegung, ob die Kommunikation sync
oder async sein soll. (Du kannst dir denken, was da mein Standpunkt
ist ;-)

Aber zuerst: Wie sieht die Grob-Architektur aus? Wo sind die Bounded
Contexts? Wo sind die Partitionen? Und damit dann auch: Wo sind denn
eigentlich die Daten, auf die zugegriffen wird? In welchem Schema
liegen die dort?

Wenn du Klarheit über die BCs hast, dann kommt vielleicht raus, dass
du keinen Webservice brauchst, weil die Daten in SimpleDB liegen und
die Clients darauf direkt zugreifen können.

Bottom line: Entscheidungen bzgl Technologien lassen sich nicht
fällen, ohne Inhalte zu kennen.

Henning

unread,
Aug 11, 2010, 8:05:27 AM8/11/10
to altnetde
Hi,

neben den Hinweisen von Ralf bin ich die Tage über zwei Posts
gestolpert, die dir vielleicht auch Denkansätze liefern können:

"Building Distributed Apps with NHibernate and Rhino Service
Bus" (http://msdn.microsoft.com/en-us/magazine/ff796225.aspx) und
"Data access is contextual, a generic approach will fail" (http://
ayende.com/Blog/archive/2010/08/06/data-access-is-contextual-a-generic-
approach-will-fail.aspx). Auch wenn die nicht unbedingt den dort
genannten Tool-Stack verwenden willst, so sind die Überlegungen ja
auch auf andere Technologien übertragbar.

On 4 Aug., 11:31, Laurin Stoll <devc...@yooapps.com> wrote:

Laurin Stoll

unread,
Aug 15, 2010, 4:45:02 PM8/15/10
to altnetde
Hallo zusammen,

Bitte entschuldigt die etwas späte Antwort. Die Arbeit.... O:-)

First of all: @Henning: Danke für die zwei äusserst interessanten
Links. Habe mir die Artikel gelesen. Sehr spannend! Eine Frage drängt
sich mir da grad auf. Ist der Rhino Service Bus interoperabel? Kann
ich den auch von Java aus konsumieren?

@Ralf. Danke für deine ausführliche Antwort. Ich wollte bewusst nicht
zuviele Background geben. Weil ich mich eben inspirieren lassen wollte
und hoffte einige Leute hätten hier vielleicht etwas zu einer Lösung
zu sagen die sie in letzter Zeit mal gebaut haben. Aber das holen wir
jetzt nach :-)

> Viel wichtiger ist doch erstmal zu wissen, warum diese Clients auf
> einen Server zugreifen sollen.

Die Clients wollen auf den Server zugreifen, weil das System von
diversen Clients bedient werden soll: Smart Client, Web Client, PDA,
usw. Aber ansonsten finde ich die Frage etwas merkwürdig, was meinst
du genau?

> In welchen Fällen kommunizieren die mit ihm?
Immer wenn Sie etwas an den Daten ändern möchten oder Daten abgefragt
werden sollen. Das können Kontaktdaten, Aufgaben usw. sein. In vielen
Fällen sind das aber wohl eher CRUD szenarien.

> Um welche Daten und wieviele geht es?
Es geht um tausende von Kundendaten.

> Was sind dann die Anforderungen an Antwortzeiten, Robustheit,
> Sicherheit?
Da die Benutzer täglich mit dem System arbeiten sollten diese drei
Anforderungen gut abgedeckt sein. Es handelt sich um kritische
Kundendaten, da darf die Sicherheit nicht fehlen. Die Antwortzeiten
müssen schnell genug sein, dass ein Benutzer gerne täglich damit
arbeitet.

> Es gibt viele Alternativen zu XML Webservices (womit du WSDL/SOAP
> Webservices meinst):
>
> 1. REST Service
> 2. Jabber Service
> 3. SQS Service
> 4. FTP
> 5. WebDAV
>
> Dahinter steckt dann auch die Überlegung, ob die Kommunikation sync
> oder async sein soll. (Du kannst dir denken, was da mein Standpunkt
> ist ;-)
Async, ist aufgrund des UI-Verhaltens denke ich schon gegeben :-)

> Aber zuerst: Wie sieht die Grob-Architektur aus?
Noch garnicht. Frontend .... Backend .... DB. Das ist eigentlich
alles :-) Aber vielleicht ist das auch nur so, weil ich das schon oft
so gemacht habe? Deshalb eben die Frage nach weiteren Ideen/Ansätzen/
Erfahrungen =)

> Wo sind die Bounded Contexts?
Das finde ich eine spannede Frage :-) Ich habe schon einiges über
Bounded contexts gelesen, unter anderem in Eric Evans buch. Habe mir
schon oft überlegt ob man davon mehrere hat in einem System das
letztlich einfach diverse Arten von Kundendaten verwaltet. Wie
identifiziere ich die am besten? Hast du mir da eine Hilfestellung?

> Wo sind die Partitionen?
Unter Partitionen verstehst du verschiedene UI Frontends?

> Und damit dann auch: Wo sind denn
> eigentlich die Daten, auf die zugegriffen wird? In welchem Schema
> liegen die dort?
Die liegen in einer SQL Server DB und werden da von Telerik Open
Access geschrieben/gelesen.


> Bottom line: Entscheidungen bzgl Technologien lassen sich nicht
> fällen, ohne Inhalte zu kennen.
Stimmt, da hast du natürlich recht :-) Deshalb oben einige Inhalte,
wenn auch immer noch dürftig. Aber vielleicht regts ja jemanden an mir
etwas von seiner Erfahrung mit solchen Systemen mitzugeben? Ein CRM
System ist ja jetzt ein relativ klassischer Fall.
Besonder interessiert mich aber auch meine obige Frage zu den Bounded
contexts und den Partitionen, hast du mir dazu noch ein paar Infos?
Natürlich habe ich dazu auch deinen Artikel vor einigen Monaten in der
dnp verschlungen :-)

Viele Grüsse vom wissenshungrigen Laurin

Henning

unread,
Aug 16, 2010, 12:51:18 PM8/16/10
to altnetde
Ich fürchte, dass das nicht aus Java zu konsumieren ist - aber hey,
RSB ist ja open source, vielleicht kann man das ja nach Java
portieren :)

Ralf Westphal

unread,
Aug 16, 2010, 3:52:42 PM8/16/10
to altnetde
Hm... leider helfen mir deine Präzisierungen nicht recht weiter.
Du bleibst sehr allgemein: es ist ein CRUD Szenario. Sagst du.
Dann kann bei solcher allgemeiner Anforderung auch die Antwort nur
sehr allgemein ausfallen: Na, wenn es CRUD ist, dann setze ein RDBMS
in der cloud auf und alle machen C/S Zugriff darauf. Mit Amazon RDS
sollte das doch einfach auch plattformübergreifend möglich sein.
Oder?

Zu Bounded Contexts kannst du hier was von mir lesen: http://bit.ly/c0NmOw
Der Zusammenhang ist zwar ein anderer, aber das macht nichts, denke
ich.


On 15 Aug., 22:45, Laurin Stoll <devc...@yooapps.com> wrote:
> > Viel wichtiger ist doch erstmal zu wissen, warum diese Clients auf
> > einen Server zugreifen sollen.
>
> Die Clients wollen auf den Server zugreifen, weil das System von
> diversen Clients bedient werden soll: Smart Client, Web Client, PDA,
> usw. Aber ansonsten finde ich die Frage etwas merkwürdig, was meinst
> du genau?

Na, ich meine: warum? Was wollen die Clients? Ist es wirklich nur CRUD
für alle?
Und wollen alle dasselbe? Wirklich?


> > Um welche Daten und wieviele geht es?
>
> Es geht um tausende von Kundendaten.

Naja, damit meinst du, was auf dem Server liegt.
Tausende Kundendaten auf einem PDA darstellen zu wollen, ist natürlich
Quatsch.
Und damit sind wir wieder bei der mangelnden Differenziertheit deiner
Darstellung.
Das ist so, als würdest du fragen, "Wie kann ich meine Software
schneller machen?"
Darauf lässt sich in tausenderlei Weise antworten - oder besser gar
nicht, weil die Frage unpräzise, ohne Kontext ist.

> > Aber zuerst: Wie sieht die Grob-Architektur aus?
>
> Noch garnicht. Frontend .... Backend .... DB. Das ist eigentlich
> alles :-) Aber vielleicht ist das auch nur so, weil ich das schon oft
> so gemacht habe? Deshalb eben die Frage nach weiteren Ideen/Ansätzen/
> Erfahrungen =)

Sicher ist das so, weil es (d)ein Muster ist ;-)
Aber lass dich doch nicht von der Pauschalität der Wünsche des Kunden
beeindrucken.
Suche die Differenzierungen.
Oder ist wirklich alles gleich und alles so einfach? Hm...


>
> Die liegen in einer SQL Server DB und werden da von Telerik Open
> Access geschrieben/gelesen.

Naja, das ist heute so. Irgendwer schreibt da was rein.
Aber sollen so die verschiedensten Frontends damit umgehen?
Das bezweifle ich.
Reply all
Reply to author
Forward
0 new messages