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.

IP »The Microservice 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 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).
Raum 1: 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.), siehe auch detaillierte Wegbeschreibung
Raum 2: 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. Der Haupteingang ist aber während üblicher Arbeitszeit offen. Kommen Sie hoch in den ersten Stock und klingeln Sie da. Rufen Sie bitte mich (+49 176 8072 2689) oder einen Kommilitonen per Handy an, wenn niemand aufmachen sollte), siehe auch detaillierte Wegbeschreibung
Videokonferenz-Link: https://th-koeln.zoom.us/j/4425088059?pwd=bxHOJB7D3pBHdTpruFHSdC1Y66e9Rr.1 (nur in Ausnahmefällen und wenn explizit vorher für den Tag kommuniziert)
Anmeldung zum Projekt
Bitte werden Sie Mitglied in diesem ILIAS/ILU-Kurs. Die Deadline ist 16.09.2022.
Maximale / minimale Teilnehmerzahl
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 beitreten unter https://discord.gg/YYNYb5whU8. Navigieren Sie zum Channel #rollenzuweisung und klicken Sie auf msd - ip. Die entsprechenden Kanäle zur Veranstaltung werden anschließend für Sie freigeschaltet.

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:

  • Qualität und Funktionsumfang des eigenen “Player-Services”
  • Code-Qualität und Einhaltung von allgemeinen Prinzipien (Clean Code, SOLID)
  • Testabdeckung
  • Aktive Teilnahme an Workshops, Code-Reviews etc.

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:

  • Warum möchten Sie an diesem Projekt teilnehmen?
  • Welche Fähigkeiten bringen Sie mit?
  • Welche Fähigkeiten oder Technologien möchten Sie in diesem Projekt erlernen/meistern?
  • Gibt Präferenzen für Teilteams (s.o., zwischen 1 und 3 Personen)? Sie können auch kurz darstellen, warum Sie ggfs. allein arbeiten möchten.

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:

  • <campusId>.mp4 oder
  • <campusId>.txt mit einem Link zu YouTube, Vimeo, ILIAS etc. (der Link muss ohne Zugangsprüfung oder mit einem TH-Köln-Login aufrufbar sein)

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. Der Haupteingang ist aber während üblicher Arbeitszeit offen. Kommen Sie hoch in den ersten Stock und klingeln Sie da. Rufen Sie bitte mich (+49 176 8072 2689) oder einen Kommilitonen per Handy an, wenn niemand aufmachen sollte), siehe auch detaillierte Wegbeschreibung.

Ziel des Tages

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

Agenda

  • 11:00 - 14:00:  Workshops
    • Infrastruktur & Ausblick
    • Architektur & Ausblick
    • Visionen, Service für Service (GameLog, Map, Generic Player)
    • Mittagspause zwischendurch
  • 14:00 - 14:30:  Organisatorisches
    • Teams
    • Benotung
    • Sprint Reviews / Planning

Learning Outcome

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

indem ich ...

  • in einem kleinen Team einen Service (Steuerung eines Robot-Schwarms) implementiere,
  • in der Business-Logik einen Steuerungs-Algorithmus für autonome Bewegung meinen Roboterschwarm umsetze,
  • dabei ein zentrales REST-API des "Gatekeeper"-Game-Service aufrufe, um Commands abzusetzen,
  • Events von RabbitMQ-Queues konsumiere, um Ergebnisse meiner Steuerbefehle nachzuhalten,
  • die korrekte Funktionsfähigkeit meines Services mit Unit- und Integrationstests absichere,
  • das Hosting meines Services mittels eines Helmcharts (nach Anleitung) konfiguriere,

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