Modernisierung der Videobearbeitungsplattform

Modernisierung der Videobearbeitungsplattform

Itransition unterstützte den Kunden bei der Modernisierung seiner Legacy-Videobearbeitungsplattform, entwickelte eine ergänzende Anwendung zur Bildschirmaufzeichnung und verbesserte seine DevOps-Prozesse.

Herausforderung

Der Kunde ist ein australisches Startup-Unternehmen, das eine Videobearbeitungsplattform zur Rationalisierung der Videoproduktion anbietet. Das Unternehmen bietet Kamera-Kits an, mit denen die Nutzer alle Arten von Videoinhalten aufnehmen können, die sie dann auf die Videobearbeitungsplattform hochladen können, wo sie von den professionellen Editoren des Kunden bearbeitet werden. Die Plattform bietet auch eine Reihe von Add-Ons, mit denen die Nutzer den Videobearbeitungsprozess optimieren, Synchronsprecher engagieren, Animationen hinzufügen und vieles mehr.

Die Plattform ist abonnementbasiert, wobei die Nutzer je nach Abonnementplan Zugang zu verschiedenen Add-ons, zur Anzahl der Videos, die sie drehen können, zu speziellen Rabatten usw. erhalten. Als der Kunde die Plattform entwickelte, plante er, dass es sich bei den Add-ons um statische Einheiten handeln würde, so dass der ursprüngliche Code keine Erweiterungen zuließ. Doch dann änderte sich das Geschäftsmodell des Kunden, und er musste in der Lage sein, seine bestehenden Add-ons zu ändern. Außerdem wollten sie neue Add-ons entwickeln, um die Funktionalität der Plattform zu ergänzen.

Der Kunde verfügt über ein internes Team, das für die Produktentwicklung zuständig ist, aber es fehlte ihm an Fachwissen, um alle geplanten Änderungen durchzuführen. Daher beschloss das Unternehmen, ein engagiertes Entwicklungsteam bei Itransition einzurichten, nachdem es von einem unserer früheren Kunden empfohlen worden war.

Lösung

Anfänglich bestand das Itransition-Team aus zwei Entwicklern. Sie begannen mit der Analyse der bestehenden Plattform und der vom Kunden übermittelten internen Dokumentation. Danach behoben sie die entdeckten Fehler und führten kleinere Verbesserungen an der Plattform ein. Da der Kunde mit dem von uns erbrachten Service zufrieden war, beauftragte er unsere Spezialisten mit der Anpassung der Funktionalität von Add-Ons sowie mit der Entwicklung der Screencast-Lösung. Innerhalb von drei Monaten wuchs das Itransition-Team, das an dem Projekt arbeitete, auf zwölf Personen an.

Plattform-Erweiterungen

Die Hauptpriorität des Kunden bei diesem Projekt waren Verbesserungen an seinen bestehenden Add-ons. Unser Team hat den Code neu geschrieben und refaktorisiert und die Datenbanken der Add-ons erweitert. Diese Änderungen ermöglichten es dem Kunden, die Plattform mit neuen Add-ons zu erweitern und die bestehenden zu modifizieren.

The project submission confirmation screen

Wir haben auch die Funktion implementiert, die es den Redakteuren des Kunden ermöglicht, Änderungen an den von den Nutzern ausgewählten Add-ons vorzunehmen. So kann ein Redakteur zum Beispiel den Preis für ein Add-on ändern, wenn der Arbeitsumfang das Standardangebot übersteigt, oder andere Add-ons zum Abonnementplan des Nutzers hinzufügen, um ihm bei der Erreichung seiner Videoziele zu helfen.

The add-ons management screen

Die Plattform verfügt auch über eine Berichtsfunktion, die mit Add-ons verbunden ist und es dem Kunden ermöglicht, schnell die erforderlichen Daten über jeden einzelnen Nutzer zu erhalten. Wir konfigurierten diese Funktion, um sicherzustellen, dass sie die richtigen Informationen anzeigt, und implementierten die Funktionalität, die es dem Kunden ermöglicht, umfassende Nutzerberichte zu erstellen. Benutzer, die nur selten Add-ons anwenden, werden in dem Bericht automatisch als abwanderungsgefährdete Benutzer markiert.

A user report

Darüber hinaus hat das Itransition-Team den Benachrichtigungsprozess des Kunden verbessert, da sich viele seiner Redakteure über eine große Anzahl unnötiger Benachrichtigungen beschwert hatten. Unser Team überprüfte und änderte die Liste der Benachrichtigungsempfänger und schaffte einige Benachrichtigungsarten ab.

Entwicklung einer Screencast-Unteranwendung

Mit dem Ziel, sein Serviceangebot zu erweitern und die Nutzerbasis der Plattform zu vergrößern, beschloss der Kunde, eine neue abonnementbasierte Unteranwendung für Bildschirmaufnahmen zu entwickeln. Der CTO des Kunden untersuchte ähnliche Lösungen auf dem Markt und entwickelte einen PoC unter Verwendung des Electron-Frameworks. Ausgehend von diesem PoC entwickelte unser Team die vollwertige Lösung.

The screencast application

Itransition hat Screencast-Anwendungen für Mac und Windows entwickelt, mit denen Benutzer ihren Kamera- oder Desktop-Bildschirm aufzeichnen können. Mit der Lösung können Benutzer Demos, Vorlesungen, Tutorials, Schulungen und weitere Arten von Inhalten aufnehmen. Wir haben die App mit Funktionen ausgestattet, die es den Benutzern ermöglichen, direkt auf dem Bildschirm zu zeichnen, die Aufnahme anzuhalten und fortzusetzen und das Video zu teilen. Wir haben auch die Möglichkeit hinzugefügt, dem aufgenommenen Video Kommentare hinzuzufügen, damit die Zuschauer ihr Feedback hinterlassen können. Alle mit der Screencast-App erstellten Videos werden in der Videobearbeitungsplattform gespeichert.

Auf der Nutzerseite bietet die Lösung folgende Funktionen:

  • Menüleiste, die die Benutzerauthentifizierung, die Änderung von Einstellungen und die Änderung der Aufzeichnungsmodi ermöglicht.
  • Kamera, die das Kamerabild anzeigt und seine Konfiguration ermöglicht.
  • Steuerelemente, die es ermöglichen, die Aufnahme anzuhalten, neu zu starten und auszuschalten.
  • Schublade, die während der Aufnahme Zeichnungen und handschriftliche Notizen anzeigt.

Anwendung zum Signieren und Beglaubigen

Ab macOS 10.14.5 hat Apple die Signierung und notarielle Beglaubigung einer neuen Anwendung zur Pflicht gemacht, so dass wir dem Kunden bei der Bewältigung dieser Aufgaben geholfen haben.

Zunächst erwarben wir im Apple-Entwicklerkonto ein Anwendungszertifikat mit den erforderlichen Informationen für die Beglaubigung, einschließlich der Zertifikatsnummer, der Bundle-ID der Anwendung usw. Wie sich herausstellte, mussten wir zum Signieren der Anwendung Kamera- und Mikrofonberechtigungen sowie Berechtigungen für die Barrierefreiheit hinzufügen. Unser Team nutzte die native API von Electron, um Kamera- und Mikrofonberechtigungen zu erstellen, und verwendete NPM-Bibliotheken, um Zugriffsberechtigungen hinzuzufügen.

Wenn die Anwendung signiert war, wurde sie von der Electron-notarize-Bibliothek automatisch an die Apple-Server gesendet, um eine automatische Beglaubigung durchzuführen. Nachdem die Beglaubigung abgeschlossen war, heftete das System die Anwendung an.

Auch wenn Windows keine notarielle Beglaubigung der Anwendung erfordert, halfen wir dem Kunden dennoch bei der Signierung der Software.

Die AWS-basierte Microservices-Architektur

Wir bauen die Anwendungen mithilfe der Microservices-Architektur auf. Sie besteht aus über 20 separaten Modulen, die um bestimmte Funktionen herum aufgebaut sind und über REST-APIs miteinander interagieren. Wir haben Anwendungsmodule mit AWS-Services erstellt und bei der Anwendungsentwicklung die folgenden AWS-Tools eingesetzt:

  • Amazon ECS für die Containerverwaltung
  • Amazon CloudWatch und New Relic für die Leistungsüberwachung
  • Amazon RDS für die Verwaltung des Datenbankbetriebs in den USA, Australien, Europa und Asien
  • AWS CodePipeline für die Verwaltung von CI/CD-Aktivitäten
  • AWS CloudFormation und Terraform für die Beschreibung von App-Umgebungen und Netzwerkeinstellungen im Textformat
  • AWS Systems Manager für die Verwaltung der Infrastruktur über private und lokale Netzwerke

DevOps-Automatisierung

Wir haben DevOps- und CI/CD-Praktiken sowie den AWS CodePipeline-Service eingesetzt, um unsere Release-Pipelines zu automatisieren. Anfänglich dauerte der Build fünf bis sechs Minuten, so dass unser DevOps-Ingenieur den Build-Prozess neu konfigurierte, indem er Docker-Dateien umschrieb und Caching einrichtete. Auf diese Weise konnte Docker für jeden neuen Build eine Cache-Schicht verwenden, wodurch wir die Build-Zeit auf 1,5 Minuten reduzieren und eine Leistungssteigerung von 70 % erzielen konnten.

Technologien und Werkzeuge

Wir haben die Screencast-Anwendung mit dem Electron-Framework entwickelt, wobei wir Node.js für das Backend und React für das Frontend verwendet haben.

Um die Kommunikation zwischen Backend und Frontend sicherzustellen, haben wir das Publisher-Subscriber-Pattern in das Architekturdesign implementiert. Da die Plattform mehrere Funktionen umfasst, haben wir sie als separate Plugins implementiert. Jedes Plugin hat einen View-Controller, der für das Rendering seines Verhaltens verantwortlich ist. Die Kommunikation zwischen den verschiedenen Funktionen erfolgt über einen IPC-Dienst.

Die Hauptdatei der Plattform ist die Anwendung, die alle Ereignisse speichert, die von den Plugins abonniert werden können. Die Architektur der Lösung umfasst auch verschiedene Dienstleistungen, die die Geschäftslogik verwalten, z. B. die Benutzeranmeldung und die Bildschirmaufzeichnung.

Eine der größten Herausforderungen des Projekts bestand darin, eine Technologie zu finden, die eine nahtlose Aktualisierung der Anwendung in der Entwicklungs-, Staging- und Produktionsumgebung gewährleistet. Wir wählten die Nuts-Anwendung aufgrund ihrer Docker-Unterstützung und stellten sie als separaten Docker-Container in unserer Umgebung bereit, damit wir ihre Arbeit regulieren und überwachen können.

Für die Release-Automatisierung haben wir die native Electron AutoUpdater-Lösung für macOS und das electron-builder-Paket für Windows und GitHub-Releases eingesetzt. Wir haben jedoch festgestellt, dass der Nuts-Dienst in der Produktionsumgebung nicht immer die richtigen Anfragen sendet, weshalb wir die Logik seiner API angepasst haben, um einen ordnungsgemäßen Betrieb zu gewährleisten.

Nach der Anwendungsentwicklung haben wir Unit-Tests mit dem Jest-Testing-Framework und der React Testing Library durchgeführt.

Verfahren

Unser Team arbeitete in zweiwöchigen Sprints. Vor jedem Sprint gab es ein Treffen mit dem Projektmanager und dem Business Analysten von Itransition sowie dem Product Owner und dem Product Manager des Kunden, bei dem wir den Arbeitsumfang für den nächsten Sprint besprachen und die Aufgaben für unser Team planten.

Unser Projektmanager berichtete täglich per E-Mail über die Fortschritte unseres Teams und stellte am Ende jedes Sprints einen Sprint-Bericht zur Verfügung. Die Berichte enthielten Sprint-Ziele, abgeschlossene und nicht abgeschlossene Aufgaben usw. sowie Burndown- und Team-Velocity-Diagramme, Pläne für den nächsten Sprint und Vorhersagen zu möglichen Projektengpässen.

Ergebnisse

Das engagierte Team von Intransition unterstützte den Kunden bei der Modernisierung seiner alten Videobearbeitungsplattform, indem es die Architektur renovierte, um die Berichterstattung zu verbessern und die Modifizierung von Add-ons zu ermöglichen. Wir haben auch eine neue Unteranwendung von Grund auf entwickelt, mit der Benutzer eine Kamera oder einen Desktop-Bildschirm aufzeichnen und Werbe- und Schulungsmaterialien erstellen können. Außerdem haben wir die bestehenden DevOps-Prozesse verbessert und CI/CD-Praktiken implementiert, wodurch eine dreifache Verkürzung der Build-Zeit erreicht wurde.