Engagiertes Team für ein Musikvertriebsunternehmen

Engagiertes Team für ein Musikvertriebsunternehmen

Itransition hat die Kernplattform von Ditto Music umgestaltet und verbessert, um dem Unternehmen zu helfen, mit der Konkurrenz Schritt zu halten und mehr Kreative zu gewinnen.

Kontext

Ditto Music ist ein Online-Musikvertriebsunternehmen mit Sitz in Großbritannien. Ziel des Unternehmens ist es, unabhängigen Künstlern bei der Veröffentlichung von Titeln in über 160 digitalen Musikgeschäften zu helfen, darunter Spotify, iTunes, Google Play, Apple Music usw. Ditto Music bietet über 200.000 unabhängigen Künstlern und Labels auf der ganzen Welt Dienstleistungen in den Bereichen Content-Vertrieb, Publishing, Plattenlabel und Künstlermanagement an und bietet einen Abonnementplan an, der es ihnen ermöglicht, ihre Titel bei Digital Service Providern (DSPs) zu veröffentlichen und gleichzeitig die Musikrechte und Einnahmen zu behalten.

Digital Service Provider (oder DSPs, die digitale Musikgeschäfte und Streaming-Dienste umfassen) werden sowohl bei Künstlern als auch bei Musikhörern immer beliebter. DSPs arbeiten jedoch nur selten mit unabhängigen Künstlern zusammen, da die Plattformen nicht in der Lage sind, die große Zahl der daraus resultierenden Verträge und Zahlungen zu bewältigen.

Aus diesem Grund ziehen es DSPs vor, Verträge mit Labels abzuschließen, die ihrerseits Vereinbarungen mit einzelnen Künstlern treffen. Einige Künstler verzichten auf einen Vertrag mit einem Label, da sie ihre Urheberrechte und Tantiemen vollständig behalten möchten. Um den Bedürfnissen unabhängiger Künstler gerecht zu werden, bietet Ditto Music einen Abonnementplan an, der es den Künstlern ermöglicht, ihre Tracks auf DSPs zu veröffentlichen und gleichzeitig ihre Musikrechte und Einnahmen zu behalten.

Ditto Music verfügte über eine voll funktionsfähige Lösung, die dem Endbenutzer Funktionen über die Website bot. Die Plattform mit den vorhandenen Funktionen war größtenteils ein Legacy-Monolith, wobei ein Teil der Lösung von früheren Anbietern auf AWS als Microservices implementiert wurde. Um mit der Konkurrenz mithalten zu können und mehr Kreative für ihre Plattform zu gewinnen, wollte Ditto Music seine Lösung modernisieren und suchte nach einem Allround-Dienstleister mit Erfahrung in AWS-Beratung, um seinen aktuellen Anbieter zu ersetzen. Die Anforderungen an den neuen Dienstleister lauteten:

  • Entwicklung neuer wichtiger Funktionen für Endbenutzer und Administratoren
  • Neue Funktionen als AWS-Microservices realisieren und den zugehörigen monolithischen Legacy-Code migrieren
  • Ersetzen der bestehenden Website durch eine neue Website, die den aktuellen Geschäftsanforderungen besser entspricht
  • Bieten Sie QA-Services an, um sowohl neue als auch bereits vorhandene Funktionen zu testen
  • Einführung von DevOps-Verfahren
  • Behebung von Legacy-Code und Bereitstellung von L1-, L2- und L3-Support-Services zur Stabilisierung der Plattform und Verbesserung ihrer Leistung

Ditto Music beauftragte Itransition aufgrund unserer umfangreichen Erfahrung im Medien- und Unterhaltungsbereich und unseres Status als Advanced Amazon Consulting Partner.

Lösung

Um den Anforderungen von Ditto Music in vollem Umfang gerecht zu werden, stellten wir ein eigenes Team zusammen, das sich um die Entwicklung neuer Funktionen und die Verbesserung des bestehenden Systems kümmerte. Unser Team ersetzte die alte Website durch eine neue und erstellte ein neues Admin-Panel. Für beide entwickelten wir wichtige Funktionen, die den Umfang der von Ditto Music angebotenen Dienstleistungen erheblich veränderten und die Leistung der Plattform verbesserten. Darüber hinaus haben wir QA-Dienstleistungen erbracht, DevOps-Infrastrukturpraktiken eingeführt, die bestehenden L1-, L2- und L3-Support-Workflows verbessert und ein Plattformüberwachungssystem entwickelt.

Endbenutzer-Funktionalität

Künstler müssen eine Abonnementgebühr entrichten, um auf die unten aufgeführten Funktionen zuzugreifen und ihre Tracks auf DSPs hochzuladen und zu veröffentlichen. Fortgeschrittene Nutzer können mehrere Künstler und deren Tracks verwalten und Compilations erstellen, die im Wesentlichen als unabhängige Musiklabels fungieren.

Die Lösung bietet Endnutzern die folgenden Funktionen:

  • Release Builder zur Erstellung einer Veröffentlichung durch Hochladen von Tracks und Bereitstellung aller erforderlichen Informationen und Copyright-Dokumente.
  • Video-Release-Builder, um Vevo-Kanäle von Künstlern einzurichten, indem relevante Informationen bereitgestellt, Inhalte hochgeladen und Präferenzen für die Videoverbreitung ausgewählt werden.
  • Tantiemenberichte für den Zugriff auf detaillierte Statistiken zu Tantiemen mit umfangreichen Datenfiltern.
  • Auszahlung von Tantiemen, um Tantiemen durch Überprüfung der Identität abzuheben und Auszahlungen durch die Integration von MetaMap zu ermöglichen, die den Verlauf der Auszahlungen visualisiert.
  • Analytics, um auf Statistiken zu Live-Verkäufen, Downloads und Streaming-Daten zuzugreifen und sie nach Künstler, Label, Veröffentlichung, digitalem Store, Land oder Titel zu filtern.
  • Promotion zur Optimierung von Marketingkampagnen durch den Kauf eines Pakets von Musik-Promotion-Services.
  • Tantiemenaufteilung zur Aufteilung der Tantiemen auf die ausgewählten Mitwirkenden.
  • Musikveröffentlichung, um Tantiemen für Kompositionen zu erhalten, die gesendet, live gespielt oder in Filmen usw. verwendet werden.
Selecting DSPs for release distribution

Teilung der Lizenzgebühren

Der Kunde wollte schon lange eine Funktion implementieren, die es Mitwirkenden ermöglicht, die Tantiemen zu teilen. Sie wurde auch von Künstlern und Mitwirkenden stark nachgefragt, da Musikveröffentlichungen oft Beiträge von mehreren Urhebern erfordern.

Ditto Music trat mit einer Geschäftsidee an Itransition heran, aber die Anforderungen und der genaue Arbeitsablauf waren noch nicht festgelegt. Der Product Owner/Business Analyst (PO/BA) auf der Seite des Kunden schrieb die Anforderungen. Unser engagiertes Team arbeitete eng mit ihnen zusammen, analysierte und testete die Anforderungen gründlich und bot mögliche Lösungen für die identifizierten Probleme an.

Assigning co-creators to a release

Wir haben die Funktionalität entwickelt und über die Website verfügbar gemacht. Um die Gewinne mit ihren Mitarbeitern zu teilen, können die Nutzer sie auf die Plattform einladen, indem sie die Namen und E-Mail-Adressen der Mitarbeiter eingeben. Anschließend müssen sich die Mitarbeiter auf der Plattform registrieren und den ihnen zugewiesenen Prozentsatz an Tantiemen entweder bestätigen oder ablehnen.

Bei der Entwicklung von Royalty Splits haben wir darauf geachtet, dass der Prozess der Gewinnaufteilung vollkommen transparent und überprüfbar ist. Um Administratoren und Endbenutzern genaue und aktuelle Informationen über die Aufteilung der Zahlungen zur Verfügung zu stellen, haben wir die Funktionalität in Form von drei voneinander abhängigen Microservices realisiert, die die Tantiemen genau berechnen und auf die Mitarbeiter verteilen.

Die Funktion hat den ohnehin schon komplizierten Prozess der Verwaltung von Verkaufs- und Benutzerkontodaten neu gestaltet, da das System nun das Geld genau auf mehrere Mitarbeiter verteilt, anstatt alle Tantiemen einem Trackeigentümer zuzuweisen.

Die Implementierung von Royalty Splits wurde zusätzlich dadurch erschwert, dass gleichzeitig neue Funktionen entwickelt wurden, die sich auf die Benutzerkonten auswirken. Zum Beispiel wollte Ditto Music eine neue Provision auf der Plattform einführen, was den Ablauf der Tantiemenaufteilung erheblich veränderte. Wir implementierten die Möglichkeit, eine Provision für eine bestimmte Veröffentlichung zusätzlich zu den bestehenden Provisionen für das gesamte Benutzerkonto oder für Vorauszahlungen zu vergeben. Um die Provisionen mit den Honoraraufteilungen in Einklang zu bringen, haben wir den Auslöser für die automatische Provisionserfassung von der Auszahlungsanforderung durch den Benutzer auf den Zeitpunkt der ersten Erfassung der Verkaufsdaten im System verlegt.

Musikverlag

Wir haben die Funktion "Musikveröffentlichung" entwickelt, die Komponisten und Songwritern eine weitere Möglichkeit bietet, Tantiemen für ihre Musik zu erhalten. So können Autoren Tantiemen für ihre Kompositionen beanspruchen, die im Rundfunk gesendet, live gespielt oder in Filmen, Videospielen, Fernsehsendungen usw. verwendet werden. Mit der Musikveröffentlichungsfunktion dient Ditto Music als Vermittler zwischen Autoren (Urheberrechtsinhabern) und einer Vielzahl von Aufführungsrechteorganisationen (PROs) und Musikrechteorganisationen (MROs), die Tantiemen von Parteien einholen, die urheberrechtlich geschützte Inhalte für die kommerzielle Nutzung verwenden möchten.

Mit der Einführung von Music Publishing haben wir Songwritern geholfen, die Zusammenarbeit mit PROs und MROs deutlich zu vereinfachen, da sie ihre Werke jetzt nur noch auf der Plattform registrieren müssen. Aus den Titeln, die die Qualitätsprüfung durch die Administratoren von Ditto Music bestanden haben, können die Autoren einen Titel auswählen, um ihn zu registrieren und Tantiemen für die Veröffentlichung zu beanspruchen.

Die Funktion erlaubt es Musikautoren auch, Co-Autoren hinzuzufügen, ähnlich wie bei der Funktion "Royalty Splits". Die Ditto Music-Administratoren müssen den Antrag prüfen, und nach ihrer Genehmigung kann die Veröffentlichung bei PROs und MROs durch die Integration mit Iris, einem Drittanbieterdienst, der Daten über die Songwriter und Tracks sammelt und sendet, registriert werden.

Work status overview in Music publishing

Damit der Kunde die Musikveröffentlichungsfunktion schneller auf den Markt bringen kann, hat Itransition sie zunächst mit einer manuellen Registrierung und Integration mit Iris freigegeben und nach einiger Zeit eine API-Integration mit Iris eingerichtet, um den Prozess zu automatisieren.

Der Kunde wollte ursprünglich, dass Admins die hochgeladenen Tracks manuell im System registrieren. Zunächst haben wir die manuelle Registrierung implementiert, aber mit der Zeit hat Ditto Music beschlossen, eine automatische Registrierung und Integration mit Iris zu entwickeln, um die Geschäftsprozesse zu vereinfachen und zu beschleunigen. Zu diesem Zeitpunkt verfügte Iris jedoch noch nicht über eine geeignete API. Das Unternehmen erklärte sich jedoch bereit, die vorhandene API an die erforderlichen Funktionen anzupassen, was die Zusammenarbeit und Unterstützung von Ditto Music erforderte, um die API besser an die Bedürfnisse des Projekts anzupassen.

Itransition arbeitete sowohl mit Ditto Music als auch mit Iris zusammen und unterstützte die Teams bei der Anpassung der API. Als die neue API fertig war, integrierte unser Team sie in die Plattform und automatisierte den Registrierungsprozess vollständig, was den Verwaltungsaufwand reduzierte. Die Integration hilft, die Kundendatenbank effizient mit Iris zusammenzuführen, was zu einem vereinfachten und effizienteren Arbeitsablauf führt.

Die Musikveröffentlichungsfunktion brachte große Veränderungen im Verkaufsablauf mit sich, da sie eng mit den neuen Abonnements und Provisionen verknüpft war, die zu diesem Zeitpunkt auf der Plattform eingeführt wurden. Aus diesem Grund haben wir die Funktion als zusätzliches Abonnement realisiert, das verfügbar ist, sobald der Nutzer das allgemeine Abonnement aktiviert hat. Außerdem haben wir die Lösung in die Lage versetzt, Plattformprovisionen (einen Prozentsatz der Tantiemen) für Ditto Music von den Musikautoren einzuziehen.

Admin-Panel

Die Initiative zur Entwicklung des neuen Admin-Panels ging von unserem Team aus, da es dem Wunsch des Kunden entsprach, seine Vertriebsmanagement-Funktionalität zu erweitern und komplexere Finanzoperationen zu ermöglichen. Außerdem wollte der Kunde mehr Benutzerrollen mit verschiedenen Berechtigungen und Zugriffsrechten entwickeln. Da das Admin-Panel die geplanten Änderungen nicht unterstützen konnte, schlugen wir vor, ein neues Admin-Panel auf dem Symphony-Framework außerhalb des Altsystems zu erstellen.

Permissions and accesses management

Bei der Entwicklung des neuen Admin-Panels haben wir das System der Benutzerrollen und -berechtigungen erweitert, so dass nur ausgewählte Admins sensible Aufgaben der Verkaufs- und Bilanzverwaltung durchführen können. Außerdem ermöglichten wir es Ditto Music, den Funktionsumfang für bestimmte Admins genau zu konfigurieren.

Um die Endbenutzerfunktionalität zu verwalten und zu unterstützen, verfügt das Admin-Dashboard über die folgenden Funktionen:

  • Datenzuordnung für die automatische Verarbeitung von Rohdaten, um sicherzustellen, dass sie gemäß der Ditto Music-Vorlage formatiert sind.
  • Rollback des importierten Verkaufsstapels für die Extraktion der importierten Verkaufsberichte über die Tantiemen.
  • Verschieben von Veröffentlichungen für die Übertragung von Veröffentlichungen zwischen den Konten der Endbenutzer.
  • Verkaufsneuzuordnung zum Verschieben von Lizenzgebühren und Verkaufsdatensätzen auf das Konto eines anderen Benutzers.
  • Verkäufe einfrieren/aufheben, um Endnutzer bei Problemen mit ihren Konten vorübergehend daran zu hindern, Einnahmen von ihren Konten abzuheben.

Datenzuordnung

Die Data-Mapping-Funktionalität ermöglicht es Administratoren, automatisch Roh-Verkaufsberichte zu bearbeiten, bei denen es sich um CSV-Dateien mit detaillierten Auflistungen der Tantiemen handelt, die jeder Künstler pro Titel/Veröffentlichung verdient hat. Sie werden zunächst von DSPs an Ditto Music gesendet, wenn DSPs das Geld, das sie mit Veröffentlichungen verdienen, durch Banktransaktionen an die Plattform überweisen.

Da jeder DSP eigene Vorlagen für Verkaufsberichte hat, mussten die Administratoren die DSP-Verkaufsberichte manuell bearbeiten, um sie an die Ditto Music-Vorlagen anzupassen. Außerdem mussten die Administratoren eigene Wechselkurse anwenden und die Tantiemen neu berechnen, um sie von USD/EUR in GBP umzurechnen. Der bestehende Prozess war zeitaufwändig, führte zu Fehlern und erforderte viel manuelle Arbeit, so dass der Kunde ihn automatisieren wollte.

Mit der implementierten Datenzuordnungsfunktion müssen die Administratoren die Dateien in das System hochladen und die anfänglichen Informationen eingeben, indem sie die Teile der Tabelle in den Rohumsatzberichten auswählen, die als Überschriften und der gewünschte DSP identifiziert werden müssen. Wir haben auch dafür gesorgt, dass die anfänglichen Informationen automatisch ausgefüllt oder vordefiniert werden können, wenn der Dateiname den DSP-Namen enthält. Nach der Eingabe des DSP und der Kopfzeilen aktivieren die Administratoren die Parsing-Funktion, die Text und Zahlen aus den Verkaufsdateien erkennt. Wenn das System die Berichte analysiert hat, fordert die Datenzuordnungsfunktion die Administratoren auf, die analysierten Kopfzeilen der Rohberichte mit den entsprechenden Kopfzeilen in der Ditto Music-Vorlage abzugleichen, damit das System die Daten in die entsprechenden Abschnitte der Vorlage migrieren kann. Unser Team hat auch das Währungsfeld erstellt, in dem Administratoren Wechselkurse eingeben können, damit das System die Tantiemen von USD/EUR in GBP umrechnen kann.

Matching headers and adding currencies

Wenn das System alle Daten aus den Rohumsatzberichten in die Vorlage übertragen hat, validieren die Administratoren die verarbeiteten Informationen, um vor dem Import alle Probleme zu beseitigen. Um den Validierungsprozess zu beschleunigen, hat unser engagiertes Team die Zusammenfassungsfunktion implementiert, die die wichtigsten Automatisierungsergebnisse übersichtlich darstellt, einschließlich des Importverlaufs, der Gesamtsumme der geparsten Einnahmen und der Währungsumrechnungsergebnisse. Wir haben auch dafür gesorgt, dass das System die Benutzer über die nicht verarbeiteten Daten benachrichtigt und fehlerhafte Zeilen anzeigt, damit die Administratoren die Fehler in den Rohberichten korrigieren und sie erneut zur Verarbeitung einreichen können.

Durch die Datenzuordnungsfunktionalität konnte Ditto Music den manuellen Aufwand für die Verarbeitung von Verkaufsberichten reduzieren, da die Administratoren jetzt nur noch die wichtigsten Verarbeitungsschritte bestätigen und überprüfen müssen.

Rollback der importierten Verkaufsberichte

Nachdem die Umsatzmeldungen über die Data-Mapping-Funktionalität verarbeitet wurden, importieren Administratoren sie in die Plattform, um die Tantiemen der Autoren und Mitschöpfer zuzuweisen. Manchmal enthielten die ursprünglichen Daten, die von den DSPs in den Berichten übermittelt wurden, jedoch zu viele ungenaue Datenprotokolle. Außerdem konnte dieselbe Datei fälschlicherweise zweimal hochgeladen werden. Um das Problem zu lösen, mussten die Administratoren die Verkaufsberichte manuell extrahieren, was ineffizient und kontraproduktiv war. Unser engagiertes Team entwickelte eine Funktion, mit der Administratoren große Stapel von Verkaufsberichten automatisch aus dem System löschen oder zurücksetzen können.

Activating the rollback feature through accessing sales reports batches

Itransition stellte sicher, dass die Berichte extrahiert werden, ohne das System zu überlasten, da einige von ihnen mehr als 500k Einträge enthalten können. Wir haben auch eine einmalige Verarbeitung vorgesehen, um die Stabilität der Lösung zu erhöhen.

Umzug der Freigabe

Vor der Implementierung der Funktion waren Freigaben mit dem Endbenutzerkonto verknüpft, auf dem sie zuerst registriert worden waren. Es kam jedoch häufig vor, dass Freigaben aufgrund eines Eigentümerwechsels oder ähnlicher Situationen auf das Konto eines anderen Benutzers übertragen werden mussten. Außerdem ermöglichten bestimmte Abonnementpläne den Endnutzern die Veröffentlichung von Titeln für mehrere Künstler, die als unabhängiges Musiklabel tätig sind. In diesem Fall besteht die Notwendigkeit, die Veröffentlichungen zu verschieben, wenn einer der Künstler die Beziehung zu dem Label beenden möchte, um sein eigenes Konto einzurichten und seine Veröffentlichungen von nun an individuell zu veröffentlichen.

Itransition hat die Funktionalität entwickelt, die es Admins ermöglicht, Veröffentlichungen zwischen Accounts zu verschieben. Um die Kontinuität des Prozesses zu gewährleisten, haben wir sichergestellt, dass Tantiemen, die durch die übertragene Veröffentlichung verdient wurden, auch auf das Zielkonto umverteilt werden. Der gesamte Kontostand wird ebenfalls auf das neue Konto übertragen, wobei das Protokoll aller Lizenzeinnahmen und Abhebungen erhalten bleibt. Wir haben auch dafür gesorgt, dass die Administratoren die Freigabe bei Bedarf ohne die Lizenzgebühren verschieben können, um den Umfang der möglichen Anwendungsszenarien maximal abzudecken.

Choosing source and target accounts

Beim Verschieben einer Version wählen die Administratoren zunächst die zu übertragende Version aus und geben die E-Mail des Zielbenutzers ein. In diesem Stadium entscheiden sie auch, ob die Freigabeergebnisse ebenfalls verschoben werden müssen. Vor der Übertragung führt das System eine Reihe von Prüfungen durch, um sicherzustellen, dass die Freigabe-, Ziel- und Quellkonten alle Anforderungen erfüllen. Die Musikindustrie verwendet beispielsweise ISRC-Codes zur eindeutigen Identifizierung von Musikveröffentlichungen. Daher müssen wir beim Verschieben der Veröffentlichung sicherstellen, dass der ISRC-Code der zu übertragenden Veröffentlichung auch den Besitzer wechselt und nun dem Zielbenutzer gehört. Nachdem sichergestellt wurde, dass die Anforderungen für die Übertragung erfüllt sind, bestätigt das System entweder, dass die Übertragung erfolgreich war, oder zeigt die Art des Fehlers an.

Verkaufsneuzuordnung

Manchmal enthalten die Verkaufsberichte, die DSPs an die Plattform senden, fehlerhafte Protokolle, die die Tantiemen den falschen Künstlern zuordnen. Um den Fehler zu korrigieren und sicherzustellen, dass der Eigentümer der Veröffentlichung die Tantiemen erhält, mussten die Administratoren den benötigten Verkaufsbericht manuell im System suchen, den Eintrag löschen, die Tantiemen neu berechnen und den Bericht einem anderen Benutzer zuweisen. Unser engagiertes Team hat eine Funktion implementiert, die es den Administratoren ermöglicht, Tantiemen und Verkaufsberichte automatisch einem anderen Endbenutzerkonto zuzuweisen.

Searching for sales records with filters

Um Verkaufsdatensätze neu zuzuordnen, müssen Administratoren zunächst die erforderlichen Verkaufseinträge finden und die Parameter für die Neuzuordnung ausfüllen, indem sie den Zeitraum sowie die Quell- und Zielfreigaben auswählen. Ähnlich wie bei der Freigabeverschiebung führt das System vor der Neuzuordnung von Umsätzen Prüfungen durch, um sicherzustellen, dass sich die Neuzuordnung von Umsätzen nahtlos in andere Arbeitsabläufe und Systemanforderungen einfügt.

Verkäufe einfrieren/freigeben

Unser Kunde erkannte die Notwendigkeit, zusätzliche Funktionen für Ditto Music-Administratoren bereitzustellen, um die Verfügbarkeit von Tantiemen für bestimmte Benutzer zu verwalten. Unser Team schlug vor, die Funktion als Teil des neuen Admin-Panels zu implementieren, da die Architektur des alten Panels für die Hinzufügung neuer Funktionen zur Verkaufsmanipulation ungeeignet ist.

Unser engagiertes Team hat die Funktion "Freeze/unfreeze sales" entwickelt, mit der Administratoren verhindern können, dass Benutzer das verdiente Geld aus dem System abheben, falls es Probleme mit ihren Konten gibt. Die Funktion kommt zum Einsatz, wenn der Nutzer beispielsweise nicht den erforderlichen Urheberrechtsnachweis erbracht hat oder die Administratoren bei der Prüfung einer Veröffentlichung eine Urheberrechtsverletzung vermuten. Sobald die Probleme gelöst sind, können die Admins die Tantiemen "aufheben", so dass die Nutzer ihre Tantiemen abholen können.

Mithilfe eines von uns für das neue Admin-Panel erstellten Zugangssystems können Ditto Music-Manager und -Admins mühelos auf die Informationen über den Initiator des Geldeinfrierens und die Höhe des blockierten Geldes zugreifen.

Freezing royalties for a release

Website-Entwicklung

Auf der Grundlage von Mockups des Kunden entwickelten wir eine neue Website für Ditto Music, die auf die neuen Marketingbedürfnisse des Kunden zugeschnitten ist und vielfältige Endbenutzerfunktionen bietet.

Website landing page

Um eine einfache Verwaltung der Inhalte auf der Website zu ermöglichen, haben wir das Headless GraphCMS eingesetzt, das als reines Backend-Content-Management-System fungiert. Es ermöglicht Teams die Verwendung eines einzigen Inhaltsspeichers zur Bereitstellung von Inhalten für eine Vielzahl von Frontend-Plattformen (Websites, Apps usw.). Anstatt Inhalte als kompiliertes HTML zu liefern, verwendet Headless CMS eine Vielzahl von APIs, die ein nahtloses Omnichannel-Erlebnis gewährleisten. Itransition schlug das Headless CMS vor, da es dazu beiträgt, Einschränkungen für potenzielle Inhalte zu beseitigen, die durch Gerätetypen, Vorlagen oder den gewählten Tech-Stack vorgegeben sind, so dass sich Content-Teams auf die Erstellung effektiver Materialien konzentrieren können.

Ditto Music wendet sich an ein weltweites Publikum. Deshalb haben wir dafür gesorgt, dass sich die Inhalte nahtlos an das integrierte GraphCMS anpassen, das eine einfache Verwaltung der Lokalisierung ermöglicht und drei Sprachen unterstützt, wobei die Administratoren eine Standard- und zwei sekundäre Sprachen zuweisen können. Unser Team hat auch dafür gesorgt, dass das CMS, wenn es bestimmte Inhalte nicht in der gewünschten Sprache findet, automatisch dieselben Inhalte in einer der verfügbaren Sprachen abruft, beginnend mit der Standardsprache. Darüber hinaus haben wir die Verfolgung der IP-Adressen der Besucher implementiert, um ihren geografischen Standort zu ermitteln und die für die Nutzer relevantesten Inhalte und Medien anzuzeigen.

GraphCMS content page overview

QS

Seit Beginn des Projekts hat unser engagiertes Team die neuen Funktionen gründlich getestet und gleichzeitig den alten Code auf seine Übereinstimmung mit den aktuellen Geschäftszielen überprüft.

Unser QA-Team bietet den gesamten Umfang der Tests für das Projekt, einschließlich:

  • Anforderungsprüfung
  • Abnahme und Testen neuer Funktionen
  • Funktionstests
  • Lokalisierungstests
  • Integrationstests
  • Regressionstests

Die meisten der genannten Testarten wurden sowohl für das Backend als auch für das Frontend durchgeführt, wobei Lokalisierungs- und Integrationstests nur dem Frontend vorbehalten waren.

Unser Team setzte eine Kombination aus manuellen und automatisierten Tests ein und verwendete die folgenden Tools:

  • Filezilla zum Testen der Vertriebsimportflüsse in Datenbanken
  • DevTools für Frontend-Tests
  • Kibana für effiziente Protokollsuche, Datenanalyse und Visualisierung
  • Postman für das Testen von APIs

Um eine Vorschau auf die Inhalte zu ermöglichen, verfügte unser Team über eine passwortgeschützte Staging-Umgebung, die den Mitarbeitern von Ditto Music während des Testzeitraums Zugang zu den kommenden Funktionen und inhaltlichen Aktualisierungen bot.

DevOps

Als wir mit der Arbeit an dem Projekt begannen, stellten wir fest, dass der Kunde eine Kombination aus manuellem und automatischem Deployment (GoCD, Bamboo) verwendete, aber der bestehende Ansatz konnte keine reibungslose und unterbrechungsfreie Codebereitstellung gewährleisten. Außerdem verfügte Ditto Music über ein unterentwickeltes Überwachungs- und Warnsystem, was zu einer geringeren Stabilität der Lösung und einer schlechten Transparenz des Systemzustands führte. Auf der Grundlage der Projektanforderungen erstellten wir ein AWS Cloudwatch-System zur Überwachung, Protokollierung und Verwaltung von Warnmeldungen für alle wichtigen Systemteile.

Da neue Funktionen und ein Teil der älteren Features auf AWS als Microservices realisiert wurden, wendete unser DevOps-Ingenieur kontinuierliche Integrations- und Bereitstellungspraktiken (CI/CD) über eine Kombination aus AWS und den Bitbucket-Pipelines an, was zu einer höheren Veröffentlichungsfrequenz und -qualität führte. Itransition nutzte Bitbucket, da die Repositories bereits dort gehostet wurden, was uns half, den Bereitstellungsprozess zu vereinfachen. Unser Team richtete außerdem eine Integration zwischen Bitbucket und Jira Cloud ein, die eine effiziente Visualisierung des Code- und Bereitstellungsstatus ermöglicht. Die Integration bietet Dashboards mit Übersichten über Code-Commits, Bereitstellungsdaten und den Entwicklungsstatus.

Die aktuelle Deployment-Pipeline sieht vor, dass das Entwicklungsteam die Commits in das Repository schiebt und damit den CI/CD-Prozess zum Erstellen und Testen des Codes aktiviert, damit der Code anschließend in die Produktionsumgebung bereitgestellt werden kann.

Unterstützung und Fehlerbehebung

Unser Team bietet derzeit 24/7 L1-Support per Telefon und E-Mail und kann im Notfall sofort eingreifen. Itransition bietet auch L2 und L3 Support-Services an, um systemische Probleme zu lösen.

Um sicherzustellen, dass eine große Anzahl eingehender Support-Tickets die Entwicklung neuer Funktionen nicht verzögert, hat unser Team mehrere Schritte unternommen. Da viele der gemeldeten Fehler den täglichen Geschäftsbetrieb störten, analysierten wir zunächst eingehend die Hauptgründe für die voneinander abhängigen oder wiederkehrenden Fehler und erstellten einen umfassenden Überblick über die schwachen Teile des Systems. Außerdem erstellten wir ein umfangreiches Fehlerhandbuch für die Mitarbeiter des Kunden, um eine falsche Priorisierung durch die Meldenden zu verhindern. Darüber hinaus erstellte unser Team ein detailliertes Handbuch für den L1-Support, in dem die Regeln für die Zuweisung der richtigen Ticketpriorität erläutert werden.

Um unsere Arbeit besser auf die geschäftlichen Anforderungen des Kunden abzustimmen, schlugen wir vor, einen Filter für die eingehenden Tickets zu implementieren. Wenn ein Mitglied des Ditto-Music-Teams ein Ticket in Jira erstellt, wird es von einem Produktmanager und einem Entwicklungsmanager auf der Kundenseite geprüft und die Priorität festgelegt. Wenn es eine hohe Priorität hat, veröffentlicht das System es in Slack und zieht automatisch die relevanten Fehlerinformationen aus dem System.

Technologien und Werkzeuge

Der Großteil des monolithischen Legacy-Backend-Codes wurde mit CakePHP erstellt, für neuere Teile des Codes wurde Symfony verwendet. Die bestehenden Microservices wurden mit Laravel entwickelt.

Das Team von Intranistion verwendete Symfony, um das neue Admin-Panel und die Microservices für die Lizenzgebührenaufteilung zu entwickeln. Wir verwendeten Elasticsearch für die Speicherung von Verkaufsberichten und Protokollen und Redis für die Speicherung von Sitzungsdaten. Für die verkaufsbezogene Funktionalität mit Umsatzstatistiken, Ledger und Datenmapping haben wir .NET verwendet. Da die Lösung CSV- und XLSX-Dateien verarbeiten soll, verwendete Itransition die Bibliotheken CsvHelper und ExcelDataReader. Für das Datenmapping nutzte Itransition außerdem Entity Framework Core als Hauptframework und MySQL als Datenbank.

Die Website ist auf der Jamstack-Architektur aufgebaut, mit Gridsome als Vue.js-basiertem Framework. GraphCMS bietet Content-Management-Funktionen, und GraphQL wird zum Abrufen von Inhalten verwendet. Die Lösung verwendet das Vue.js JavaScript-Framework für die Frontend-Teile von Release Builder, Royalty Splits und Music Publishing, wobei die React.js JavaScript-Bibliothek für die UI des Features verwendet wird.

Microservices

In Anbetracht der Tatsache, dass eines der Hauptziele des Kunden darin bestand, den Übergang von monolithischem Code fortzusetzen, entwickelte unser engagiertes Team Microservices für neue Funktionen und verschob gleichzeitig den zugehörigen monolithischen Legacy-Code, wenn dieser mit den aktuellen Geschäftszielen übereinstimmte.

Wir migrierten die vertriebs- und lizenzgebührenbezogenen Funktionen von monolithischem Code zu vier voneinander abhängigen Microservices:

  • Verkaufsimport - ein PHP-Service, der die eingehenden Verkaufsdaten von DSPs aggregiert, die Gewinne einem Benutzerkonto des Trackeigentümers zuweist und eine API für die Neuzuweisung von Verkäufen bereitstellt.
  • Verkaufsaufteilung - ein PHP-Service, der Plattformgebühren und Provisionen verwaltet, Provisionen abzieht und einen prozentualen Anteil der Verkäufe vom Eigentümer der Veröffentlichung an die Mitgestalter umverteilt, falls die Funktion "Royalty Splits" aktiviert wurde.
  • Ledger - ein .NET-Dienst, der die Kontostände der Endbenutzer berechnet und die Kontostandshistorie führt.
  • Data Mapping- ein ASP.NET-Service, der Rohdaten aus dem Verkauf verarbeitet, um sicherzustellen, dass sie in die Plattform importiert werden können.

Die Verlagerung der Funktionalität auf Microservices ermöglichte es uns, modernere und flexiblere Technologien und Frameworks zu verwenden. Da beide Admin-Panels dieselbe Datenbank, aber unterschiedliche Domains verwenden, haben wir API Platform im neuen Admin-Panel eingesetzt und eine JWT-Autorisierung zwischen dem alten Admin-Panel und den neuen APIs eingerichtet. Auf diese Weise konnten wir den veralteten CakePHP-Code migrieren und mit neuerem Code und Frameworks neu schreiben.

Die Entwicklung von Lösungen als Microservices trug auch dazu bei, die Belastung durch bestimmte hochbelastende Vorgänge zu verringern (z. B. Audiodateien, die mit FFmpeg verarbeitet werden).

AWS

Die Plattform wird auf AWS gehostet. Wir haben Amazon S3 für die Datenspeicherung und Amazon RDS für die Datenbankspeicherung verwendet. Amazon CloudFront wurde für die Bereitstellung von Inhalten und AWS Lambda für die Konfiguration von Weiterleitungen für die Website verwendet.

Angesichts der Tatsache, dass das Content-Team von Ditto Music das serverlose GraphCMS verwendet, wollte der Kunde dem Content-Team die Möglichkeit geben, die Website selbst bereitzustellen und schnellere Content-Updates zu gewährleisten. Um diese Projektanforderung zu erfüllen, erweiterten wir das GraphCMS um einen Webhook, d. h. eine HTTP-Anfrage, die das CD-System (AWS Development Tools) über Änderungen im CMS (Hinzufügen, Bearbeiten oder Löschen von Inhalten) informiert. Der Webhook aktiviert AWS Lambda über das Amazon API Gateway und startet den CD-Prozess mit AWS CodeBuild und AWS CodePipeline. Der Code des Verwaltungspanels wird auf Bitbucket gehostet, und für CI/CD verwenden wir Bitbucket Pipelines.

Microservices infrastructure

Bei der Entwicklung der Microservices-Infrastruktur haben wir die Gruppe für automatische Skalierung geschaffen, damit die Website mit stark schwankendem Datenverkehr fertig wird. Itransition nutzte AWS Elastic Load Balancing mit zwei Netzwerken, einem öffentlichen und einem privaten, um den Datenverkehr zu verteilen. Amazon EC2 mit einem Firewall-Overlay stellt Instanzen für Cluster bereit, die auf der Grundlage der Startvorlage innerhalb der Auto-Scaling-Gruppe erstellt werden. Um dem System die Möglichkeit zu geben, nicht benötigte Instanzen ohne Datenverlust herunterzuskalieren und zu löschen, haben wir einen Lifecycle-Hook integriert. Der Lifecycle-Hook aktiviert AWS Lambda über Amazon SNS. AWS Lambda wiederum ruft Informationen über den Cluster vom Hook ab und aktiviert den Amazon ECS Microservices-Cluster. Dann kennzeichnet ECS den Cluster als nicht verfügbar für die Bereitstellung und beginnt mit der Migration von Daten auf andere Knoten. Wenn der Knoten freigegeben ist, löscht das System ihn.

Innerhalb des Amazon ECS Microservices Clusters werden die Docker-Images in Amazon ECR gespeichert. Amazon Route 53 ermöglicht es uns, Benutzeranfragen mit der AWS-basierten Infrastruktur zu verbinden. Amazon Route 53 wird wiederum über das Terraform-Modul verwaltet, das wir für die Anpassung von Einstellungen für Server, Cluster und Repositories verwenden. Das Terraform-Modul wird auch für die Verwaltung von Zielgruppen verwendet, die Anfragen für Microservices weiterleiten.

Um die Bereitstellung von Microservices zu ermöglichen, mussten wir auch das Terraform-Modul auf Microservices abstimmen. Terraform und Microservices sind alle in separaten Repositories gespeichert, aber der Terraform-Code benötigt eine Aufgabendefinition, die sich in den Repositories mit den Microservices befindet. Um die Kommunikation zwischen dem Terraform-Code und den Microservices zu ermöglichen, haben wir eine leere Aufgabendefinition zu Terraform hinzugefügt, deren Syntax mit der der Microservices-Repositories übereinstimmt. Dadurch ist Terraform in der Lage, die Aufgabendefinition aus den Microservices-Repositories zu erkennen.

Die Ditto Music Plattform nutzt Amazon S3 zur Speicherung von Audio-, Video- und Bildinhalten. Bei der Analyse des Systems stellte unser Team fest, dass das System ihnen automatisch eine Top-Tier-Speicherklasse für Backups zuwies, was zu höheren AWS-Kosten für den Kunden führte. Da für Backups kein erstklassiger Speicher erforderlich ist, entschieden wir uns für eine niedrigere Speicherklasse, wodurch der Kunde Geld für AWS-Gebühren sparen konnte.

Die Prozesse von Ditto Music erfordern komplexe Finanztransaktionen und die Verfolgung einer Reihe von registrierten Benutzern. Um die Abläufe nahtlos und zuverlässig zu gestalten, boten wir an, die Kommunikation zwischen den Diensten über eine Frontside-Bus-Schnittstelle zu realisieren, die dem Transactional-Outbox-Muster folgt. Dies half, Daten zu erhalten und Datenkonsistenz zu erreichen.

Wir implementierten ein zentrales Protokollierungs- und Überwachungssystem, um die Änderungen im System zu verfolgen. Der AWS ECS-Cluster sammelt die Daten und transportiert sie dann zu Protokollgruppen auf Amazon CloudWatch. Zur Analyse des Protokolls haben wir einen metrischen Filter eingesetzt, der jede neue Zeile des importierten Codes anhand der manuell vorprogrammierten Regeln analysiert und die Fehlerzeilen markiert. Wenn der metrische Filter Abweichungen von den gewünschten Parametern feststellt, aktiviert er einen CloudWatch-Alarm. Dieser wiederum löst AWS Lambda aus, das die relevanten Informationen über den Fehler aus dem Code abruft und als Benachrichtigung auf Slack sendet.

Amazon ElastiCache für Redis wird für die Speicherung von Benutzersitzungen verwendet.

Die Plattform speichert eine große Menge an persönlichen und finanziellen Informationen, weshalb die Datensicherheit und die Systemstabilität für den Kunden eine Priorität darstellen. Da Ditto Music mit DDoS-Angriffen konfrontiert war, wollten wir seine Sicherheit verbessern und implementierten eine WAF-Firewall, die derzeit im Erkennungsmodus arbeitet und alle potenziellen Bedrohungsmeldungen überwacht und protokolliert. Wenn sie einen Alarm entdeckt, aktiviert die WAF-Firewall den Präventionsmodus. Außerdem haben wir das GraphCMS auf AWS gehostet, was im Vergleich zu selbst gehosteten Lösungen zu einer höheren Datensicherheit und Widerstandsfähigkeit führt.

Wir setzen AWS Organizations für die Verwaltung von Umgebungskonten ein, um mehrere AWS-Konten in einem zentral verwalteten System zu konsolidieren.

Integrationen von Drittanbietern

  • Labelcamp, eine REST-API für das digitale Supply-Chain-Management, versorgt die Lösung mit wichtigen Funktionen für Musikveröffentlichungen, von der Erstellung neuer Veröffentlichungen mit komplizierten Vertriebsrechten bis hin zur Lieferung von Medien an digitale Shops und der Verwaltung von Assets mit Analysen.
  • Metamap, ein Service zum Sammeln und Organisieren von Daten aus einer Vielzahl von Quellen und wird für die Identitätsüberprüfung der Benutzer verwendet.
  • Synchtank bietet eine Plattform für die Verwaltung von Musikrechten und Tantiemen, das Sammeln von Verlagsanträgen und deren Weiterleitung an Verlagsgesellschaften.
  • Payoneer bietet eine Reihe von Finanzdienstleistungen und Software für den Geschäftsbetrieb, mit der die Plattform den Versand von Auszahlungen und die Annahme von Zahlungen automatisieren kann.
  • Paypal und Stripe ermöglichen es den Nutzern, eine Karte hinzuzufügen, ohne sensible Finanzdaten einzugeben, und ermöglichen es dem Unternehmen, Transaktionen weltweit durchzuführen.
  • Ebanx bietet eine vollständig lokalisierte Zahlungslösung für Lateinamerika mit lokalem Acquiring, Verkaufsmanagement in mehreren Währungen und einem einheitlichen Abstimmungsprozess.
  • Viral LoopsAPI Integration bietet die Empfehlungslink-Funktionalität.
  • AcoustID ist eine Tonerkennungs-API mit einer Bibliothek einzigartiger Audio-Fingerprints, die mit einer Metadaten-Datenbank mit integrierter Suchmaschine verknüpft sind. Die Lösung hilft Admins, Plagiate und Urheberrechtsverletzungen zu erkennen, indem sie die bereits vorhandenen Tracks in der Datenbank findet.
  • ACRCloud Sound Recognition API stellt der Plattform eine breite Palette von Überwachungs- und Erkennungsdiensten zur Verfügung, die es den Nutzern ermöglichen, Radio- und Fernsehsendungen sowie Live- und Time-Shifting-Kanäle zu verfolgen.
  • Intercom API ist eine umfassende Kundenkommunikationsplattform zum Erfassen, Verfolgen und Anzeigen von Gesprächen mit Endnutzern.
  • Oauth2 Autorisierungsprotokoll ist ein sicherer und offener Datenaustauschstandard, der es neuen Nutzern ermöglicht, sich über ihr Google-Konto anzumelden.
  • feature.fm ist eine SmartlinkAPI-Integration, die den Nutzern die relevantesten Inhalte bietet, indem sie den Datenverkehr auf der Grundlage ihres Standorts, Geräts usw. umleitet.

Verfahren

Team

Unsere Zusammenarbeit mit Ditto Music begann im Jahr 2020, und innerhalb eines Jahres haben wir unser engagiertes Team um 80 % aufgestockt, um die Anforderungen des Kunden an die Funktionalität der Lösung und die Entwicklungsgeschwindigkeit zu erfüllen. Das Team bestand aus Software-Entwicklern, einem Solution Architect auf Abruf, einem Projektmanager sowie DevOps- und QA-Spezialisten.

Wissenstransfer

Unsere Arbeit an dem Projekt begann mit dem Wissenstransfer von Ditto Music's vorherigem Technologieanbieter. Da das Unternehmen in den letzten Jahren mehrere Anbieter wechselte, war die Projektdokumentation fragmentiert und unvollständig.

Um die Feinheiten des Projekts zu verstehen, analysierte unser Team den Code, studierte die verfügbaren Epen und hielt Treffen zum Wissenstransfer mit dem vorherigen Anbieter ab.

Agil

Für das Projekt wählten wir die Scrumban-Methodik, da sie es uns ermöglichte, alle aufkommenden Probleme oder Geschäftsziele sofort anzugehen. Dank der Scrum-Planungs- und -Managementtechniken konnten wir neue Funktionen und Aktualisierungen effektiv und zeitnah bereitstellen. Um die eingehenden Support-Tickets zu bearbeiten, benötigte unser Team jedoch auch eine größere operative Flexibilität, die durch Kanban-Elemente gewährleistet wird.

In Übereinstimmung mit den Scrum-Elementen arbeiteten wir in Sprints und hielten alle zwei Wochen Sprint-Planungssitzungen ab, in denen der PO/BA, der Produktmanager, der Entwicklungsmanager, unser PM und der Teamleiter die Prioritäten für den kommenden Sprint besprachen.

Der Arbeitsumfang für den Sprint bleibt jedoch ungefähr, da die Bemühungen des Entwicklungsteams auf zwei parallele Ströme verteilt sind: Entwicklung neuer Funktionen und Support und Fehlerbehebung, und es ist schwer, die Anzahl der eingehenden Support-Tickets vorherzusagen. Das Backlog wird größtenteils vom PO/BA gefüllt, da sie in erster Linie für das Schreiben von Tickets verantwortlich sind, aber alle Teammitglieder bringen Vorschläge für potenzielle Tickets ein.

Tägliche Telefonate ermöglichen es uns, den Fortschritt unserer Aufgaben während des Sprints im Auge zu behalten und alle projektbezogenen Probleme zu besprechen. Außerdem führen wir bei Bedarf Roadmap-Diskussionen mit denselben Teilnehmern, um unsere Perspektiven für die Entwicklung neuer Funktionen abzustimmen. Wenn eine neue wichtige Funktion entwickelt werden soll, organisieren wir teamübergreifende Treffen, um die Entwicklung und Implementierung der neuen Funktion zu besprechen. In der Regel arbeiten wir als einheitliches Team, wobei wir uns manchmal in Unterteams von zwei oder drei Spezialisten aufteilen, um gemeinsam an einer bestimmten Funktion zu arbeiten, die eine engere Zusammenarbeit zwischen Teammitgliedern mit geringerem Fachwissen erfordert. Nach Abschluss des Entwicklungs- und Testprozesses organisieren wir auf Wunsch Demositzungen mit unserem engagierten Team und den Interessengruppen des Unternehmens.

Das Projekt erfordert vom engagierten Team ein hohes Maß an Flexibilität, daher haben wir Kanban-Elemente implementiert, die es uns ermöglichen, uns schnell an die sich ändernden geschäftlichen Prioritäten anzupassen. So hat der PO/BA beispielsweise die Möglichkeit, Aufgaben und deren Prioritäten während des laufenden Sprints zu ändern, wenn die Anstrengungen des Entwicklungsteams neu verteilt werden sollen. Kanban-Praktiken unterstützen unsere kontinuierlichen Lieferpraktiken, da die Kanban-Planungsflexibilität häufige (bis zu 2-mal pro Woche) Feature-Releases ermöglicht.

Ergebnisse

Itransition lieferte eine Reihe von benutzerorientierten und administrativen Lösungen für Ditto Music, führte neue Funktionen ein, erstellte ein neues Admin-Panel, migrierte einen Teil der Lösung zu Microservices, richtete DevOps-Praktiken ein, erstellte ein Monitoring-System und optimierte den Support-Workflow.

Im Laufe unserer Zusammenarbeit haben Ditto Music und Itransition eine effektive Arbeitsbeziehung entwickelt und ein hohes Maß an Vertrauen und Kooperation erreicht. Derzeit entwickeln wir die Plattform weiter, bieten Entwicklungs-, QA- und Support-Services an, fügen neue Features hinzu und erweitern die bestehenden Funktionen.