AWS-Kostenreduzierung und DevOps-Optimierung

TL;DR

Ein Startup in der Pre-Seed-Phase, das mit hohen Kosten und betrieblichen Herausforderungen bei seinem selbst gehosteten Kubernetes-Cluster auf AWS konfrontiert war, migrierte erfolgreich zu AWS AppRunner. Die Migration reduzierte ihre AWS-Rechnung um 50% und ermöglichte es dem kleinen Team, die Infrastruktur zu betreiben, ohne Expertise im Management eines Kubernetes-Clusters zu benötigen. Mit integrierten Metriken und Protokollierung erlebte das Startup verbesserte Stabilität, Sicherheit und Überwachungsfähigkeiten.

Einführung

Das Startup in der Pre-Seed-Phase betrieb einen Technologie-Stack, der einen Apollo GraphQL-Server, MongoDB Atlas für das Datenmanagement und eine auf React basierende Single-Page-Webanwendung als Frontend umfasste. Ihre Infrastruktur war ursprünglich auf einem selbstverwalteten Kubernetes-Cluster auf AWS eingerichtet, mit separaten AWS-Konten für Entwicklung/Staging und die Live-Umgebung.

Herausforderung

Das Team stand vor erheblichen Herausforderungen nach dem Weggang ihres Senior DevOps Engineers. Die Kubernetes-Cluster und AWS-Konten blieben unverändert, was zu veralteter Infrastruktur, zunehmender Instabilität, Sicherheitsproblemen und einem Mangel an ordnungsgemäßen Überwachungspraktiken führte.

Lösung

Um die Herausforderungen zu bewältigen und sich an die strategische Ausrichtung des Startups anzupassen, schlugen wir die folgende Architektur vor:

AWS-Architekturdiagramm

  1. Migration zu AWS App Runner: Die Kubernetes-Dienste wurden zu AWS App Runner migriert, einem vollständig verwalteten, serverlosen Container-Bereitstellungsdienst. Dies beseitigte die Notwendigkeit, den Kubernetes-Cluster zu verwalten und zu skalieren, was zu einer Reduzierung des betrieblichen Aufwands führte.

  2. Proxy-Instanzen für ausgehende Kommunikation: Da der Backend-Dienst serverlos wurde und seine statische IP verlor, führten wir zwei Proxy-Instanzen mit elastischen IPs ein. Diese Instanzen erleichterten die Kommunikation mit externen Netzwerkgeräten in der Infrastruktur des Kunden. Die festen IP-Adressen waren entscheidend für das Whitelisting der IPs auf den Firewalls des Kunden.

Wir wählten AWS App Runner, da nur 2 Dienste im Kubernetes-Cluster liefen.

Vorteile

Die Migration zu AWS App Runner brachte mehrere bedeutende Vorteile:

  1. Kostenreduzierung: Durch die Eliminierung des selbstverwalteten Kubernetes-Clusters reduzierte das Startup seine AWS-Rechnung um 50%. Diese Kostenoptimierung ermöglichte es ihnen, Ressourcen effizienter zuzuweisen und in andere kritische Bereiche zu investieren.

  2. Vereinfachte Abläufe: Das kleine Team wurde von der Last befreit, einen Kubernetes-Cluster zu verwalten, da AWS App Runner die zugrunde liegende Infrastruktur übernahm. Dies führte zu einer verbesserten betrieblichen Effizienz und ermöglichte es dem Team, sich auf die Kernaktivitäten des Unternehmens zu konzentrieren.

  3. Keine Expertise erforderlich: Der Übergang zu AWS App Runner beseitigte die Notwendigkeit für spezialisierte Kubernetes-Kenntnisse. Das Team konnte die Infrastruktur betreiben, ohne dedizierte DevOps-Expertise zu benötigen, was einen schnelleren Entwicklungszyklus ermöglichte.

  4. Verbesserte Stabilität und Sicherheit: Mit AWS App Runner erhielt die Infrastruktur regelmäßige Updates und Patches, was eine verbesserte Stabilität und reduzierte Sicherheitsrisiken gewährleistete. Das Startup konnte Schwachstellen durch ungepatchte Systeme vermeiden.

  5. Integrierte Metriken und Protokollierung: AWS App Runner bot einfach zu verwendende Metriken und Protokollierungsfunktionen, die es dem Team ermöglichten, die Anwendung effektiv zu überwachen und zu beheben. Diese verbesserte Beobachtbarkeit trug zu besseren Entscheidungen und proaktiver Problemlösung bei.

Herausforderungen

Es gibt einige Herausforderungen, denen wir uns gestellt haben und die wir analysieren:

  • Gelegentlich langsame Anfragen/Antworten, die durch Kaltstarts verursacht werden könnten
  • Einige Fehler bei der Inhaltslängenübereinstimmung auf der Client-Seite, die untersucht werden
  • Behebung des 120s-Anforderungszeitlimits bei AWS App Runner, das ausreichend erscheint, aber die Anwendung hat einige unoptimierte Endpunkte.

Fazit

Die erfolgreiche Migration von einem selbst gehosteten Kubernetes-Cluster zu AWS App Runner unterstreicht die Bedeutung einer sorgfältigen Bewertung der Infrastrukturbedürfnisse und deren Ausrichtung an den Zielen und Fähigkeiten der Organisation. Während Kubernetes aufgrund seiner Flexibilität und Skalierbarkeit an Popularität gewonnen hat, ist es möglicherweise nicht immer die ideale Lösung, insbesondere für Startups mit einem kleinen Team und einer geringen Anzahl von Diensten.

In dieser Fallstudie stand das Startup in der Pre-Seed-Phase vor Herausforderungen wie hohen Kosten, betrieblichen Komplexitäten und dem Weggang ihres Senior DevOps Engineers. Durch die Migration zu AWS App Runner konnten sie diese Hürden überwinden und bemerkenswerte Verbesserungen im Infrastrukturmanagement erzielen.

Eine wichtige Erkenntnis aus dieser Migration ist, dass Kubernetes keine Einheitslösung ist. Es erfordert spezialisierte Expertise, dedizierte Ressourcen und kontinuierliche Wartungsaufwände, um effektiv betrieben zu werden. Für kleine Teams mit begrenzten Ressourcen können diese Anforderungen überwältigend werden, was zu Ineffizienzen, erhöhten Kosten und Sicherheitslücken führt.

AWS App Runner hingegen bot eine vereinfachte und serverlose Alternative, die es dem Startup ermöglichte, sich auf ihre Kernaktivitäten zu konzentrieren, ohne den Kubernetes-Cluster verwalten und skalieren zu müssen. Die Migration reduzierte die Kosten erheblich, verbesserte die betriebliche Effizienz und bot integrierte Überwachungsfunktionen, die es dem Team ermöglichten, Stabilität und Sicherheit ohne die Komplexität von Kubernetes zu erreichen.

Es ist entscheidend, dass Organisationen ihre Anforderungen, Teamgröße und verfügbaren Ressourcen sorgfältig bewerten, bevor sie eine Infrastruktur-Lösung übernehmen. Während Kubernetes die richtige Wahl für größere Unternehmen mit komplexen Bedürfnissen sein kann, sollten Startups und kleine Teams Alternativen wie AWS App Runner oder ECS in Betracht ziehen, die ähnliche Vorteile ohne den Overhead und die Expertise-Anforderungen des Kubernetes-Managements bieten.

Durch die Wahl der geeigneten Infrastruktur-Lösung basierend auf ihren spezifischen Bedürfnissen können Organisationen Kosten optimieren, die betriebliche Effizienz verbessern und Ressourcen effektiv zuweisen. Der Erfolg dieser Migration dient als wertvolle Lektion bei der Auswahl des richtigen Werkzeugs für die Aufgabe und der Nutzung von Lösungen, die den Fähigkeiten und Zielen des Teams entsprechen.

Wobei können wir Sie unterstützen?

Senden Sie mir einfach eine Nachricht order rufen Sie mich an. Ich freue mich, von Ihnen zu hören.

[email protected]

+49 160 975 280 94

Support Image

Marco Rico

Fractional CTO