Buchrezension:
Systemarchitekturen für verteilte Anwendungen

J. Dunkel, A. Eberhart, S. Fischer, C. Kleiner, A. Koschel
Systemarchitekturen für verteilte Anwendungen
Client-Server, Multi-Tier, SOA, Event-Driven Architecture, P2P, Grid, Web 2.0

303 Seiten. FlexCover
€ 34,90
ISBN 978-3-446-41321-4

Die technischen Anforderungen, die an IT-Systeme der heutigen Zeit gestellt werden, sind enorm. Insbesondere der Aspekt der Verteilung ist ein nicht mehr wegzudenkender Bestandteil bei deren Planung und Entwicklung. Auch ist die Fülle der hier verfügbaren Ansätze überaus beeindruckend. Muss der System-Architekt im Einzelfall eine Wahl treffen, so entwickelt sich die Vielfalt schneller zum Fluch, als einem lieb sein kann.

Das Ziel, dabei eine gewisse Orientierung zu geben, haben sich die Autoren Jürgen Dunkel, Andreas Eberhart, Stefan Fischer, Carsten Kleiner und Arne Koschel bei der Vorlage ihres Werks „Systemarchitekturen für verteilte Anwendungen“ auf die Fahne geschrieben. Frei nach dem Motto des Klappentextes „Gut verteilt ist halb gewonnen…“ findet man auf 292 Seiten all das, was heutzutage State-of-the-Art in Sachen verteilter Systemarchitekturen ist. Das Spektrum der vorgestellten Konzepte spannt sich von den Grundprinzipien der Client-Server-Architektur über Multi-Tier-Systeme, SOA, Event-Driven-Architecture, Peer-to-Peer, Grid-Computing bis hin zu Web 2.0 auf. Fast nichts bleibt unerwähnt und sei es die inzwischen eher als antiquiert zu bezeichnende Kommunikation zweier Anwendungen mithilfe von Sockets. Gewürzt wird das ganze mit einigen Praxisberichten, die einen Eindruck davon vermitteln sollen, wie durch den geeigneten Einsatz der vorgestellten Modelle am Ende des Projektes doch noch alles gut werden kann.

Wenn, wie im Einleitungskapitel zu lesen, die Autoren mit dem Buch vor allen Dingen eine Entscheidungshilfe bei der Wahl des passenden Architekturmodells bieten wollen, dann stellt sich vor allem eine Frage: Wie gut schafft es das Buch bzw. die Autoren in dem doch recht knapp gehaltenem Umfang die schier unglaubliche Vielfalt von Konzepten und Technologien so zu vermitteln, dass sich ein vermehrter Nutzen aus der Lektüre einstellt. Oder anders formuliert: Wird es dem geneigten Leser mithilfe des Buches leichter fallen, eine entsprechend fundierte Architekturentscheidung zu treffen?

Um die Antwort auf diese Frage einmal vorweg zu nehmen: Das Buch vermittelt den angestrebten breit gefächerten Überblick. Bezogen auf das einzelne Architekturmodell wird hierbei die Ebene einer einfachen Einführung aber nicht verlassen. Das Verhältnis zwischen theoretischen Grundlagen und praxisrelevanten Aspekten erscheint für ein Einstiegswerk durchaus angemessen. Den Autoren gelingt es, die bei diesem Themengebiet oft ins esoterische abgleitende Diskussion der zugrunde liegenden Paradigmen nicht unkommentiert fortzuführen. Inhaltlich zerfällt das Buch in vier grobe Teile. Teil Eins ist ganz der Grundlagenvermittlung gewidmet und erklärt Begrifflichkeiten der Softwarearchitektur im gemeinen und der verteilter Systeme im speziellen. Den weitaus größeren Raum beansprucht jedoch Teil Zwei für sich. In ihm werden die einzelnen Architekturmodelle der Reihe nach vorgestellt. Ein, wie ich finde, besonders mutiges Unterfangen ist die Aufstellung und Herleitung einer Bewertungsmatrix zum Vergleich dieser Ansätze im dritten Teil des Buches. Bezogen auf ein konkretes Anwendungsszenario sind bei der Auswahl der Architektur sicher eigene Maßstäbe anzulegen. Die vorgestellten Bewertungskriterien bieten dem Leser aber einen ganz guten Vorgeschmack auf später selbst zu erledigende Aufgaben. Ebenfalls im dritten Teil enthalten sind die zu Anfang bereits erwähnten Praxisbeispiele. Im letzten Teil wagen die Autoren dann einen Blick in die Glaskugel und greifen Themen auf, die die Zukunft verteilter Systeme prägen werden oder könnten.

Das Buch vermittelt einen positiven Gesamteindruck, dennoch ergeben sich in der Darstellung der einzelnen Architekturkonzepte für mich zwei wesentliche Kritikpunkte. Der erste bezieht sich auf die Gliederung, in der die einzelnen Systemarchitekturen eingeführt werden. Diese folgt immer ein und demselben Schema: Theoretische Einführung, Vorstellung von Realisierungsplattformen und ganz zum Schluss einige Codebeispiele. Letztere in einem eigenen Abschnitt hintenan zu stellen, ist dem Lesefluss nicht gerade förderlich. Um Begriffe und architektonische Randbedingungen mit dem jeweiligen Beispiel in Übereinklang zu bringen, fängt man nun zwangsläufig an zu blättern. Die Vorstellung der Realisierungsplattformen mit direktem Bezug zu allen zugehörigen Beispielen wäre meines Erachtens die glücklichere Wahl gewesen. Dem Leser des Buches kann man hier nur empfehlen, sich von der vorgegebenen Struktur zu emanzipieren und die Beispiele direkt anzusteuern. Tut er dies nicht, muss er, wie etwa in Kapitel 4, nach Vorstellung der CORBA-Plattform erstmal die Prinzipien von JEE und .NET über sich ergehen lassen, ehe ihm gezeigt wird, wie man mit CORBA entwickelt. Ein Umstand, der gerade bei einem Einstieg in die Thematik unnötig für Verwirrung sorgen kann.

Der zweite Kritikpunkt begründet sich in der Auswahl von Realisierungsplattformen und die Umsetzung der Beispiele selbst. So finden wir z. B. im Kapitel 5.3 Realisierungsplattformen für eine SOA. Unter anderem hat es auch Apache Axis in den vorgestellten Kanon geschafft. Mit diesem, in der Java-Welt zum Einsatz kommenden Framework lassen sich ganz sicher vortrefflich Web Services auf der Basis des SOAP-Protokolls implementieren. Der Begriff „Plattform“ erscheint mir im Zusammenhang mit Axis jedoch unangebracht. Die eigentliche Plattform wäre in diesem Kontext wohl die Java-Plattform selbst gewesen. Sie und ihre Konzepte für das Service-orientierte Modell (JBI, JAX-WS, …) vorzustellen, hätte den Kern der Sache besser getroffen. Eine weitere Randnotiz der im Falle SOA etwas verloren gegangenen Sorgfalt findet sich einige Seiten weiter in Kapitel 5.4. Über die verschiedenen Plattformen hinweg soll gezeigt werden, wie eine heterogene Systemlandschaft mithilfe von Serviceorientierung in einen gänzlich neuen Anwendungskontext gestellt wird. Den fachlichen Hintergrund bildet die Abfrage von Konditionen für einen Bankkredit mit Bonitätsprüfung und mehreren beteiligten Banken. Hier also ein bisschen Axis, da ein wenig .NET und noch viel mehr BPEL entsprechen ja durchaus dem, was der praktische Anwendungsfall zu bieten hätte, das alles jedoch auf ganzen fünf Seiten zu präsentieren, muss leider scheitern. Da die Arbeitsweise der Frameworks zuvor nicht eingeführt wird, bleibt auch der reichlich abgedruckte Quelltext für den Einsteiger ohne größeren Nutzen. Die Frage, ob man z. B. mit Axis Version 1.4, dass seit April 2006 nicht mehr aktiv weiterentwickelt wird, immer richtig liegt, ist sicher auch Geschmacksache. Noch ehe man aber mit dem Beispiel Tuchfühlung aufnehmen kann (man wüsste z. B. schon gerne noch wie die versandten Nachrichten denn am Ende aussehen, oder wie auf wundersame Weise die BPEL-Engine funktioniert), enden die Ausführungen abrupt und hinterlassen ein reichlich unbefriedigendes Gefühl. Die Autoren selbst hätten dieses Kapitel nicht treffender charakterisieren können, wenn sie in dessen letztem Satz schreiben: „…Aus Platzgründen verzichten wir auf den restlichen Algorithmus, der bei ausreichender Schufabewertung die beiden Banken anspricht.“ Falls man die Absicht hatte, ein komplexes Anwendungsszenario vorzuführen, so scheitert diese an der Art und Weise seiner Darstellung. Dem Verständnis zuliebe hätte man sich die Mühe machen sollen, derartige Beispiele in einer gewissen Gesamtheit zu präsentieren oder sie eben von vornherein wegzulassen.

Trotz der aufgeführten Kritikpunkte ist das Buch eine gute Investition für all jene, die noch nach dem notwendigen Sprungbrett für eine anschließende eingehendere Beschäftigung mit der Thematik suchen und bisher noch nicht fündig geworden sind. Wer allerdings bereits Überblickswissen zu den vorgestellten Systemarchitekturen sein Eigen nennt, fährt mit einem vertiefenden Werk zu einem der vorgestellten Ansätze sicher besser.

Kommentare sind abgeschaltet.