Software systems that are built in accordance with the Microservice Architecture pattern present viable solutions to modern problems in the rapidly evolving world of software engineering, particularly for industrial applications. This architectural pattern offers various benefits such as increased scalability, low coupling, high resilience, independent deployment, and greater agility compared to other architectural patterns. However, this highly distributed architectural paradigm poses novel challenges in essential software engineering activities such as quality assurance.
Due to the high complexity of building systems by following the Microservice Architecture pattern, design guidelines, including best practices, design patterns, and design principles, are employed by software architects and developers which help in constructing microservices applications in the most optimal ways. However, knowledge around such guidelines is widely dispersed and unorganised. As a result, there is a lack of a structured knowledge base of design guidelines that can be used as a reference guide for designing Microservices Architectures.
In addition, with respect to the quality assurance of microservices systems, there is a lack of comprehensiveness in the industry as well as academia concerning the quality of Microservices Architectures, including how it can be conceptualised and described. In relation to this, there is very limited information available on how the design guidelines affect the quality characteristics of a microservices application. As a result, there is a lack of standardised concepts that can enable targeted quality assurance of Microservices Architectures.
In this thesis, we create and structure a catalogue of 239 design guidelines, including best practices, design patterns, and design principles, that are used by software architects and developers to build Microservices Architectures. We also determine a set of quality characteristics that are related to each of the existing design guidelines. Additionally, we propose and evaluate a Quality Model which outlines and explains 70 quality characteristics that mutually and meaningfully describe the quality of microservices applications and architectures.