Kontakt
stefan.bente[at]th-koeln.de
+49 2261 8196 6367
Discord Server
Prof. Bente Personal Zoom
Adresse
Steinmüllerallee 4
51643 Gummersbach
Gebäude LC4
Raum 1708 (Wegbeschreibung)
Sprechstunde nach Vereinbarung
Terminanfrage: calendly.com Wenn Sie dieses Tool nicht nutzen wollen, schicken Sie eine Mail und ich weise Ihnen einen Termin zu.

GP »The Microservice 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
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 (only in exceptional cases and if explicitly communicated in advance for the day)
Registration for the Project
Please join this ILIAS/ILU course. Deadline is 25.08.2022.
Maximum / Minimum Number of Participants
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 automatically get access to the 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