Amazon Video Microservices vs Monolith
Cloud / Server

Amazon: „Microservices waren ein Fehler“

Amazon Prime Video bietet tausende von Videos und Live-Streams für seine Kunden an. Um sicherzustellen, dass die Kunden nahtlos Inhalte empfangen, hat Prime Video ein Tool entwickelt, das jeden vom Kunden angesehenen Stream überwacht und automatisch Qualitätsprobleme erkennt und behebt. Ursprünglich verwendete das Team eine serverlose Microservices-Architektur. Doch dies war so ineffizient, dass sie nun zu einer vermeintlich überholten monolithischen Architektur übergingen und damit 90% der Kosten sparten.

Hintergrund und Herausforderungen

Dieses Blog berichtete bereits vorsichtig kritisch über Serverless Computing und legte dar, dass die Kosten eben nicht immer geringer sind und die Abhängigkeit von einem Fremdanbieter sowohl finanzielle als auch technische nachteilige Konsequenzen haben kann. Nun bestätigt Amazon Prime Video als massiver Nutzer von AWS serverless Microservices in der Cloud selbst, dass serverless nicht immer der richtige Ansatz ist. Dennoch haben sie natürlich ihren Platz und ihre Berechtigung.

In seinem Artikel beschreibt Senior Prime Video Entwickler Marcin Kolny wie Amazon Prime Video von serverless Microservices zurück zur vermeintlich überholten Monolith-Struktur wechselte. Ihr Audio-Video-Monitoring-Dienst hatte ursprünglich eine serverlose Microservices-Architektur, die schnell an ihre Grenzen stieß. Die Orchestrierung mit AWS Step Functions erwies sich als kostspielig, und der Datenaustausch zwischen den verteilten Komponenten verursachte hohe Kosten. Zudem führte die Verwendung eines Amazon S3-Buckets für den Transfer von Video-Frames zu teuren Tier-1-Zugriffen. Diese Herausforderungen waren Anlass für eine Neubewertung der Architektur, um die Skalierbarkeit zu verbessern und die Kosten zu senken.

Die Umstellung von Microservices auf eine monolithische Architektur

Um die Skalierungsengpässe und die hohen Kosten anzugehen, entschied sich Prime Video dafür, von einer serverlosen Microservices-Architektur zu einer monolithischen Architektur überzugehen. Alle Komponenten des Audio-Video-Monitoring-Dienstes wurden in einen einzigen Prozess integriert, wodurch der Datenaustausch im Arbeitsspeicher erfolgte und teure S3-Bucket-Zugriffe vermieden wurden. Die Orchestrierung erfolgte nun innerhalb einer Instanz, was die Kosten senkte und die Skalierbarkeit erhöhte. Durch den Einsatz von Amazon EC2 und Amazon ECS konnte das Unternehmen auf skalierbare Ressourcen zurückgreifen und dank der Amazon EC2 Compute Saving Plans die Kosten weiter reduzieren.

Vorteile der monolithischen Architektur

Die Umstellung auf eine monolithische Architektur brachte Prime Video erhebliche Vorteile. Die Infrastrukturkosten wurden um über 90% gesenkt, während gleichzeitig die Skalierbarkeit des Dienstes verbessert wurde. Das Unternehmen ist nun in der Lage, Tausende von Streams zu handhaben und hat noch Kapazitäten für weitere Skalierung. Durch den Einsatz von Amazon EC2 und Amazon ECS können außerdem die Amazon EC2 Compute Saving Plans genutzt werden, um die Kosten weiter zu senken. Die Entscheidung, den Video-Konvertierungsprozess näher an die Defekt-Detektoren zu bringen, erwies sich als kosteneffektiv und führte zu einer noch höheren Qualität und besseren Kundenerfahrung.

Fazit Microservices vs Monolith

Die Umstellung des Prime Video Audio-Video-Monitoring-Dienstes von einer serverlosen Microservices-Architektur auf eine monolithische Architektur hat gezeigt, dass nicht immer der Einsatz von Microservices und serverlosen Komponenten die beste Lösung ist. Die monolithische Architektur ermöglichte eine signifikante Kostenreduzierung und eine verbesserte Skalierbarkeit. Indem alle Komponenten in einem Prozess vereint wurden, konnte der Datenaustausch optimiert und teure S3-Bucket-Zugriffe vermieden werden. Prime Video kann nun mehr Streams verarbeiten und bietet eine höhere Qualität und Kundenzufriedenheit. Diese Erfahrungen zeigen, dass eine differenzierte Betrachtung von Architekturansätzen notwendig ist, um die individuellen Anforderungen eines Dienstes optimal zu erfüllen.

Im Falle von Amazon hat die monolithische Architektur hat es ermöglicht, die Kosten um über 90% zu reduzieren und gleichzeitig die Skalierbarkeit zu verbessern. Prime Video kann nun eine größere Anzahl von Streams verarbeiten und eine höhere Qualität und Kundenzufriedenheit bieten.

Dieser Fall verdeutlicht, dass es wichtig ist, eine kritische Haltung gegenüber serverlosen und Microservices-Ansätzen beizubehalten und die spezifischen Anforderungen eines Dienstes zu berücksichtigen. Letztendlich sollten Entwickler und Unternehmen bei der Architekturwahl flexibel sein und die besten Ansätze für ihre individuellen Anforderungen evaluieren.