The Microservice Dungeon (WS 21/21)
"The Microservice Dungeon" is a large, interconnected project in WS 21/22, where four modules in three study programs interact. There will be ca. three months of joint preparation, and then we will have a 1.5 week Hackathon in January 2022 - with the goal to build a large microservice architecture, where robots swarm through a dungeon and fight each other.
In small teams (or as solo players) the students will implement autonomous robot swarms, who compete for resources (e.g. mining) and fight each other in a dungeon. Each robot swarm is a microservice - with complete freedom of choice wrt. technology. Central services such as dungeon, mining exchange, bank, robot registry (and whatever else we need) each also are services.
Interaction with these central services will happen through synchronous via REST APIs. The robots additionally communicate asynchronously - for example, listening to events to follow the moves of their opponents. The individual teams keep their code secret, so they can implement sophisticated algorithms to "trick" others teams - so that they are able to cleverly secure resources, or attack others. In the game, an economy will be defined. I.e. everything costs - spawning new robots, moving robots, attacking, defending, etc. Money can be earned by mining, or by successful attacks.
(Graduates of ST2 in SS20 will find this a bit familiar. In fact, the idea takes the practical assignment for ST2 to the next level: The goal is to implement a loosely coupled architecture according to DDD principles (i.e. a microservice application) in a realistic size.
Four coupled modules - and their roles
For this project, four modules in three study programs will come together - this is pretty new, complex, and innovative, even for ArchiLab standards . The students will take up different roles, as shown below.
The modules / teams will have the following roles.
Project Launch (PL), Code & Context, 5th semester
Project Launch (13 ECTS, in total 8 weeks fulltime, as a block module) is a 5th semester project in study program Code & Context. The particants will take the role of Dungeon Masters. As a team of 4-5 students, they will design the gameplay - i.e. the rules of the game. How much do things cost? What revenue do you get from mining minerals? For how much can you buy new robots, or sell used weapons?
To ensure fair play, these rules will be kept a secret from the other teams. As an additional task, the project launch team will implement the dungeon service, which contains the dungeon structure and position of mineable ressources.
Information about meetings, learning outcome, and grading can be found on the dedicated Project Launch page.
Informatikprojekt (IP), Informatik Bachelor, 5th semester
The "Informatikprojekt" (computer science project) is a 10 ECTS (ca. 300h) 5th semester project in Informatik Bachelor study program. There will be ca. 15 participants, taking over a double role (see also the time schedule Miro board described below).
- In the preparation phase (end of September ... end of December), the students will form teams of up to three persons, and implement the infrastructure for the dungeon. So they will be Dungeon Builders creating the central services. The actual dungeon layout and the rules are designed by the Dungeon Masters, but the Dungeon Builders implement the main part of it.
- Then, during the competition, the Informatikprojekt becomes Codefighters - they implement robot swarms and steer them against the other teams.
Information about meetings, learning outcome, and grading can be found on the dedicated Informatikprojekt page.
Microservice Architectures (MSA), Code & Context, 3rd semester
The course Microservice Architectures (3 ECTS, 2 weeks fulltime as a block module) from the study program Code & Context will also act as Codefighters. For time reasons, this course cannot participate in the preparation. Therefore, they will join in the competition phase.
Information about meetings, learning outcome, and grading can be found on the dedicated Microservice Architectures page (will be added soon).
Fachspezifischer Architekturentwurf / Domain-Driven Design (FAE / DDD), Master Computer Science / Master Digital Sciences
The Master modules Fachspezifischer Architekturentwurf (FAE) and Domain-Driven Design (DDD) from Master Computer Science (from WS21/22 onwards: Master Digital Sciences - Software Architecture) will take up the roles of Dungeon Architects. They will design the APIs and document the architecture decisions. In the competition phase, they will support the Coaches die anderen Teams unterstützen.
Information about meetings, learning outcome, and grading can be found on the dedicated FAE/DDD page (will be added soon).
There is a Miro board describing the planned schedule for the project: https://miro.com/app/board/o9J_lyTMZfQ=/.
Specification & Planning
The specification & planning phase lasts from 27.09. until 08.10.21. There are two major milestones:
Event Storming (01. & 04.10.)
Event Storming is used to explore the domain, especially the domain events. This was scheduled on 01. and 04.10.21 at Schanzenstr. 22 (Code & Context location). The results are documented in this Miro board: https://miro.com/app/board/o9J_lsQV7ZA=/
Context Map & Services (08.10.)
On Fr 08.10., we will meet to derive the Context Map from the Event Storming results. The Context Map determines the general service layout (distribution of the overall functionality into a number of independent services). We will meet online, using the DDD/FAE Zoom link: https://th-koeln.zoom.us/j/86459424315?pwd=SGQra090M1B6eVJZcU1qQzZubkhDUT09.
The agenda for the day is as such:
|10:00 - 11:00||just DDD/FAE course||Discussion of DDD/FAE role in the project (see also DDD/FAE page)|
|11:00 - 11:15||*** break ***|
|11:15 - 11:30||all (IP, PL, DDD/FAE)||Introduction of gameplay documentation by PL|
|11:30 - 12:15||all (in subgroups)||Recap: Aggregates (going over the aggregates again, as there was the feedback during Event Storming that the aggregate phase was too short)|
|12:15 - 13:00||*** lunch break ***|
|13:00 - 13:30||all||Brief introduction to Context Maps (by Prof. Bente)|
|13:30 - 14:15||all (in subgroups)||Subgroups working on Context Maps (each doing one)|
|14:15 - 14:45||all||Context Maps are presented|
|14:45 - 15:00||*** break ***|
|15:00 - 16:00||all||Creation of Unified Context Map|
|16:00 - 16:30||all||Discussion of next steps, esp. how to assign in subteams to the services derived from the Context Map|
As can be seen on the board, there is an implementationphase: 4 sprints, end of September to beginning of September.
The last sprint is reserved for an integration test.
8-day Hackathon & Fighting Arena in January 2022
Will happen from 5. - 14. January, the robot swarms will be implemented, and fight against each other. These dates need to be exclusively reserved by Informatikprojekt and FAE / DDD. (The Code & Context modules are in block format, anyway).
Documentation & Final Presentation
After the Hackathon, there will be a final presentation by all teams (28.01.22)
If you want to prepare: In this project, you can apply your DDD and coding knowledge (... what you learnt in ST1 und ST2 ...) to a real application. The following books I can recommend. You can access online versions from the TH Köln VPN.
- Eberhard Wolff: Microservices - Grundlagen flexibler Softwarearchitekturen (dpunkt, 2018)
- Aus dem VPN der Hochschule online zugreifbar: https://content-select.com/de/portal/media/view/5d76655c-1f64-4f22-ac05-7e37b0dd2d03?forceauth=1
- Sam Newman: Microservices: Konzeption und Design (mitp Professional)
- Aus dem VPN der Hochschule online zugreifbar: https://ebookcentral.proquest.com/lib/koln/detail.action?docID=2089872
- Das englischsprachige Original ist auch online über die Hochschulbibliothek verfügbar