Artikel

Ein datengesteuerter Ansatz zur Skalierung Ihrer webbasierten SaaS-Anwendung

Maurits van der Schee

Aktualisiert Oktober 13, 2025
6 Minuten

Schnell wachsende Startups mit einem webbasierten SaaS-Produkt befürchten oft, dass ihr Erfolg zu ihrem schlimmsten Feind werden könnte, und das zu Recht.  Die Herausforderung der Skalierung ist sowohl organisatorisch als auch technisch. Sie müssen sicherstellen, dass Ihre Software auf die Anzahl der Nutzer skaliert, die Sie gewinnen könnten.

SaaS-Produkte müssen sich an steigende Nutzerzahlen bei sinkenden Kosten pro Nutzer anpassen. Glücklicherweise sind Computer und Speicher immer billiger und schneller geworden, aber das hat die Skalierung immer noch nicht viel einfacher gemacht. Sie müssen auch Ihren Rechenspeicher skalieren, um dem ständig wachsenden Bedarf an automatisierter Infrastrukturbereitstellung und Softwarebereitstellung gerecht zu werden. Ein einziger Rechner muss in der Lage sein, eine beträchtliche Anzahl von Benutzern zu verwalten. Durch die Verteilung von Rollen auf mehrere Rechner (vertikale Skalierung) oder das Hinzufügen von Rechnern (horizontale Skalierung) kann die Anzahl der Benutzer wachsen, ohne dass sich dies negativ auf die Erfahrung der Anwendungsbenutzer auswirkt. Bei der Entwicklung Ihrer Software muss die Skalierbarkeit berücksichtigt werden. In diesem Artikel wird die ideale Skalierbarkeitsarchitektur später näher erläutert.

Skalierbarkeit: Das Problem erklärt

Das Problem der Skalierbarkeit wird oft als Luxusproblem wahrgenommen, weil es erst dann auftritt, wenn ein Startup einen gewissen Erfolg erzielt.  Aber es kann auch zum Untergang des Startups führen. Wenn ein Produkt erfolgreich ist, ist es leicht, die ganze Zeit mit dem Onboarding neuer Kunden zu verbringen und schwieriger, genügend Zeit für die Optimierung der Anwendung und die vorausschauende Leistungsanalyse aufzubringen. Es ist also ein echtes Problem, da der hart erarbeitete, positive Ruf des Startups leicht verloren gehen kann. Ein sinkender Ruf kann die Wachstumsgeschwindigkeit des Unternehmens beeinträchtigen, eine Kennzahl, die für Investoren sehr wichtig ist.  

Skalierbarkeit: Warum jeder darüber redet

Wenn die Nutzung ohne skalierbare Software zunimmt, kommt es in Spitzenzeiten immer häufiger zu einem langsamen oder nicht reagierenden Service. Das Problem lässt sich nicht lösen, indem man einfach mehr Geld (d.h. Hardware) in die Hand nimmt. Das Ingenieurteam wird Ihnen erklären, dass die Software überarbeitet werden muss, damit sie ab einer bestimmten Größenordnung funktioniert. Aber die Neuprogrammierung Ihrer Software bei regelmäßigen Ausfällen kann ein Entwicklungsteam überfordern. Hier erfahren Sie, wie Sie das vermeiden können:  

Zunächst einmal: Da Skalierbarkeit scheinbar zum "heiligen Gral" der Anwendungsentwicklung geworden ist, haben die meisten Entwicklerteams eine Fülle von Ideen, was geändert werden könnte, um dies zu erreichen. Sie schlagen spezialisierte Hardware, eine komplette Neuprogrammierung (von Grund auf), eine andere Programmiersprache, nicht-blockierende E/A, ein Event-Loop-System, die Verwendung von Nachrichtenbussen und Microservice-basierte Architekturen als Schlüssel zu diesem "mythischen" Problem vor. Glücklicherweise ist nichts von alledem notwendig und die Lösung ist ganz einfach:

Messen Sie die Eigenschaften Ihrer Software, damit Sie nur die Funktionen neu schreiben müssen, die nachweislich Engpässe bei der Skalierung Ihrer Anwendung darstellen.  Und so geht's:

Reifegrade der Leistungsanalyse

Es gibt drei Reifegrade, die bei einer Leistungsanalyse in einem Software-as-a-Service (SaaS)-Entwicklungsprozess ermittelt werden können: 

  1. Reaktiv - Stellen Sie sicher, dass Sie über Profiling-Tools verfügen, um die Leistung bei Funktionsaufrufen zu verbessern, über die sich Kunden beschweren.
  2. Proaktiv - Richten Sie eine kontinuierliche Analyse in der Produktion ein, um Leistungseinbußen zu erkennen, bevor die Kunden sie bemerken.
  3. Vorausschauend - Richten Sie eine Leistungsinfrastruktur für Nutzungssimulationen und Leistungsanalysen ein, um vorherzusagen, wann Kunden an ihre Grenzen stoßen werden.

Um die einzelnen Reifegrade zu erreichen, müssen Sie in Tools und das Schreiben von Software investieren. Für die erste Stufe müssen Sie Profiler verwenden, die den Aufrufstapel analysieren (wie Java Flight Recorder). Für die zweite Stufe benötigen Sie ein Application Performance Management (APM) Tool (wie Dynatrace oder New Relic). Die dritte Ebene erfordert eine noch größere Investition in die Nutzungssimulation.

Prädiktive Analyse erfordert Nutzungssimulation

Um Probleme zu vermeiden, müssen Sie vorhersagen können, wann Sie an Leistungsgrenzen stoßen werden. Der Schlüssel zu einer solchen Leistungsanalyse liegt in der Programmierung von Software, die eine angemessene Nutzungssimulation durchführt. Erstellen Sie Personas und bestimmen Sie deren typisches Verhalten. Skalieren Sie dann den Test auf die richtige Anzahl von Benutzern. Stellen Sie sicher, dass Sie über eine Reihe von Rechnern verfügen, auf denen Sie Ihre Produktionseinrichtung genau nachbilden können, und führen Sie dann Ihren Test damit durch.

Automatisieren Sie die Bereitstellung dieser Maschinen mit Ansible, Chef, Salt, Puppet oder CFengine.  Auf diese Weise können Sie Ihre Performance-Plattform problemlos auf verschiedenen Clouds und Hardwarekonfigurationen ausrollen, um deren Leistung zu bewerten. Sie können auch Ihre Einrichtung wiederholen, um sicherzustellen, dass Ihre Tests gültig sind. Der erste Schritt besteht darin, die Anzahl der Benutzer zu ermitteln, die Ihre Anwendung zum Absturz bringen. Als Nächstes bestimmen Sie, wie Sie etwas dagegen tun können.

Ein instrumentierter Haproxy unter Last

Ein instrumentierter Haproxy unter Last

SIGAR: Ein Fünf-Schritte-Ansatz

Um eine leistungsstarke Software zu erhalten, befolgen Sie die folgenden fünf Schritte sorgfältig und der Reihe nach:

  1. Simulieren Sie dieNutzung realistisch (programmieren Sie einige Gatling Tests)
  2. Umfassende Instrumentensysteme(Verwendung Collectd , Kamon , Dropwizard , FastJMX )
  3. Messungen interaktiv grafisch darstellen(verwenden Sie Grafana und InfluxDB , eine Zeitserien-DB)
  4. Analysieren Sie dieDiagramme gründlich (muss vom Entwicklungsteam durchgeführt werden)
  5. Wiederholen Sie dieSchritte häufig (um Leistungseinbußen zu vermeiden)

Bei der obigen "SIGAR"-Methode fehlt ein Schritt: die (minimale) Anpassung des Codes. Sobald das Entwicklungsteam jedoch eine Simulation programmiert und die Ergebnisse analysiert hat, wird über diese Optimierungen nicht mehr viel geredet werden. Es ist besser, nicht zu fragen, warum die Leistung schlecht war, denn oft gibt es wenig zu lernen. Besser ist es, über die potenziellen und tatsächlichen Leistungsverbesserungen zu sprechen. Bei der Verbesserung der Leistung sollte es nicht um Schuldzuweisungen gehen, sondern um eine gewinnbringende Erfahrung.

Aussagekräftige Statistik

Die meisten Systeme überwachen die Häufigkeit und die durchschnittliche Dauer von Funktionsaufrufen. Mit diesen Informationen können Sie eine "Slow Query Log"-Statistik berechnen, die für die Reduzierung der Antwortzeit nützlich sein kann, aber nicht so gut für die Leistungsoptimierung.

Wenn wir Diagramme zur Analyse der Leistung erstellen, betrachten wir idealerweise zeitaufwändige Statistiken. Das sind Statistiken, mit denen Sie billige, sehr häufige Funktionsaufrufe mit teuren, zufälligen Funktionsaufrufen vergleichen können. Das Diagramm berechnet die Anzahl der Mikrosekunden, die bei allen Aufrufen bestimmter Funktionen in einer Nutzungssimulation verstrichen sind.

Ein Flammendiagramm, das Stichproben von Stack Traces zeigt (Quelle: Brendan Gregg)

Ein Flammendiagramm, das Stichproben von Stack Traces zeigt (Quelle: Brendan Gregg)

Beispiele für nützliche Diagramme:

  • New Relic's "Zeitaufwendigste" Listen
  • Brendan Gregg's Flammendiagramme, die Stapelmuster darstellen
  • Diagramme oder Top-Listen, die Sie selbst erstellen, indem Sie alle Mikrosekunden der verstrichenen Wanduhrzeit aller API- oder Repository-Aufrufe zusammenzählen

Sie können die letzte Art von Diagramm erstellen, indem Sie immer weiter ansteigende Zähler (die die Anzahl der Aufrufe und die verstrichene Zeit darstellen) in einem Redis "Hash"-Datenstruktur speichern.

Zusammenfassung 

Mit Hilfe der prädiktiven Leistungsanalyse können Sie sicherstellen, dass Ihre Software auf die Anzahl der Nutzer, die Sie gewinnen könnten, skaliert. Die vorausschauende Leistungsanalyse erfolgt durch die Simulation der Nutzung von instrumentierter Software. Zeichnen Sie die Daten auf und analysieren Sie sie mit Tools wie Profiler, APM und Zeitseriendatenbanken und wiederholen Sie sie bei Bedarf.

Contact

Let’s discuss how we can support your journey.