Für die Projektdauer wurde ein Team von Frontend und Backend Developern sowie Testern unserem Kunden zur Verfügung gestellt. Die Videos werden zunächst vom Server in ein S3 Bucket geladen. Um die auf dem Server befindlichen Videos auch für den Browser optimiert verwenden zu können, erstellten wir einen Frame Worker, der aus den Videos Einzelbilder extrahiert und im Bucket speichert. Über eine SQS Queue wird der Frame Worker darüber informiert, dass neue Videos in den Bucket hochgeladen werden. Die SQS Queue gruppiert die Videos nach dem Prinzip „First in, First out“.
Nielsen entwickelte unabhängig von unserem Entwicklerteam eine GraphQL API, die für unsere Arbeit eine zentrale Schnittstelle darstellte. Zur Kommunikation mit der GraphQL API erstellten wir ein Backend For Frontend (BFF), die die ausgelesenen Daten für das GUI aufbereitet. Das BFF ist außerdem mit einem Frame Server verbunden, der wiederum eine Verbindung mit dem Bucket unterhält, auf dem die Videos gespeichert sind. Das BFF liest die im Frontend notwendigen Frames aus und übermittelt diese.
Um während der Entwicklung des Tools nicht auf Cloud-Dienste oder Deployments warten zu müssen, richteten wir neben dem S3 Bucket auch einen lokalen minIO Server ein. Die Entwickler können so per Konfiguration zwischen Cloud-basierten Diensten und lokalem Server nach Bedarf wechseln.
Für eine benutzerfreundliche Möglichkeit der Videoanalyse stellten wir Nielsen den Frame Slider zur Verfügung. Dieser stellt im Frontend das Video in einzelnen Frames dar, sodass nur ein kleiner Teil der Videodatei tatsächlich ausgelesen werden muss, um eine Funktionalität zu gewährleisten. Das Programm entwarfen wir in Canvas, bevor es in die Benutzeroberfläche integriert wurde. Diese wurde zudem um zahlreiche Funktionen erweitert, die beispielsweise die Konfiguration der Benutzeroberfläche betreffen.
Die Autorisierung von Benutzern für das Videoanalysetool findet über Okta per single sign on statt. Zusätzlich erstellten wir ein Grafana Dashboard, über das Daten und Logs visualisiert und überwacht werden können.