06.04.2024 –, HS i2
Sprache: Deutsch
Hinter Web-Diensten steht häufig eine Zusammenstellung verschiedener Komponenten wie Webserver, Datenbanken oder selbst entwickelter Software. Der Vortrag zeigt wie das Backend der Videokonferenzsoftware OpenTalk in Integrationstests verschiedene Szenarien mit unterschliedlichen Container-Kompositionen implementiert.
Um ein Videokonferenzsystem auf Basis der Open-Source-Software OpenTalk zur Verfügung zu stellen, werden verschiedene Komponenten verwendet, die häufig in Containern laufen:
- Die "Kernkomponente" OpenTalk Controller (eine oder mehrere Instanzen davon)
- Das OpenTalk Web-Frontend
- Janus als WebRTC-Service
- PostgreSQL-Datenbankservice
- RabbitMQ zum Austausch von Nachrichten zwischen den Komponenten
- Redis zur Speicherung der laufenden Videokonferenzen
- OIDC-Provider, meist Keycloak
- OpenTalk SMTP-Mailer zum Versand von Einladungs-Mails
- OpenTalk Obelisk als Dial-In-Service
- OpenTalk Recorder zum Aufnehmen oder Streamen von Videokonferenzen
Für die eigenen Komponenten waren bereits in weiten Teilen Unit-Tests vorhanden, die von der CI ausgeführt werden. Integrationstests, welche das Backend auf die korrekte Abarbeitung von Web-Requests und Websocket-Verbindungen in verschiedenen Szenarien prüfen, fehlten jedoch weitgehend.
Beispiele für solche Szenarien sind:
- Simples Setup mit einem OpenTalk Controller und den Beispiel-Accounts Alice, Bob, Charlie, Dave und Erin
- Komplexeres Setup mit mehreren OpenTalk Controllern
- Ausfallsszenarien (z.B. nachstellen dass RabbitMQ während des Betriebs ausfällt und wieder verfügbar wird)
Der Vortrag skizziert, wie solch ein Integrationstest aussieht. Es wird gezeigt wie Szenarien aufgebaut sind und welche Methoden wir verwenden um den Code les- und wartbar zu halten. Ansätze die wir wieder verworfen oder ersetzt haben, werden kurz angeschnitten, und was wir daraus gelernt haben. Über Technische und organisatorische Hürden, die wir überwinden mussten oder noch überwinden müssen, wird klarerweise auch berichtet.
Die gezeigten Code-Beispiele sind zum Großteil in Rust, da der Backend-Teil von OpenTalk in Rust geschrieben ist. Wenngleich Kenntnis dieser Sprache von Vorteil ist, sind die Beispiele in einer Form gehalten, die auch ohne spezifisches Vorwissen gut genug verständlich sein sollte.
Softwareentwickler seit Anfang der 2000er Jahre. Habe 2015 angefangen in Rust zu entwickeln und bin noch immer in der Honeymoon-Phase, diese hat mit keiner der anderen Sprachen so lange angehalten wie mit Rust. Fan freier Software, Mitbegründer und -organisator der seit 2001 aktiven VALUG Voralpen Linux User Group in Oberösterreich. Masterstudium Embedded Systems Design an der FH Hagenberg 2009 absolviert, fühle mich aber eher auf der Softwareseite zu Hause als auf der Hardwareseite.
Ich arbeite seit Mitte 2022 als Freelancer, seit Herbst 2022 sehr engagiert für OpenTalk, wo ich nach ca. 9 Monaten die technische Leitung des Backend-Teams übernommen habe.