Enterprise applications are transactional, distributed multi-user applications that are employed by organizations to control, support, and execute business processes. Traditionally, data-intensive enterprise applications were built on top of centralized transaction processing monitors. Nowadays, these TP monitors are replaced by object-oriented multi-tier architectures. In this thesis, we focus on two aspects of object-oriented, data-intensive enterprise applications: distribution and data management.
We first define an architectural style for multi-tiered enterprise applications. In addition to the tiered structure, the style focuses on an application's process topology, which consists of distributed processes as defined by the operating system, data stores, and client/server communication relationships. Usually, the design of an adequate process topology for a concrete application is the task of a software architect. Typically, a design has to address a broad range of requirements, such as scalability, performance, availability, security, the need to integrate existing subsystems, or organizational and legal requirements. As a guide to the design of process topologies, we present a catalogue of patterns (so called topology patterns) that form a pattern language for our architectural style.
Traditionally, distribution of enterprise applications is considered a high- level, architectural concern. Decisions on distribution have to be made at an early design stage of a development project and are expensive to change later on. Moreover, existing enterprise application middleware supports only a small set of standard topologies well. However, we argue that demanding enterprise applications require custom and adaptable process topologies:
* Custom topologies are needed to address application-specific requirements, e.g., those concerning replication, distributed data, caching, or integration of existing subsystems. Using simple standard topologies instead of custom topologies can significantly restrict the capabilities of demanding enterprise applications. * During the life cycle of an enterprise application, requirements are likely to change. For example, an application has to serve an increasing number of concurrent users or has to provide more fault tolerance. A process topology should be adaptable, i.e., easy to adapt to changing requirements without having to re-design the application.
Unfortunately, such topologies are difficult to realize with existing enterprise application middleware. We analyze the difficulties and identify six key requirements for middleware to efficiently support custom and adaptable process topologies. Among other things, it is essential to pairwise decouple topology, application code, and data distribution scheme. Furthermore, we present our Flexible Process Topology (FPT) architecture, which realizes all these requirements. The architecture defines principles of a middleware framework that enables custom and adaptable distributed process topologies. The architecture relies on a network of object manager components that collectively provide data management services to application code.
As a proof-of-concept, we present an exemplary implementation of a middleware framework for enterprise applications that is based on the concepts of our FPT architecture. The prototype demonstrates that, in typical cases, the distributed structure of an enterprise application can be defined and adapted through (re)configuration \- without affecting the implementation. This gives developers more flexibility in constructing and customers more flexibility in deploying their enterprise applications. The framework scales from simple two- tier architectures to large-scale distributed structures with features like an arbitrary number of tiers, distributed data stores, and replication of application processes. Finally, we evaluate adaptability and performance of our proof-of-concept implementation for several typical scenarios.
Enterprise-Applikationen sind transaktionale, verteilte Mehrbenutzer- Anwendungen, die von Organisationen zur Steuerung, Unterstützung und Ausführung ihrer Geschäftsprozesse eingesetzt werden. Datenintensive Enterprise-Applikationen wurden traditionell auf Basis von zentralisierten Transaktionsmonitoren entwickelt. Heutzutage werden solche Transaktionsmonitore durch objektorientierte Mehrschicht-Architekturen abgelöst. In dieser Arbeit geht es primär um zwei Aspekte objektorientierter, datenintensiver Enterprise-Applikationen: Verteilung und Datenverwaltung.
Zu Beginn wird ein Architekturstil für mehrschichtige Enterprise-Applikationen definiert. Der Stil stellt nicht nur auf die Schichtenstruktur einer Enterprise-Applikation ab, sondern auch auf ihre Prozesstopologie, welche aus verteilten (Betriebsystem-)Prozessen, Datenspeichern und Client/Server Kommunikationsbeziehungen besteht. Der Entwurf einer adäquaten Prozesstopologie für eine konkrete Enterprise-Applikation ist in der Regel Aufgabe eines Softwarearchitekten. Typischerweise hat ein solcher Entwurf einer ganzen Reihe von Anforderungen zu berücksichtigen wie z.B. Skalierbarkeit, Performanz, Verfügbarkeit, Sicherheit, die Integration existierender Subsysteme sowie organisatorische und juristische Rahmenbedingungen. Als Hilfe für den Entwurf von Prozesstopologien wird in der Arbeit ein Katalog von Mustern (so genannte Topologie-Muster) vorgestellt, der eine Muster-Sprache für den zuvor definierten Architekturstil darstellt.
Traditionell wird die Verteilung von Enterprise-Applikationen als Architekturangelegenheit höchster Ebene betrachtet. Entscheidungen bezüglich Verteilung werden möglichst im frühen Entwurfsstadium eines Entwicklungsprojekts getroffen und können später oft nur mit hohem Aufwand geändert werden. Darüber hinaus wird von existierender Middleware für Enterprise-Applikationen nur eine kleine Menge von Standard-Topologien gut unterstützt. In dieser Arbeit wird hingegen argumentiert, dass anspruchsvolle Enterprise-Applikationen sowohl anwendungsspezifische als auch anpassbare Prozesstopologien benötigen:
* Anwendungsspezifische Topologien werden benötigt, um die individuellen Anforderungen von Enterprise-Applikationen zu adressieren, z.B. bezüglich Replikation, Datenverteilung, Caching, oder der Integration existierender Subsysteme. Eine Beschränkung nur auf einfacher Standard-Topologien bedeutet eine wesentliche Einschränkung für anspruchsvolle Enterprise-Applikationen. * Es ist wahrscheinlich, dass sich die Anforderungen an eine Enterprise-Applikation im Laufe ihres Lebenszyklus ändern. Beispielsweise kann erforderlich sein, dass eine Applikation eine stark steigende Anzahl gleichzeitig arbeitender Nutzer bedient oder einen höheren Grad an Fehlertoleranz bietet. Eine Prozesstopologie sollte deshalb anpassbar sein, d.h. einfach nachträglich zu ändern, ohne zugleich auch wesentliche Teile der Applikation neu entwerfen zu müssen.
Leider lassen sich anwendungsspezifische und anpassbare Topologien nur schwer mit existierender Middleware realisieren. In der Arbeit werden diesbezügliche Probleme analysiert und dann sechs grundlegende Anforderungen an Middleware für effiziente Unterstützung von anwendungsspezifischen and anpassbaren Prozesstopologien identifiziert. Unter anderem ist es essentiell, Topologie, Anwendungscode und Datenverteilungsschema paarweise zu entkoppeln. Im nächsten Schritt wird eine Middleware-Architektur, die Flexible Process Topology (FPT) Architektur vorgeschlagen, welche alle zuvor identifizierten Anforderungen umsetzt. Die Architektur definiert Grundzüge eines Middleware-Frameworks, welches sowohl anwendungsspezifische als auch anpassbare Prozesstopologien ermöglicht. Sie basiert auf einem Netzwerk von Objektmanager-Komponenten, die kooperativ Datenverwaltungsdienste für Anwendungscode erbringen.
In der Arbeit wird exemplarisch die Implementierung eines Middleware- Frameworks für Enterprise-Applikationen vorgestellt, welches auf den Konzepten der FPT-Architektur basiert. Der Prototyp demonstriert, dass in typischen Fällen die verteilte Struktur einer Enterprise-Applikation allein durch (Re)Konfiguration definiert und angepasst werden kann - ohne dass dabei die Implementierung geändert werden muss. Diese Eigenschaft gibt Entwicklern mehr Flexibilität beim Entwickeln von Enterprise-Applikationen und Kunden mehr Flexibilität beim Einsatz derselben. Das vorgestellte Framework skaliert von einfachen Zweischicht-Architekturen bis hin zu großen verteilten Strukturen mit beliebig vielen Schichten, verteilter Datenhaltung und Replikation von Anwendungsprozessen. Zum Schluss wird die Anpassbarkeit und Performanz des Prototyps anhand mehrerer Szenarien evaluiert.