GP »The Microservice Dungeon 3.0« (GP Microservice Dungeon 3.0 (WS22)), WS22
This Guided Project is part of “The Microservice Dungeon”, where students from bachelor and master programs jointly build a large, distributed (gaming) software landscape. This Guided Project focuses on a refactoring of the core services and on building a visual dashboard. The longterm project is documented here.

- Keywords
- microservice, large software system, domain-driven design, event-driven architecture, game development, Kubernetes
- Study Program and Module Description
-
Master Digital Sciences (specialization Software Architecture)
(see also module description in the study program web site)
- Begin/End and Scheduling
-
22.09.2022 - 15.03.2023. Organized as an agile project with sprints every 2 weeks. Workload depends on the type of project, will be clarified at kickoff.
- Location
- The module takes place in a hybrid format. Please refer to the respective time slot or workshop day (see below on this page), to check if it is online or in presence. If there are no details given on this page, please check the other communication channels (e.g. Discord).
-
-
Room 1:
1708 (Building LC4 (library building). Room 1708 is our lab office space, with enough room for small workshops. However, the room is only accessible with by transponder. Thereore, please be at the door left of the library entrance (where you see the label "Kriminalkommissariat", since the Gummersbach police criminal investigation unit is our office neighbour :-). I will fetch you there. Call me (+49 176 8072 2689) or a fellow student by mobile phone in case you should run late), see also
detailed directions
-
Room 2:
Innovation Hub (Building LC7, the building to the right of the passage to Gummersbach station. The Innovation Hub is not not open to the public. However, the main entrance door is open during office hours. Come up to the second floor and ring the bell there. Please call me (+49 176 8072 2689) or a fellow student by cell phone if no one answers), see also
detailed directions
-
Video conference link:
https://th-koeln.zoom.us/j/4425088059?pwd=bxHOJB7D3pBHdTpruFHSdC1Y66e9Rr.1
-
Registration
for the Project
-
Please join
this ILIAS course.
Registration is possible until 25.08.2022.
The maximum number of participants is
8.
If there are less than
2
participants the course cannot take place.
- Discord Server for fast Communication
-
Discord has been proven as a very effective platform for information sharing, discussions, and consultations. Therefore, please join the ArchiLab Discord Server at
https://discord.gg/YYNYb5whU8.
Navigate to channel
#rollenzuweisung
and click on
msd
.
Then you see all channel(s) relevant for this module.
Learning Outcome
As a Software developer I can refactor and further develop a complex brownfield microservice architecture, like "The Microservice Dungeon",
by me ...
- understanding the way the software landscape works, and where its flaws are,
- prioritizing new features and refactoring tasks in an agile team process,
- specify, implement, test, and run my enhancements,,
- guide junior developers developing downstream services (their own players), using "my" APIs,
- describe my work, my results, and my reflection in a developer documentation and a team presentation,
so that I can try out how it is to work in a team developing complex software systems with a distributed back and front end.
What is this about?
“The Microservice Dungeon” started as an interconnected software project in WS 21/22, where four modules in
three study programs interacted (Informatik Bachelor, Code & Context Bachelor, and Digital Sciences Software
Architecture Master). Initially, we had ~50 students in this project. The goal was to simulate a really large
software system, where autonomous, agile teams can work independently.
Therefore, we chose a Microservice architecture. Robots swarms move through a dungeon (or rather, through a
galaxy of planets), mine resources, trade them for weapons, and fight each other. These robot swarms are
controlled by independent, decoupled services, each implemented by a small development team. A set of core
services take care of various game aspects (map, robots, trading, game, gamelog) and make sure that the
independent player services (controlling a robot swarm each) cannot cheat.
The project is well documented at
https://the-microservice-dungeon.gitlab.io/docs/,
where you find information about the architecture, a player implementation guide, API docs, and a lot more.
After three months of joint preparation, there were two code fight days in January 2022. This was great fun.
So much so, that we decided to continue the project and go for a follow-up guided project in summer semester 2022,
where we worked on missing features and some refactoring.
Project Definition
In order to continue this work, there will be a Microservice Dungeon 3.0 project. It will run jointly with
an “Informatikprojekt” in Informatik Bachelor. While the Informatikprojekt participants
will create their own players, this Guided Project will concentrate on the core services.
Project Goal: move this IT landscape to a (fully asynchronous) event-driven architecture (EDA)
Currently, we have a mix of synchronous and asynchronous communication in the project. The core services
produce business events (like e.g. “robot moved”) written to Kafka topics. Other services, including the
players, consume them. The player commands, however (like “purchase a new robot” or “move one robot to another
planet”), are still synchronous REST calls, sent to game service that acts as a central gatekeeper. These
synchronous calls lead to further synchronous internal REST calls to other services. This REST call chaining
has proven a major pain, making service decoupling difficult.
The goal of this GP is to refactor this IT landscape to a fully asynchronous, event-driven architecture (EDA).
All business events and all commands will be sent as events. There is an architectural big picture in place,
so we will start with a clear vision.
Optional Additional Project Goal: Create a Game Dashboard
If there will be sufficient participants in the GP, and some of them with a liking for front end work, then
development of a Game Dashboard is an additional goal. This project is by nature “backend focused”, as it
explores the challenges of distributed services and their communication pattern. Therefore, to this day we
don’t really have a central game dashboard where you can see planets, and robot swarms moving on them.
Developing such a Game Dashboard would be an optional additional goal then. It should be architected in such
a way that that subdomains (map, robots, …) are cleanly separated as components. This would allow us to
migrate to micro-frontend architecture some day.
Workload and organization
We will work in an agile setup with 2 weeks sprints. The 8 CP variant will vary from the 12 CP variant
by the amount of features implemented. We will discuss details in the project kickoff (see below).
Requirements
- Solid coding skills (Java, Kotlin, or Ruby)
- Familiarity with the concept of Microservices and Domain-Driven Design
- Interest in coding, architecture, and team development
- The following areas of expertise are not required, but may come a plus:
- Experience with asynchronous architectures (Apache Kafka, Rabbit MQ)
- Front end experience (SPA)
- (Dev)Ops, esp. Kubernetes
Grading
The grade for this GP will consist of the following parts:
- 80% quality of your contribution to the project
- code quality
- architectural quality of your specifications
- commitment and effort (willingness to go the extra mile, to make create a great result)
- professionalism in sprint reviews and creativity in planning
- 20% final presentation
Workshops
Thu 22.09.2022, 10:30 - 13:00: Kickoff
We get to know each other, check prerequisites (strengths / skills of each participant), and discuss goals, organizational details, and a roadmap roadmap for the project. Then we will do a first sprint planning.
Workshop Location
Video conference link:
https://th-koeln.zoom.us/j/4425088059?pwd=bxHOJB7D3pBHdTpruFHSdC1Y66e9Rr.1
.
Goal of the day
You can start with the project.
Agenda
-
10:30 - 11:00:
Introduction to project history
- Brief outline for the "newcomers" of what we did so far in the projects before
-
11:00 - 12:00:
Organizational details
- Individual prerequisits in terms of DDD, coding, and architectural concepts. Should we have some self-assessment? What options are there to obtain missing knowledge / skills (videos and other material for self-study)?
- Project time structure. Discord as messenger. What are suitable days for review / planning workshops? Presence, remote, hybrid? Joint working day onsite? Collaboration model with the Informatikprojekt? How to integrate InnoHub hackathon days?
- Workload agreement. How many days a week will each of us allocate, for what period? If we assume a project range of now (22.09.) to mid of March, this is ca. 23 weeks (Xmas not calculated). That is ca. 15.5h / week in the 12 CP variant and 10.5h in the 8 CP variant.
- What tool to use for issue tracking and sprint planning?
- Comments to the grading scheme?
-
12:00 - 13:00:
Roadmap and sprint planning
- Roadmap/vision - what are our main goals we want to achieve?
- Detail planning for the first sprint
Thu 06.10.2022, 10:00 - 13:00: Roadmapping & Onboarding
Regular sprint review, then some workshops to discuss infrastructure and architecture, for bringing everyone on the same page. Onboarding of Informatikprojekt.
Workshop Location
Room:
Innovation Hub (Building LC7, the building to the right of the passage to Gummersbach station. The Innovation Hub is not not open to the public. However, the main entrance door is open during office hours. Come up to the second floor and ring the bell there. Please call me (+49 176 8072 2689) or a fellow student by cell phone if no one answers), see also
detailed directions.
Goal of the day
Everyone has a clear(er) view on the project landscape and the way ahead. Next sprint has been planned.
Agenda
-
10:00 - 11:00:
Sprint review & general stuff
- Presenting what everyone achieved last sprint
- Integration with Informatikprojekt
-
11:00 - 14:00:
Workshops
- Infrastructure & vision
- Architecture & vision
- Visions service by service (at least GameLog, Map, Generic Player)
- Lunch break in between
-
14:00 - 15:00:
Sprint planning
- Detail planning for the coming sprint