GP »The Microservice Dungeon 3.0« (GP Dungeon 3.0), 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).
Video conference link: https://th-koeln.zoom.us/j/4425088059?pwd=bxHOJB7D3pBHdTpruFHSdC1Y66e9Rr.1
Room: 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.)
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 event 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.

Content

Learning Outcome

As a Software developer I can refactor and further develop a complex brownfield microservice architecture, like "The Microservice Dungeon",

by me ...

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

Grading

The grade for this GP will consist of the following parts:

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

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 right of the passage to Gummersbach station. The Innovation Hub is not open to the public. Thereore, please be at the main entrance, and I will fetch you there. If you stand in front of the building facing the train station, the main entrance is around the corner to the right, not in front (that is the entrance of the restaurant). Call me (+49 176 8072 2689) or a fellow student by mobile phone in case you should run late.)

Goal of the day

Everyone has a clear(er) view on the project landscape and the way ahead. Next sprint has been planned.

Agenda