| Kurzfassung | 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.
|