Kunde

DoorJam

Industrie

Musik

Technologien

TypeScript, ReactJS, Node.js, AWS Lambda, DynamoDB, AWS CloudFormation, S3, Stripe SDK, Terser, etc

Über das Projekt

Das Konzept von DoorJam unterscheidet sich grundlegend von einem typischen SaaS-Produkt. Anstatt sich auf ein einziges gemeinsames Backend zu verlassen, wird jeder Artist Space als unabhängiger Stack mit einer eigenen AWS-Infrastruktur bereitgestellt. Jeder Bereich umfasst seine eigene AWS-Kontoeinrichtung, CloudFormation-Stacks, Lambda-Funktionen, API-Gateway-Endpunkte, DynamoDB-Tabellen und S3-Buckets.

Dieses Modell gibt den Künstlern ein hohes Maß an Eigenverantwortung und Isolation, aber es führt auch zu einer erheblichen architektonischen und betrieblichen Komplexität. Ascendros Aufgabe war es, DoorJam dabei zu helfen, über ein vielversprechendes Pilotprojekt hinauszugehen und die Plattform so zu entwickeln, dass sie sicher skaliert, zuverlässig funktioniert und kommerziell nutzbar ist.

Der Umfang umfasste:

  • Vervollständigung der Plattformfunktionen während der Beta-Phase
  • Vorbereitung des Produkts für die Markteinführung
  • Entwurf eines zuverlässigen SDLC für mehrere Umgebungen
  • Einführung von CI/CD und Infrastruktur-Automatisierung
  • Optimierung der Leistung bei Lambda-basierten Workloads
  • Einführung eines vollständigen Zahlungssystems
  • Ermöglicht eine sichere Versionsverwaltung für unabhängig voneinander eingesetzte Künstlerräume

Herausforderungen

Die dezentralisierte Architektur von DoorJam stellte eine Reihe von besonderen technischen Herausforderungen dar. Ein besonders schwieriger Aspekt der Plattform bestand darin, dass jeder neue Künstlerbereich als eigene, isolierte Bereitstellungseinheit funktionieren und dennoch mit dem zentralen Portal kompatibel bleiben musste. Dies erforderte eine sorgfältige Versionierung, Orchestrierung der Bereitstellung und Kompatibilitätsmanagement über mehrere sich unabhängig voneinander entwickelnde Umgebungen hinweg.

  • AWS-Architektur mit mehreren Konten, die eine kontoübergreifende IAM-Rollenverwaltung und eine isolierte Infrastruktur pro Bereich erfordert
  • Kein automatisiertes CI/CD. Die Infrastruktur wurde manuell konfiguriert, was Skalierung und Konsistenz nahezu unmöglich machte
  • Synchronisierung zwischen dem zentralen Portal und Dutzenden von unabhängigen dezentralen Spaces
  • Lambda-Kaltstart- und Leistungsprobleme, die die Benutzererfahrung auf der gesamten Plattform beeinträchtigen
  • Keine SDLC-Struktur. Eine einzige Umgebung ohne sauberen Pfad von der Entwicklung bis zur Produktion
  • Integration von Zahlungssystemen über mehrere Anbieter (Stripe und PayPal) mit komplexer Auszahlungslogik für Künstler erforderlich
  • js v18 Lambda-Runtime nähert sich dem Ende der Lebensdauer und erfordert die Migration auf v20

Lösung

Das Team von Ascendro hat ein Infrastrukturmodell entworfen und implementiert, das die einzigartige dezentrale Architektur von DoorJam unterstützt und gleichzeitig die für die kommerzielle Freigabe erforderliche Betriebssicherheit gewährleistet.

Multi-Environment SDLC Pipeline

Wir haben vier isolierte AWS-Umgebungen eingerichtet: Entwicklung, QA, Staging (Beta) und Produktion, jeweils mit unabhängiger Infrastruktur, Geheimnissen und Bereitstellungspipelines. Die Umgebungen sind dedizierten Git-Zweigen zugeordnet, wobei die Bereitstellung automatisch bei Push ausgelöst wird.

Infrastruktur als Code mit CloudFormation

Alle AWS-Ressourcen (API Gateway, Lambda-Funktionen, DynamoDB-Tabellen, S3-Buckets, Cognito-Benutzerpools, CloudFront-Verteilungen und ACM-Zertifikate) werden über CloudFormation-Stacks definiert und bereitgestellt, die über GitHub Actions-Workflows verwaltet werden.

Die Portalinfrastruktur und die Space-Infrastruktur werden als separate CloudFormation-Stacks verwaltet, mit einem intelligenten Aktualisierungsmechanismus, der geänderte Lambda-Funktionen oder Ressourcenvorlagen erkennt und nur das bereitstellt, was sich geändert hat, wodurch unnötige vollständige Neuaufbauten vermieden werden.

Dezentralisierte Bereitstellung von Speicherplatz

Wenn ein Künstler einen neuen Space auf DoorJam erstellt, stellt das System automatisch einen kompletten AWS-Infrastruktur-Stack in einem dedizierten Hosting-Konto bereit. Dazu gehören Lambda-Funktionen, DynamoDB-Tabellen, API-Gateway-Konfiguration, S3-Buckets, CloudFront-Distributionen und IAM-Rollen, alles über eine automatische CloudFormation-Bereitstellung.

Das System verwendet eine intelligente Prüfung der Ressourcenlimits, um festzustellen, ob der neue Speicherplatz in einem bestehenden Hosting-Konto bereitgestellt werden soll oder ob automatisch ein neues AWS-Konto innerhalb des Unternehmens eingerichtet werden soll. Dadurch wird sichergestellt, dass die Plattform horizontal skaliert werden kann, ohne dass die Grenzen der AWS-Services pro Konto erreicht werden.

Intelligente Konto-Skalierung

Ein benutzerdefinierter Prozess zur Überprüfung der Ressourcenlimits überwacht die Anzahl der DynamoDB-Tabellen, Lambda-Quoten und andere kontoabhängige Limits für alle Hosting-Konten und AWS-Regionen. Wenn sich die Grenzen nähern, erstellt das System automatisch ein neues AWS-Organisationskonto, konfiguriert Rollen und Berechtigungen und beginnt, neue Spaces dorthin zu leiten, völlig transparent für den Künstler.

Optimierung der Lambda-Leistung

Lambda-Kaltstarts und überdimensionierte Bereitstellungspakete wurden als Hauptursache für eine schlechte Benutzererfahrung identifiziert. Ascendro implementierte ein systematisches Performance Engineering Playbook für alle Lambda-Funktionen sowohl in der Portal- als auch in der Space-Umgebung.

Angewandte Optimierungsmethoden

  • Markierung des AWS SDK v3 als extern in der Rollup-Bundler-Konfiguration, da AWS Lambda Node.js 18+ Laufzeiten das SDK vorinstalliert enthalten. Durch die Eliminierung des SDK aus den Bereitstellungspaketen wurde die Größe der Pakete um 35-60% reduziert.
  • Umstellung von Wildcard-Importen auf benannte Importe für alle AWS SDK-Befehle (z.B. GetCommand von @aws-sdk/lib-dynamodb anstelle der vollständigen Bibliothek)
  • Implementierung des DynamoDB-Client-Singleton-Musters für Lambda-Handler zur Wiederverwendung von Verbindungen zwischen warmen Aufrufen
  • Teure DynamoDB FilterExpression-Muster wurden durch korrekt indizierte Global Secondary Index (GSI)-Abfragen ersetzt
  • Parallelisierte unabhängige asynchrone Operationen mit Promise.all(), um sequenzielle await-Ketten zu eliminieren
  • Verlagerung der nicht sensiblen Konfiguration aus dem AWS Systems Manager Parameter Store (SSM) in Lambda-Umgebungsvariablen, wodurch langsame SSM-Lesevorgänge bei jedem Aufruf vermieden werden
  • rollup-plugin-visualizer zur Build-Pipeline hinzugefügt, um die Größe von Paketen zu analysieren
  • Upgrade aller Lambda-Laufzeiten von Node.js v18 auf v20 in den Umgebungen DEV, QA und Beta

CI/CD Pipeline Implementierung

Ascendro entwickelte und implementierte ein umfassendes CI/CD-Framework, das die Bereitstellung von Lambda-Funktionen, Frontend-Builds, CloudFormation-Infrastruktur-Updates und umgebungsübergreifende Promotion-Workflows abdeckt.

Pipeline Architektur

  • Lambda CI/CD: Erkennt geänderte Lambda-Funktionen per Push, baut nur geänderte Funktionen, erstellt versionierte ZIP-Artefakte, lädt sie in umgebungsspezifische S3-Buckets hoch und stellt sie über AWS Lambda update-function-code bereit
  • Frontend CI/CD: Umgebungsspezifische Build-Skripte (build-dev, build-qa, build-beta) kompilieren die React/Vite-Anwendungen, laden Artefakte in den richtigen S3-Website-Bucket hoch und invalidieren CloudFront-Verteilungen
  • Infrastruktur-CI/CD: CloudFormation Stack-Erstellungs- und -Update-Workflows verarbeiten sowohl die anfängliche Bereitstellung der Umgebung als auch inkrementelle Stack-Updates, mit einer eleganten Überspringungslogik, wenn keine Änderungen erkannt werden.
  • Space-Aktualisierungsfluss: Ein selektiver Bereitstellungsmechanismus liest die Space-Konfiguration aus der Datei stack-spaces-config.json, nimmt die korrekte kontoübergreifende IAM-Rolle pro Space an und aktualisiert nur die betroffenen Lambda-Funktionen, API-Gateway-Stufen oder CloudFormation-Ressourcen für diesen spezifischen Space.

Raumübergreifende Versionsverwaltung

Da jeder Space einen unabhängigen Stack einsetzt, hat Ascendro eine Versionsstrategie implementiert, die es einigen Künstlern ermöglicht, auf stabilen Versionen zu bleiben, während andere neue Funktionen übernehmen. Dazu gehören Lambda-Aliase (z.B. beta_v1, beta_v2), API Gateway Stage Versionierung (/v1/, /v2/), versionierte React-App-Bereitstellungen in S3 und in DynamoDB gespeicherte Versions-Metadaten für jeden Space.

Jeder Space stellt einen /metadata-Endpunkt zur Verfügung, der seine aktuelle CloudFormation-Stack-Version, die API-Version und kompatible Portal-API-Versionen zurückgibt, so dass das zentrale Portal unabhängig von ihrem individuellen Aktualisierungsstatus korrekt mit den Spaces interagieren kann.

Implementierung eines Zahlungssystems

Ascendro hat ein voll funktionsfähiges Zahlungssystem entwickelt, das die drei verschiedenen Monetarisierungsmodelle von DoorJam unterstützt: Fan-Mitgliedschaften, einmalige Käufe und Hosting-Gebühren für Künstler.

Kernkomponenten

  • Stripe- und PayPal-SDK-Integration für die Abrechnung wiederkehrender Abonnements, einmalige Käufe und Pay-as-you-go-Hostingpläne
  • Modulares Artist Wallet System für Einkommensverfolgung, Abhebungsverwaltung und Finanzberichte
  • Automatisiertes Auszahlungssystem, das die Geldbörsen der Künstler mit externen Zahlungsanbietern für die Auszahlung der Gelder verbindet
  • Intelligente Gebührenlogik für die Berechnung von Hosting-Gebühren auf der Grundlage des tatsächlichen Ressourcenverbrauchs
  • Transaktionsprotokollierung, Fehlerbehandlung und Wiederholungsmechanismen für Zahlungssicherheit
  • Admin-Finanz-Dashboard für die Umsatzverfolgung, Abonnementverwaltung und Streitbeilegung
  • PCI DSS- und GDPR-konforme Datenverarbeitung in der gesamten Zahlungspipeline

Verwendete Technologien

Frontend: TypeScript, ReactJS, Node.js, Vite, AWS SDK, MUI
Backend: AWS Lambda (Node.js 20), API Gateway, DynamoDB, Cognito, SNS, EventBridge, MediaConvert
Infrastruktur: AWS CloudFormation, S3, CloudFront, ACM, Route 53, IAM, CloudWatch
CI/CD: GitHub-Aktionen mit Multi-Environment-Branch-Strategie
Zahlungen: Stripe SDK, PayPal SDK/API
Bündelung: Rollup mit Terser, rollup-plugin-visualizer

Ergebnisse

Das Projekt lieferte eine produktionsreife Plattform, die in der Lage ist, echte Benutzer zu unterstützen, und die eine solide Grundlage für weiteres Wachstum und die Entwicklung neuer Funktionen bietet.


Als engagiertes Softwareentwicklungsteam mit Fachkenntnissen in den Bereichen Nearshore-Softwareentwicklung, Outsourcing der Softwareentwicklung, IT-Personalverstärkung und vielem mehr sind wir auf die Bereitstellung innovativer Lösungen für verschiedene Branchen spezialisiert, von der Entwicklung kundenspezifischer Fertigungssoftware bis hin zur Optimierung von Geschäftsprozessen, um sicherzustellen, dass unsere Kunden wettbewerbsfähig und effizient arbeiten können. Sehen Sie sich unsere Softwareentwicklungsprojekte hier an.

Benötigen Sie eine maßgeschneiderte Softwarelösung für Ihr Unternehmen?

Reden wir darüber