
Mahdi Mostafazadeh
Thesis Abstract
For more than a decade, the microservice architectural style has been considered as a solution to various software development challenges such as scalability, availability, and maintainability. Despite widespread research on the microservice architecture, some of the issues and challenges have not been adequately addressed. The most important challenge is the diversity of the parameters affecting architectural design, so that ignoring any part of these parameters can lead to a mismatch between the target architecture and its requirements and limitations. Among the issues afflicting existing approaches and methods of designing microservice-based systems is inadequate attention to the details of the final design, and limitations as to the abstraction level of the output; this has resulted in poor automation in this area. Another shortcoming of these approaches and methods is their lack of attention to the operational capacity and costs associated with the software/hardware platform.
The goal of this research is to propose a novel model-driven approach that transforms the design process of microservice-based systems from an intuition-based process to a systematic one, in which the output is a high-quality architecture that meets the requirements. This paradigm shift can facilitate the automation of the process of microservice architecture development. The approach should explicitly consider non-functional needs, limitations of the operation environment, and implementation costs.
After reviewing existing approaches and modeling methods through a comparison framework and finding their shortcomings, this research aims to propose a different approach to modeling the requirements and limitations of software systems, considering all the parameters affecting the design of microservice architecture. In this regard, a set of metamodels will be defined to represent the requirements, constraints and solution spaces. The mappings between these metamodels is defined through a set of transformation rules. Implementing the metamodels and transformation rules within a tool makes it possible to utilize the proposed methodology. The input of the transformation algorithm is a set of models that represent the requirements and constraints - including those related to the software/hardware platform. The output of the algorithm will be generated in two steps. The output of the first step is a set of models that represent the details of a microservice-based architecture. The proposed design will be such that it fully meets the requirements and limitations (especially non-functional requirements), and minimizes the development costs. In the second step, the transformation algorithm generates executable code based on the specifications of platform technologies.
This research will be conducted through the following stages: 1) investigating previous model-driven approaches to microservice development; 2) gathering and classifying parameters affecting microservice design; 3) gathering and classifying microservice-based solution components; 4) gathering and classifying microservice-related technologies; 5) constructing a metamodel for each space; 6) defining a set of transformation rules to establish mappings among the three spaces; 7) proposing a practical methodology to make the approach applicable; 8) development of a tool to support the proposed methodology; 9) validation of the proposed methodology through applying evaluation criteria and conducting a case study.
The goal of this research is to propose a novel model-driven approach that transforms the design process of microservice-based systems from an intuition-based process to a systematic one, in which the output is a high-quality architecture that meets the requirements. This paradigm shift can facilitate the automation of the process of microservice architecture development. The approach should explicitly consider non-functional needs, limitations of the operation environment, and implementation costs.
After reviewing existing approaches and modeling methods through a comparison framework and finding their shortcomings, this research aims to propose a different approach to modeling the requirements and limitations of software systems, considering all the parameters affecting the design of microservice architecture. In this regard, a set of metamodels will be defined to represent the requirements, constraints and solution spaces. The mappings between these metamodels is defined through a set of transformation rules. Implementing the metamodels and transformation rules within a tool makes it possible to utilize the proposed methodology. The input of the transformation algorithm is a set of models that represent the requirements and constraints - including those related to the software/hardware platform. The output of the algorithm will be generated in two steps. The output of the first step is a set of models that represent the details of a microservice-based architecture. The proposed design will be such that it fully meets the requirements and limitations (especially non-functional requirements), and minimizes the development costs. In the second step, the transformation algorithm generates executable code based on the specifications of platform technologies.
This research will be conducted through the following stages: 1) investigating previous model-driven approaches to microservice development; 2) gathering and classifying parameters affecting microservice design; 3) gathering and classifying microservice-based solution components; 4) gathering and classifying microservice-related technologies; 5) constructing a metamodel for each space; 6) defining a set of transformation rules to establish mappings among the three spaces; 7) proposing a practical methodology to make the approach applicable; 8) development of a tool to support the proposed methodology; 9) validation of the proposed methodology through applying evaluation criteria and conducting a case study.
Keywords
Microservice, Model-Driven Engineering, Metamodel, Model Transformation, Architectural Design, Non-functional Requirements