- Learning Outcome
- What is this about?
- Project Definition
- Workload and organization
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.
#rollenzuweisungand click on
msd. Then you see all channel(s) relevant for this module.
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.
“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.
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.
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.
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.
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).
The grade for this GP will consist of the following parts:
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.
Video conference link: https://th-koeln.zoom.us/j/4425088059?pwd=bxHOJB7D3pBHdTpruFHSdC1Y66e9Rr.1 .
You can start with the project.
Regular sprint review, then some workshops to discuss infrastructure and architecture, for bringing everyone on the same page. Onboarding of Informatikprojekt.
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.
Everyone has a clear(er) view on the project landscape and the way ahead. Next sprint has been planned.