Responsive Image

Mahdi Haji Mohammad Ali

Thesis Title: 

Domain-Driven Methodology for Developing Microservice-Based Software Systems

Thesis Abstract:

Microservice architecture is one of the types of service-oriented architectures. In this architecture, fine-grained services are defined around a business domain and deployed independently. This architecture allows for increasing scalability, portability, flexibility, and reusability at the enterprise level, as well as enabling the implementation of a Software-as-a-Service (SaaS) architecture. Moreover, it provides the possibility of organizing engineering teams around the concepts of domain and service. Today, this architecture is very popular in web-based systems, cloud services, and IT organizations. However, along with its many advantages, microservice architecture engages software development teams with several challenges, such as how to extract microservices, determine the level of granularity of microservices to reduce system complexity and response time, and ensure the quality of microservices.
The Domain-Driven Design (DDD) approach can facilitate the development of software for complex domains. The use of domain-driven patterns leads to better interaction between software engineers and the business, as well as a deeper understanding of the business by the engineers. In this approach, domain models are defined by domain experts, and the software design process is carried out based on these models. The use of this approach in creating microservice-based systems has gained significant attention due to its positive impact on addressing the challenges in this area.
One of the major weaknesses of existing domain-driven approaches for developing microservice-based systems is the lack of a comprehensive methodology with a complete definition of the software creation process and appropriate modeling for applying domain-driven methods. Current methodologies are weak in terms of requirement definition and preliminary analysis, and they do not include an architecture design process based on non-functional requirements. Umbrella activities such as project management, risk management, and quality assurance are insufficient, and the smooth transition required between different phases of software development is not ensured. Furthermore, they do not provide adequate scalability and flexibility, and there is insufficient attention to the high scale and complexity of microservices and the necessary activities for implementing, testing, and deploying them.
The goal of this project is to create a domain-driven methodology for software development based on microservice architecture that addresses the problems of existing methods while leveraging their strengths. To achieve this goal, it is essential to first review and evaluate the existing domain-driven methodologies for developing microservice-based systems. Next, the desired activities and process patterns for creating domain-driven microservice systems will be identified. Finally, the targeted domain-driven methodology will be developed based on the results of the previous activities and evaluated according to the established methodology assessment criteria. It will then be implemented in a practical project within an organization.