Bitte benutzen Sie diese Kennung, um auf die Ressource zu verweisen:
http://dx.doi.org/10.18419/opus-14484
Autor(en): | Keck, Alexander |
Titel: | Design and development of a framework for type-consistent and broker-independent messaging |
Erscheinungsdatum: | 2023 |
Dokumentart: | Abschlussarbeit (Bachelor) |
Seiten: | xi, 69 |
URI: | http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-145036 http://elib.uni-stuttgart.de/handle/11682/14503 http://dx.doi.org/10.18419/opus-14484 |
Zusammenfassung: | In the context of modern distributed systems, such as microservices, the messaging stack is a highly distributed network of loosely coupled producers and consumers. These components communicate using various serialization protocols, such as Apache Avro, protobuf, or JSON schema, through a central message broker, such as Apache Kafka, RabbitMQ, Amazon SQS, Azure Service Bus, and Google Pub/Sub. Notably, solutions exist to centrally store schemata in a registry.
The central problem addressed in this work is how to ensure type consistency during message transmission. Existing broker-dependent solutions often prioritize their underlying messaging platform, leading to low-level client implementations. Consequently, this affects the developer experience and necessitates manual integration of application logic between producers and consumers.
The main objective of this thesis is to design and develop an open-source Broker-Independent Type-Consistent Messaging Template Framework (BITCMT Framework) that offers a developercentric approach to type-consistent messaging. Therefore, this framework aims to provide a unified messaging contract, a schema definition paradigm, and a modular client architecture, all designed to ensure seamless type consistency in communication between producers and consumers.
To achieve this goal, this work analyzes existing partial solutions and combines them into a developer-friendly framework. It begins by defining the fundamental concepts of type-consistent messaging. Among other things, a central registry serves as the single source of truth for schemata and contracts. Additionally, a unified message encoding format and a novel approach to message processing through message endpoints are presented. Next, standardized interfaces for messaging resources and components are defined. Following this, a modular client architecture is developed to ensure high adaptability to a wide range of messaging platforms.
The concepts have been evaluated through a case study involving a NestJS reimplementation of the T2-Project reference architecture. The evaluation shows that the implementation of a research prototype demonstrated the adaptability of the framework architecture and its seamless integration. Furthermore, the reimplementation of a reference architecture underscores its practical utility. Yet, there is room for improvement in areas like error handling and message reply strategies, which require further development, along with real-world evaluations. To summarize, this work tackles the issue of type inconsistency with a developer-centric approach and continues to show potential for future research. Im Kontext moderner verteilter Systeme, wie etwa Microservices, ist der Messaging-Stack ein verteiltes Netzwerk von locker gekoppelten Produzenten und Konsumenten. Diese Komponenten kommunizieren mithilfe verschiedener Serialisierungsprotokolle, wie Apache Avro, protobuf oder JSON schema, über einen zentralen Nachrichtenbroker, wie etwa Apache Kafka, RabbitMQ, Amazon SQS, Azure Service Bus oder Google Pub/Sub. Dabei sei erwähnt, dass Lösungen existieren, um Schmata zentral in einer Registry zu speichern. Als zentrale Problematik geht diese Arbeit der Frage nach, wie die Typkonsistenz während der Nachrichtenübertragung sichergestellt werden kann. Denn die existierenden brokerabhängigen Lösungen priorisieren vielfach ihre zugrundeliegende Messaging-Plattformen und führen in der Folge zu Low-Level-Client-Implementierungen. Als Konsequenz dessen leidet die Developer- Experience und es wird eine manuelle Integration der Anwendungslogik zwischen Produzenten und Konsumenten erforderlich. Das Hauptziel dieser Arbeit ist es, ein brokerunabhängiges Open-Source Framework zu konzeptionieren sowie zu entwickeln, welches einen entwicklerzentrierten Ansatz für die Typkonsistenz von Nachrichten bietet. Das vorstehend beschriebene BITCMT Framework zielt darauf ab, einen einheitlichen Messaging-Contract, ein Schema Definitionsparadigma und eine modulare Client- Architektur bereitzustellen. Dies soll eine nahtlose Typkonsistenz bei der Kommunikation zwischen Produzenten und Konsumenten sicherstellen. Um dieses Ziel zu erreichen, analysiert diese Arbeit bereits existierende Teillösungen und kombiniert sie zu einem entwicklerfreundlichen Framework. Zunächst werden die grundlegenden Konzepte des Frameworks definiert, welche als Arbeitsgrundlage im Rahmen der weiteren Arbeit dienen. Unter anderem dient ein zentrales Registry als Single-Source-of-Truth für Schemata und Verträge. Darüber hinaus wird ein einheitliches Nachrichten-Codierungsformat sowie neuartige Ansätze zur Nachrichtenverarbeitung über Nachrichtenendpunkte dargestellt. In einem weiteren Schritt werden standardisierte Schnittstellen für Messaging-Ressourcen und -Komponenten definiert. Daran anschließend wird eine modulare Client-Architektur entwickelt, welche eine hohe Anpassungsfähigkeit an eine breite Palette von Messaging-Plattformen sicherstellen soll. Die Konzepte wurden anhand einer Fallstudie durch eine NestJS-Reimplementierung der T2-Project Referenzarchitektur evaluiert. Die Evaluierung zeigte die Anpassungsfähigkeit der Framework- Architektur sowie die nahtlose Anwendungsintegration. Darüber hinaus unterstreicht die Reimplementation in eine Referenzarchitektur die praktische Nützlichkeit des vorgestellten Frameworks. In Bereichen wie integrierte Fehlerbehandlung sowie integrierte Strategien zur Nachrichtenbeantwortung besteht jedoch noch Raum für Verbesserungen, welche als Gegenstand weiterführender Studien weiter entwickelt werden müssen. Zusammenfassend ist feszuhalten, dass diese Arbeit das Problem der Typinkonsistenz mit einem entwicklerzentrierten Ansatz behandelt und fortbestehendes Potential für zukünftige Forschung aufzeigt. |
Enthalten in den Sammlungen: | 05 Fakultät Informatik, Elektrotechnik und Informationstechnik |
Dateien zu dieser Ressource:
Datei | Beschreibung | Größe | Format | |
---|---|---|---|---|
Thesis-Alexander-Keck.pdf | 1,03 MB | Adobe PDF | Öffnen/Anzeigen |
Alle Ressourcen in diesem Repositorium sind urheberrechtlich geschützt.