IP »The Microservice Dungeon 3.0« (IP Dungeon 3.0), WS22

Dieses Informatikprojekt gehört zu “The Microservice Dungeon”, wo Studierende aus mehreren Studiengängen ein große, verteilte (Gaming-)Software-Landschaft bauen. Das Gesamtprojekt ist hier beschrieben.

Keywords
microservice, large software system, domain-driven design, event-driven architecture, game development, Kubernetes
Studiengang und Modulbeschreibung
Informatik Bachelor (siehe auch Modulbeschreibung auf der Studiengangs-Seite)
Kickoff- / Informations-Treffen
Am 18.08.2022 10:00 - 11:00 gibt eine Auftakt- und Informationsveranstaltung. Sie können Fragen stellen und entscheiden, ob Sie sich für eine Teilnahme bewerben möchten. Die Veranstaltung ist remote: https://th-koeln.zoom.us/j/82080442081?pwd=Wldld0taclRiYUhqS3hlYmdqNEJ6UT09. Eine Videoaufzeichnung zum Kickoff gibt es hier. (Passwort: 1Q7Lk&5H).
Zeitraum und zeitliche Organisation der Veranstaltung
03.10.2022 - 03.02.2023. Organisiert als agiles Projekt mit Sprints im 2-Wochen-Rhythmus. Arbeitsumfang beträgt 2 Arbeitstage pro Woche. Pro Teilteam müssen gemeinsame Arbeitstage vereinbart werden.
Ort der Veranstaltung
Die Veranstaltung findet in einem Hybrid-Format statt. Bitte schauen Sie bei dem jeweiligen Zeitschlitz oder Workshoptag nach (siehe unten auf dieser Seite), ob dieser online oder in Präsenz stattfindet. Falls auf dieser Seite keine Angaben sind, prüfen Sie bitte die sonstige Kommunikation (z.B. Discord).
Videokonferenz-Link: https://th-koeln.zoom.us/j/4425088059?pwd=bxHOJB7D3pBHdTpruFHSdC1Y66e9Rr.1
Raum: 1708 (Gebäude LC4 (Bibliotheksgebäude). Raum 1708 ist unser Labor-Großraumbüro, mit etwas Kreativ-Mobiliar und genügend Platz für kleine Workshops. Der Raum ist allerdings nur mit einem Transponder zugänglich. Deshalb kommen Sie bitte zu der Tür links vom Bibliothekseingang (erkennbar an dem Schild "Kriminalkommissariat" :-), ich werde Sie dort abholen. Rufen Sie mich (+49 176 8072 2689) oder einen Kommilitonen per Handy an, falls Sie sich verspäten sollten.)
Anmeldung zum Projekt
Bitte werden Sie Mitglied in diesem ILIAS-Kurs. Die Anmeldung ist möglich bis zum 16.09.2022. Die maximale Teilnehmerzahl ist 10. Bei mehr Aufnahmeanträgen kann es ein Auswahlverfahren (durch ein kurzes, informelles Bewerbungsvideo (siehe unten), einzureichen bis 25.09.2022) geben. Bei weniger als 4 Teilnehmer*innen kann die Veranstaltung leider nicht stattfinden.
Discord-Server für schnelle Kommunikation
Discord hat sich als sehr effektive Plattform für den Informationsaustausch, Diskussionen und Fragen an Lehrende/Betreuer:innen erwiesen. Deshalb sollten Sie dem ArchiLab-Discord-Server unter https://discord.gg/YYNYb5whU8 beitreten. Navigieren Sie zum Channel #rollenzuweisung und klicken Sie auf msd und ip. Dann sieht man die entsprechenden Kanäle für diese Veranstaltung.

Inhalt

Worum geht es?

“The Microservice Dungeon” begann als ein vernetztes Softwareprojekt im WS 21/22, bei dem vier Module in drei Studiengängen zusammenwirkten. Anfänglich waren ~50 Studierende an diesem Projekt beteiligt. Das Ziel war es, ein wirklich großes Softwaresystem zu simulieren, in dem autonome, agile Teams unabhängig arbeiten können.

Das Gesamtprojekt ist hier beschrieben. Die Sourcen der Core Services liegen in unserer eigenen Organisation in Gitlab und sind Open Source.

Wer ST2 absolviert hat, dem wird die “Story” dieses Informatikprojekts vertraut vorkommen. In der Tat setzt das Projekt die Geschichte fort - einerseits inhaltlich (Robot-Schwärme werden autonom gesteuert, sammeln Ressourcen und kämpfen), aber wichtiger noch technisch. Denn jetzt gehen wir wirklich in eine große Software-Landschaft, wo es 6 Core-Services und eine beliebige Anzahl von Player-Services gibt. Alle diese Services sind lose gekoppelt, also nur wenig (bis gar nicht) von einander abhängig.

Und die Kommunikation wird nur teilweise synchron erfolgen, via REST, so wie in ST2 gelernt. Der Hauptteil der Kommunikation passiert nun asynchron, via Events. In der Gesamtlandschaft gibt es zwei Event Processing Platforms (Apache Kafka und Rabbit MQ). Die Player Services setzen Commands an die Core-Services synchron ab (via REST), und bekommen die Ergebnisse asynchron über Events, für Sie Listener schreiben.

Was ist Ihre Aufgabe?

In diesem Informatikprojekt werden Sie in kleinen Teams (1-3 Personen) jeweils einen Player Service implementieren. Sie haben vollständige Technologiefreiheit - sei es Kotlin, Java, C#, Scala, … Sie müssen allerdings auch das Deployment selbst machen. Dafür gibt es Anleitungen, via Helm Chart in ein Kubernetes Cluster.

Die Bearbeitung des Projekts erfolgt an zwei Tagen in der Woche in einem agilen Modus, d.h. mit Sprint-Reviews alle zwei Wochen. Wir werden einige dieser Termine auch für Workshops nutzen, um interessante Coding- und Architektur-Aspekte zu besprechen. Sie sollen sich darüber hinaus auch aktiv an Code-Reviews beteiligen, um sich gegenseitig bei gutem Code zu helfen. Das fließt in die Note mit ein.

Das Informatikprojekt wird gemeinsam mit einem Guided Project im Master Digital Sciences, Software Architecture durchgeführt. Die Masterstudierenden arbeiten an einem internen Refactoring der Core-Services, um die Migration zu einer vollständig Event-getriebenen Architektur voranzutreiben. Die Schnittstellen zu Ihren Player-Services werden dabei aber stabil bleiben.

Code-Fight

Am Ende dieses Informatikprojekts werden wir einen Code-Fight veranstalten, wo alle Player gegeneinander antreten. Es geht um die Ehre :-).

Teamgröße

Sie können in Teilteams zwischen 1 und 3 Personen arbeiten. Die ideale Teamgröße ist das Pair (2 Personen). Beachten Sie, dass von größeren Teilteams auch mehr erwartet wird (das schlägt sich in der Bewertung nieder), dass man aber bei Zusammenarbeit auch Synergien hat, bessere Qualitätskontrolle und vermutlich bessere Lösungen aufgrund der Diskussionen im Team.

Benotung

Die Benotung wird sich aus einzelnen Teilnoten für die folgenden Aspekte zusammensetzen:

Der Erfolg / Misserfolg im Code-Fight wird KEINEN EINFLUSS auf die Note haben. Das soll eine rein sportliche Aktivität für Ehre und Spaß bleiben.

Bewerbung

Bei mehr als 10 Bewerbungen erstellen Sie bitte ein kurzes (max. 3 min!) Video, in dem Sie bitte auf die folgenden Fragen eingehen:

Die Videos müssen keinerlei technischen Anspruch haben - also bitte keine Slides o.ä. Es genügt, einfach das Smartphone zu nehmen und sich selbst zu filmen. Die Videos können Sie in der folgenden Form hochladen:

Das laden Sie bitte bis Sonntag, 25.09. eod, auf https://th-koeln.sciebo.de/s/HffmMg9GTHYtp16 hoch. Ich wähle dann zusammen mit einem Mitarbeiter die überzeugendsten Videos zur Teilnahme aus. Sie müssen nicht schon ganz viel “können” - wir wählen danach aus, wer überzeugend ausstrahlt, mit Begeisterung an diesem Thema arbeiten zu wollen. Egal, wieviel Vorwissen Sie haben.

Was ist, wenn ich nicht zur Teilnahme ausgewählt werde?

Es gibt am Innovation Hub ein neues Hackathon-Projektformat: https://innovation-hub.de/hackathon. Schauen Sie doch dort am 21.10. vorbei! Da gibt es noch einmal einen ganzen Schwung von Angeboten.

Darüber hinaus lohnt sich ein Blick in die Projektbörse PROX für unseren Campus.

Workshops

Thu 06.10.2022, 11:00 - 14:00: Onboarding

Organisatorische Details des Informatikprojekts, inhaltliche Einführung in Architektur und Infrastruktur.

Ort des Workshops

Raum: Innovation Hub (Gebäude LC7, das Gebäude rechts vom Durchgang zum Bahnhof Gummersbach. Der Innovation Hub ist für die Öffentlichkeit nicht zugänglich. Seien Sie daher bitte pünktlich am Haupteingang, ich werde Sie dort abholen. Wenn man in Blickrichtung zum Bahnhof vor dem Gebäude steht, ist der Haupteingang rechts um die Ecke, nicht vorn (das ist der Eingang des Restaurants). Rufen Sie mich (+49 176 8072 2689) oder einen Kommilitonen per Handy an, falls Sie sich verspäten sollten.)

Ziel des Tages

Jede/r hat eine Vorstellung von Architektur, Infrastruktur und Dokumentation der Gesamtlandschaft des Projekts, und kann loslegen.

Agenda

Learning Outcome

Als SW-Entwickler:in kann ich einen Service in einer komplexen Microservice-Architektur konzipieren und implementieren,

indem ich ...

damit ich auf diese Weise große digitale Produkte entwickeln kann, die ein komplexes, verteiltes Backend erfordern.