Am Adventswochenende des 9. und 10. Dezembers 2023 fand im weihnachtlichen Marienberg der 26. Internationale Erzgebirgsschwimmcup (IESC) des ST Erzgebirge e.V. statt. Im Rahmen dieser Veranstaltung kam SwimResults das erste Mal in vollem Funktionsumfang zum Einsatz und feierte seine Premiere.

Vorbereitungen

In den Wochen vorm IESC wurde nun schon seit mehr als einem Jahr aktiv an SwimResults entwickelt und ein Großteil des Projektes war fertiggestellt. Auf Hochtouren arbeiteten wir daran, die letzten Fehler zu beheben, Verbesserungen vorzunehmen und das System auf dem für das Wettkampfwochenende erweiterten Cluster verfügbar zu machen.

Ein besonderes Augenmerk lag auf der Implementierung der Livestreaming-Schnittstellen. Zum Erzgebirgsschwimmcup kommt jedes Jahr ein umfangreiches System aus bis zu 3 Kameras zum Einsatz, welches vollständig autark und selbstständig den Livestream produziert. Aus Meldeergebnissen und vorherigen Läufen gezogene Daten helfen dabei, die Kamerawechsel dynamisch an die aktuellen Starts anzupassen, sodass ein hochwertiger Stream übertragen werden kann, ohne zusätzliche Helfer dafür einsetzen zu müssen. Neben diesen Melde- und Ergebniszeiten müssen auch die Einblendungen bei Anschlägen und am Ende des Laufes auf die neuen SwimResults-Schnittstellen umgeschrieben und angepasst werden.

Anders als gedacht

Eine weitere Herausforderung stellte auch die Schnittstelle zur Wettkampfsoftware EasyWk dar. Da deren Livetiming-Funktion essenziell für das Funktionieren der meisten SwimResults Features ist, muss die Übertragung dieser Daten jederzeit problemlos arbeiten. Während der Entwicklung von SwimResults hatten wir leider keinen Zugang zu EasyWk mit Livetiming-Funktion (dafür ist der Betrieb einer Zeitmessanlage notwendig), sodass wir bei der Schnittstellendefinition nur auf die PHP-Web-Skripte EasyWk's zurückgreifen konnten. Wir haben uns quasi anhand des Schlüssels überlegt, wie das Schloss aussieht und konnten das ganze bis zum Freitag vorm IESC, dem Tag des Aufbauens, nicht testen.

Nachdem Freitagabend die Anlage schließlich stand, fiel bei den Tests auf, dass die SwimResults-EasyWk-Schnittstelle nicht funktionierte. Dank nun vorhandener Aufzeichnungen darüber, wie EasyWk die Daten überträgt, konnten wir die folgende Nacht unter Hochdruck daran arbeiten, die aufgetretenen Probleme zu beheben.

Geglückter Start

Frühzeitig am Samstag in der Schwimmhalle angekommen machten wir uns erneut daran, die (hoffentlich) behobene Schnittstelle zu testen. Doch wieder traten weiter unvorhersehbare Probleme mit den Daten auf. Noch während der Wettkampf eröffnet wurde, versuchten wir mit erhöhtem Stresspegel die verbleibenden Fehler zu beheben und konnten circa 2 Minuten vor Beginn des ersten Starts schließlich die Funktionsfähigkeit diesen Teil des Systems festellen.

Nun hieß es zu hoffen, dass alle anderen Systeme, die während der letzten Wochen akribisch getestet und erprobt wurden, wie erwartet funktionieren. Dazu zählte der Import der Live-Daten in SwimResults, das eigens entwickelte Livetiming, die Umschaltfunktionen und Einblendungen des Livestreams, sowie die korrekte Darstellung der Informationen auf Vereins- und Sportlerseiten, in Melde- und Ergebnislisten und auf den Dashboards. Auch das Einlesen der Daten aus den Wettkampfprotokollen, die unmittelbar nach der Freigabe durch den Schiedsrichter zur Verfügung stehen, birgt zahlreiche Faktoren, die zu Fehlern führen können.

Ebenso erleichtert wie etwas erstaunt stellten wir schließlich fest, dass nahezu alle Systeme und Funktionen einwandfrei funktionierten. Einzig ein kleines Problem mit Zeitzonen hatte sich eingeschlichen, weshalb wir während der ersten Wettkämpfe eine Verspätung von 1h5min angezeigt bekamen, obwohl wir nur 5 Minuten hinter dem Zeitplan waren. Glücklicherweise ließ sich dieses Problem zeitnah beheben und der Rest der Veranstaltung konnte ohne Störungen über die Bühne gehen.

Performance und Ausfallsicherheit

Im Voraus die Anforderungen abzuschätzen, die wir an die Größe und Geschwindigkeit unserer Systeme stellen war schwierig. Jede Sekunde würde eine Vielzahl von Anfragen auf unsere Server prasseln, um Daten zu speichern und abzufragen. Um die Skalierbarkeit zu erhöhen, basiert SwimResults auf einer Microservice Architektur, bei welcher das Gesamtsystem in mehrere kleine Dienste, sogenannte Microservices unterteilt wird. So kann bei erhöhter Auslastung des Start-Services, welcher für Start, Ergebnisse und Läufe zuständig ist, dieser horizontal skaliert werden, indem man ihn vervielfältigt. Zudem haben wir für das Wettkampfwochenende zwei weitere Server gemietet, sodass alle unsere Webseiten und Microservices über mehrere Hardwareserver als Cluster betrieben werden können. Fällt einer der Server aus, können die anderen die Last übernehmen. Außerdem kann der Start-Service beispielsweise auf allen drei Servern laufen.

Die Services und Webseiten selbst waren während des Wettkampfes durchgehend erreichbar und kamen mit der Datenlast gut klar. Ein paar einbußen bei der Performance mussten die Nutzer dennoch erfahren, da die Datenbanken nicht ausreichend auf das Cluster skaliert waren. So konnte das Laden der Liste aller Wettkämpfe mit Verspätungsanzeige bis zu 5 Sekunden dauern. Im Nachgang an den Wettkampf haben wir daher begonnen, die Skalierbarkeit unserer Datenbanken zu erhöhen, um beim nächsten Wettkampf mit SwimResults-Einsatz gewappnet zu sein.

Im Sinne der Ausfallsicherheit hat unser System jedoch hervorragend gearbeitet und auch das zügige, unterbrechungsfreie Beheben von Problemen während des Wettkampfes funktionierte wie erwartet.

Nutzerzahlen und Feedback

Nicht nur aus Sicht der Funktionsfähigkeit war die Premiere von SwimResults ein Erfolg. Auch die Nutzerzahlen deuten einen gelungenen Start der Applikation an. An den beiden Wettkampftagen, sowie am Freitag davor konnten wir Zugriffe auf die Webanwendung von fast 500 verschiedenen Geräten verzeichnen. Die Zahl registrierter Nutzer stieg um circa 50 Nutzer an. Die Erstellung eines Benutzeraccounts ist jedoch für die Verwendung von SwimResults nicht erforderlich und bietet aktuell auch nur die Möglichkeit, Favoriten zu speichern und ist für einige Widgets auf dem Dashboard notwendig.

Im Gespräch mit Nutzern der Anwendung wurde viel Lob geäußert und die Anwendung kam sehr gut an. Auch eine Vielzahl von Verbesserungsvorschlägen und Ideen für neue Funktionen konnten wir sammeln und werden diese in den nächsten Wochen teilweise bereits umsetzen.

Wir bedanken uns bei allen, die mitgeholfen haben, diesen Erstauftritt so erfolgreich zu machen, für SwimResults geworben haben oder ihr Feedback kundgetan haben.