Microservices and Domain-Driven Design (Wintersemester 2017/2018)
Lecturer: Prof. Dr. Holger Giese
(Systemanalyse und Modellierung)
- Weekly Hours: 1
- Credits: 3
- Enrolment Deadline: 27.10.2017
- Teaching Form: Seminar
- Enrolment Type: Compulsory Elective Module
Programs & Modules
- BPET-Konzepte und Methoden
- BPET-Techniken und Werkzeuge
- OSIS-Konzepte und Methoden
- OSIS-Techniken und Werkzeuge
- SAMT-Konzepte und Methoden
- SAMT-Techniken und Werkzeuge
Microservices are a new approach for service-oriented architecture (SOA) that evolved from practice and is based on the better understanding of systems and architectures. Microservices are a specific SOA approach [Krafzig+2005]. Microservices are independently executable software components that collaborate within a service landscape. From all the domains covered by a service landscape, each microservice is responsible for a single clearly demarcated domain [Newman2015, Wolff2015].
Microservices have been successfully employed and pioneered as an implementation approach to SOA by many companies and organizations including Amazon, Netflix, The Guardian, the UK Government Digital Service, realestate.com.au, Forward and comparethemarket.com. Other companies and organizations are adopting a SOA-based approach that could be classified as microservices, but without using the name [Fowler2014].
Microservices have proven to address several problems of monolithic systems. Some of these problems comprise (1) the long time required to introduce a new functionality, (2) difficulty of system extension due to complex database schemas, (3) difficulty of distribution, (4) cost of testing, (5) that a single very complex build is required, (6) that adopted technology outdates rather fast and replacement is costly, and (7) that parts that have been added lately have to be removed from the system soon such that the integration efforts often do not pay off. These problems can be addressed by combining the microservices and other technologies such as (i) continuous integration & delivery, (ii) domain-driven design, and (iii) infrastructure automation.
In this seminar we will focus on the 2nd point (ii) domain-driven design [Evans2003]. We will study how this approach enables to decouple microservices by identifying the domain of each microservice within all the domains covered by an application. Further we will also investigate how this approach also allows to organize the necessary sharing between the microservices.
[Evans2003] Eric Evans. Domain-Driven Design: Tacking Complexity In the Heart of Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2003.
[Fowler2014] Martin Fowler. Microservices: a definition of this new architectural term. 2014. https://martinfowler.com/articles/microservices.html
[Krafzig+2005] Dirk Krafzig, Karl Banke, Diek Slama. Enterprise SOA: Service-Oriented Architecture Best Practices, Prentice Hall, 2005.
[Newman2015] Sam Newman. Building Microservices. O'Reilly Media, Inc., 1st edition, 2015.
[Wolff2015] Eberhard Wolff. Microservices: Grundlagen flexibler Softwarearchitekturen. dpunkt, Heidelberg, 2015.
The slides of the introductory meeting - including the seminar topics - will be found under FG Systemanalyse und Modellierung -> Microservices and Domain-Driven Design on the respective drive/the internal materials folder.
The course is a seminar, where each student will give a presentation and write a paper about his or her assigned topic. Each topic will focus on a specific element of domain-driven design in the context of microservices. While there will not necessarily be any implementation work involved, we expect the students to familiarize themselves with a shared example and use it to demonstrate the applicability and relevance of their topic. There will be an introductory meeting presenting basic concepts of microservices and domain-driven design. In addition, we will introduce the offered topics to choose from. Students wishing to participate will be asked to name their preferred topic(s), which we will then process to subsequently assign the topics.
We will grade the student's reports (50%) and presentations (50%). Participation in the seminar during other students' presentations in the form of questions and feedback will also be required.
Besides individual feedback meetings with supervisors (and the first meeting), there will not be any regular meetings during the semester. All presentations will be given on one day (date to be determined) near or after the end of lectures in the semester.
The first meeting will be on Monday the 16th of October at 13:30 in room A-2.1.