• Formerly Platform.sh
  • Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduktFallstudienNachrichtenInsights
Blog

Sichern Sie Ihre Symfony-Anwendung für den Black Friday

performanceskalierungBeobachtbarkeitBlackfireVorschau-UmgebungenBereitstellungDevOps
23 Dezember 2025
Teilen Sie
Diese Seite wurde von unseren Experten auf Englisch verfasst und mithilfe einer KI übersetzt, um Ihnen einen schnellen Zugriff zu ermöglichen! Die Originalversion finden Sie hier.

Dieser Blog basiert auf dem Vortrag „Bulletproofing for Black Friday” von Thomás Di Luccio auf der Symfony 2024-Konferenz. Thomás ist Developer Relations Engineer bei Upsun. Wir haben KI-Tools für die Transkription und zur Verbesserung der Struktur und Verständlichkeit der Inhalte eingesetzt.

Stellen Sie sich Folgendes vor: Sie sind ein kleines Ticket-Startup, das gerade einen Großauftrag von einem großen Veranstaltungsort erhalten hat. Nach monatelanger Entwicklung von Features und Vorbereitungen für den Start ist der große Tag gekommen – der Verkauf der Saisonkarten beginnt. Dieser Veranstaltungsort könnte an einem einzigen Tag bis zur Hälfte seines Jahresumsatzes erzielen. Die Einsätze könnten nicht höher sein.

Um 10 Uhr beginnt der Ticketverkauf. Online-Kunden, Besucher vor Ort und Nutzer der mobilen App greifen alle gleichzeitig auf dieselbe API zu. 45 Minuten lang scheint alles in Ordnung zu sein. Dann wird die Anwendung allmählich langsamer. Nach einer Stunde stürzt alles komplett ab.

Genau das ist Thomás und seinem Team vor Jahren passiert. Es war ein vernichtender Misserfolg, der nicht nur diesen wichtigen Kunden, sondern alle ihre Kunden betraf. Die Stimmung im Büro war am Boden, und niemand wusste, was schiefgelaufen war oder wie man die Situation wieder in Ordnung bringen konnte.

Dieser Misserfolg war jedoch der Beginn einer Reise in die Welt der Anwendungsperformance und Skalierung, die Sie nicht wiederholen müssen.

Das Kernproblem: Features entwickeln vs. für Skalierbarkeit entwickeln

Das grundlegende Problem lag nicht bei Symfony oder einer bestimmten Technologie. Das Problem war einfach: Das Team war so sehr auf die Bereitstellung von Features konzentriert, dass es die Vorbereitung auf Szenarien mit hohem Datenverkehr völlig übersehen hatte.

„Wir waren so sehr darauf konzentriert, das Produkt zu entwickeln, Features zu liefern und Features zusammenzustellen, dass wir etwas Wesentliches übersehen haben: die Vorbereitung auf den großen Tag“, erklärt Thomás.

Dies ist eine häufige Falle im E-Commerce und in allen Unternehmen mit Spitzenauslastungszeiten. Teams entwickeln hervorragende Funktionen, übersehen jedoch oft, dass Erfolg mehr Nutzer bedeutet und mehr Nutzer unvorbereitete Systeme überlasten können.

Vier wesentliche Strategien für ausfallsichere Anwendungen

1. Testen Sie Ihre Anwendung unermüdlich

Die erste Lektion ist offensichtlich, wird aber oft übersehen: Testen Sie Ihre Anwendungen vor dem entscheidenden Tag einem Stresstest. Dabei geht es nicht nur darum, ein paar Lasttests durchzuführen, sondern darum, Ihre Anwendung systematisch zu zerstören.

Brechen Sie Ihre Anwendung absichtlich.

Testen Sie Ihre Anwendung nicht nur, sondern bringen Sie sie zum Absturz. Seien Sie kreativ. Finden Sie neue Wege, um sie zum Absturz zu bringen. Wie Thomás es ausdrückt: „Überlassen Sie dies nicht Ihren Nutzern, denn sie sind verrückt und werden sie auf eine Weise zum Absturz bringen, die Sie nicht kontrollieren können.“

Investieren Sie in Lasttest-Tools.

Wählen Sie Tools, die für Ihr Team geeignet sind, und bleiben Sie dabei. Beliebte Optionen sind:

  • Locust (Python-basiert, sehr flexibel)
  • Gatling (Java-basiert, auf Unternehmen ausgerichtet)
  • Verschiedene SaaS-Lösungen für diejenigen, die Managed Services bevorzugen

Der Schlüssel liegt darin, das richtige Gleichgewicht zwischen Zeitaufwand und finanziellen Investitionen zu finden, um eine Konfiguration zu schaffen, die jeder in Ihrem Team zuverlässig nutzen kann.

Erstellen Sie echte User Journeys.

Generische Lasttests reichen nicht aus. Sie müssen das tatsächliche Benutzerverhalten simulieren:

  • Analysieren Sie Ihre Daten, um echte Benutzermuster zu verstehen.
  • Erstellen Sie vollständige User Journeys von der Startseite bis zur Kasse.
  • Verwenden Sie Ihre APIs, um reale Daten abzurufen (Produkt-IDs, Kategorien, Suchbegriffe).
  • Erstellen Sie modulare Testfunktionen, die wie Legosteine kombiniert werden können.

Vergessen Sie Randfälle nicht.

Im Fall des Ticketunternehmens waren ihr Erzfeind Gruppen älterer Theaterliebhaber, die eine Person schickten, um Dutzende von Tickets für die gesamte Gruppe zu kaufen. Diese Szenarien mit großen Warenkörben verursachten massive Rechenlasten, die bei normalen Tests nicht berücksichtigt wurden.

Testen Sie immer Extremszenarien:

  • Große Warenkörbe mit mehr als 50 Artikeln.
  • Komplexe Benutzerkonfigurationen.
  • Rechenintensive Prozesse.

Machen Sie es mit einem Klick einfach.

Jeder in Ihrem Team sollte in der Lage sein, umfassende Lasttests mit einem einzigen Befehl oder Mausklick durchzuführen. Dadurch werden Hindernisse für regelmäßige Tests beseitigt und sichergestellt, dass die Tests tatsächlich durchgeführt werden.

Finden Sie Ihre Bruchstellen.

Lasttests liefern zwei wichtige Zahlen:

  • Den Punkt, an dem Ihre Anwendung langsamer wird
  • Der Punkt, an dem sie vollständig abstürzt
# Fixture-Daten (Produkte, Kategorien, Suchbegriffe) aktualisieren
# dann Journeys wie Legosteine
zusammenstellen def journey_checkout(env):
visit_home()
search(random_keyword())
view_product(random_product_id())
add_to_cart(quantity=n) # auch n=100 testen
pay()

 

Das Verständnis dieser Schwellenwerte ist entscheidend, da oft ein direkter Zusammenhang zwischen gleichzeitigen Benutzern und Umsatz besteht. Wenn Sie Ihren Bruchpunkt kennen, wissen Sie, welchen maximalen Umsatz Ihre aktuelle Infrastruktur generieren kann.

2. Arbeiten Sie immer mit Produktionskopien

Führen Sie niemals Stresstests in der Produktivumgebung durch. Das scheint offensichtlich, aber die Herausforderung besteht darin, wirklich genaue Kopien Ihrer Produktivumgebung zu erstellen.

Der Ansatz von Upsun

Upsun, wo Thomás arbeitet, bietet eine Git-basierte Platform-as-a-Service, die dies nahtlos ermöglicht. Sie beschreiben Ihre Infrastrukturanforderungen in YAML-Dateien, die in Ihrem Repository committet werden:

  • Symfony-Anwendungen mit PHP 8.3 oder 8.4
  • Frontend-Anwendungen in Node.js
  • Data-Science-Pipelines
  • Go-Worker
  • Jede Kombination von Diensten, die Ihre Anwendung benötigt

Jeder Commit erstellt eine neue Version, und jeder Branch erstellt eine vollständige Kopie der übergeordneten Umgebung, unabhängig von ihrer Komplexität.

DIY-Lösungen

Wenn Upsun keine Option ist, investieren Sie in die Schaffung ähnlicher Funktionen:

  • Umgebungsklonung mit einem Befehl.
  • Automatisierte Bereitstellung der Infrastruktur.
  • Identische Konfigurationen über alle Umgebungen hinweg.

Für E-Commerce-Anwendungen ist diese Funktion unverzichtbar.

3. Integrieren Sie Observability in alle Bereiche

Lasttests und Staging-Umgebungen reichen nicht aus, wenn Sie nicht verstehen, was während Stresstests in Ihrer Anwendung vor sich geht.

Was ist Observability?

Beobachtbarkeit ist „die Fähigkeit, das Verhalten einer Anwendung zu beobachten, Engpässe zu erkennen und die performance zu verbessern“. Stellen Sie sich das wie eine bionische Brille für Ihre Anwendung vor – eine Möglichkeit, durch die Black Boxes hindurchzusehen und fundierte Entscheidungen zu treffen.

Wichtige Observability-Features

Moderne Observability-Tools wie blackfire bieten mehrere wichtige Funktionen:

  • Überwachung: Verfolgen Sie sowohl den CLI- als auch den HTTP-Datenverkehr in Ihrem gesamten Anwendungsstack.
  • Kontinuierliche Profilerstellung: Leichte Datenerfassung mit minimalem Overhead (0,05–0,1 % performance-Auswirkung), die in mehreren Sprachen funktioniert: PHP, Python, Node.js, Go, Ruby, Rust und Java.
  • Zeitrahmenvergleich: Vergleichen Sie ruhige Zeiten mit Lasttests oder dem tatsächlichen Black Friday-Datenverkehr, um die performance zu bewerten. Dieser visuelle Vergleich zeigt, welche Teile Ihrer Anwendung unter Last proportional mehr Ressourcen verbrauchen, und hilft so, Engpässe zu identifizieren.
  • Deterministisches Profiling: Tiefgreifendes, präzises Profiling für bestimmte Anfragen, das genau zeigt, wie Ihr Programm ausgeführt wird, einschließlich Schleifen, Funktionsaufrufen und Ressourcenverbrauch in allen Dimensionen.
  • Leistungstests: Automatisierte Leistungstests, die verhindern können, dass Leistungsrückgänge in der Produktivumgebung übernommen werden.
  • Infrastrukturüberwachung: Verfolgen Sie den HTTP-Verkehr und den Ressourcenverbrauch für alle Dienste und Container, um eine ordnungsgemäße Skalierung sicherzustellen.
  • Fundierte Entscheidungen treffen
  • Das Ziel besteht darin, die Benutzererfahrung zu verbessern, schnell Verbesserungsmöglichkeiten zu identifizieren und sicherzustellen, dass Ihre Anwendung effektiv skaliert wird. Unabhängig davon, ob Sie blackfire oder Alternativen verwenden, investieren Sie in Tools, die ähnliche Einblicke bieten.

4. Intelligente und granulare Skalierung

Der letzte Schritt besteht darin, zu verstehen, wie man effektiv skaliert. Dazu muss eine komplexe Frage beantwortet werden: „Welcher Teil Ihrer Anwendung benötigt welche Ressourcen, um welche Ergebnisse zu erzielen?“

Beginnen Sie mit Ihren Zielen

Definieren Sie Ihre Skalierungsszenarien:

  • Ruhige Zeiten (Basis-Traffic).
  • Spitzenzeiten (Black Friday, Produkteinführungen).
  • Zwischenszenarien.

Führen Sie für jedes Szenario Tests durch, bis Sie die genauen Anforderungen verstehen.

Identifizieren Sie präzise Anforderungen

Verwenden Sie Ihre Test- und Beobachtungstools, um Folgendes zu ermitteln:

  • Ressourcenanforderungen pro Container
  • Ob Sie Lastenausgleich benötigen (die Antwort ist nicht immer „Ja“)
  • Optimale Instanzanzahl für unterschiedliche Datenverkehrsaufkommen

Treffen Sie kosten- und performance-basierte Entscheidungen anhand realer Daten, nicht anhand von Annahmen.

Vergessen Sie die Worker nicht

Skalieren Sie Ihre Hintergrund-Mitarbeiter parallel zu Ihren Webanwendungen. Stellen Sie sicher, dass sie über ausreichende Ressourcen in ordnungsgemäß konfigurierten Containern verfügen.

Fein abgestimmte Ressourcenzuweisung

Upsun ermöglicht eine detaillierte Ressourcenzuweisung: Sie können einem Container mehr Speicher hinzufügen und gleichzeitig die CPU in einem anderen Container reduzieren, wo sie verschwendet wird. Sie können auch die Anzahl der Instanzen mit automatischer Lastverteilung skalieren.

Vermeiden Sie immer skalierte Lösungen

Viele Anwendungen laufen das ganze Jahr über mit maximaler Skalierung, weil ihre Hosting-Anbieter eine Skalierung nach oben und unten erschweren. Das verschwendet Geld und verursacht unnötige CO2-Emissionen. Finden Sie Lösungen, die eine dynamische Skalierung basierend auf dem tatsächlichen Bedarf ermöglichen.

Das ausfallsichere Anwendungsframework

Wenn Sie diese vier Strategien kombinieren, schaffen Sie ein ausfallsicheres Framework:

  1. Stresstests: Brechen Sie Ihre Anwendung systematisch in kontrollierten Umgebungen
  2. Produktionsklonen: Testen Sie an perfekten Kopien Ihrer Produktionsumgebung
  3. 360°-Beobachtbarkeit: Verstehen Sie, was während des Stresstests in Ihrer Anwendung vor sich geht
  4. Fein abgestimmte Skalierung: Skalieren Sie präzise auf der Grundlage realer Daten und Anforderungen

Die Auswirkungen in der Praxis

Erinnern Sie sich an den ursprünglichen Fehler? Der Engpass stellte sich als große Warenkörbe heraus, mit denen das Team nicht gerechnet hatte. Gruppen von Theaterbegeisterten kauften 50 bis 100 Tickets in einer einzigen Bestellung, was zu einer enormen Rechenlast für die Sitzplatzzuweisung, Preisberechnungen und Ticketgenerierung führte.

Das technische Problem war jedoch nur ein Symptom. Das eigentliche Problem war die Isolation des Teams von den tatsächlichen Nutzern. Sie entwickelten Features auf der Grundlage von Annahmen, anstatt zu verstehen, wie Veranstaltungsorte tatsächlich Tickets verkaufen.

„Wir waren in der Entwicklungsabteilung völlig isoliert und haben einfach Features aus einem Backlog ausgeliefert. Wir waren nicht mit den Leuten vor Ort zusammen, um zu sehen, wie sie tatsächlich arbeiten und wie sie tatsächlich verkaufen“, reflektiert Thomás.

Das Ziel ist eine Transformation: weg von Panik bei Veranstaltungen mit hohem Datenverkehr hin zu selbstbewusster Gelassenheit. Wenn Sie über geeignete Stresstests, Produktionsklonen, Beobachtbarkeit und Skalierung verfügen, können Sie den Black Friday mit dem Wissen angehen, dass Sie die vollständige Kontrolle haben.

Anstatt hektisch herumzurennen und zu versuchen, Probleme zu beheben, können Sie tatsächlich einen Drink genießen, während Sie die Systeme überwachen, von denen Sie wissen, dass sie jeden Traffic bewältigen können.

Eine kurze Frage-Antwort-Runde aus dem Publikum

F: Wie viel Überwachung ist ausreichend?
A: Führen Sie eine kontinuierliche Profilerstellung durch. Für die Überwachung von Anfragen ist eine Stichprobenrate von 10 % für viele Anwendungen ein guter Ausgangspunkt. Apps mit extrem hohem Datenverkehr können einen geringeren Datenverkehr erzielen und gleichzeitig die statistische Zuverlässigkeit aufrechterhalten. Die frühen Erfolge durch den Einsatz dieser Tools gleichen oft ihren Mehraufwand aus.

F: Was hat den ursprünglichen Ausfall verursacht?
A: Riesige Warenkörbe sowie eine aufwändige Sitzplatzzuweisung und Ticketlogik, kombiniert mit Entscheidungen, die mit Blick auf die Versand-Features getroffen wurden, ohne zu berücksichtigen, wie sich echte Benutzer am Tag der Markteinführung verhalten würden. Sogar Drucker wurden mit übergroßen Bildern gefüttert. Tests fehlten. Die Behebung begann mit der Beobachtung realer Arbeitsabläufe und der Straffung des Systems.

F: Wie vermeide ich falsches Vertrauen in performance-Tests?
A: Schreiben Sie performance-Tests neben Unit- und Integrationstests. Beginnen Sie mit den kritischsten Benutzerabläufen – testen Sie die Ursachen, nicht nur die Ergebnisse. Geben Sie beispielsweise „weniger als N SQL-Abfragen” anstelle von nur „unter 10 ms” an, damit Sie nicht aufgrund warmer Caches bestehen, während Sie die tatsächlichen Kosten verbergen.

F: Was ist mit Drittanbieterdiensten während Stresstests?
A: Richten Sie Vorschauumgebungen über Umgebungsvariablen auf Sandbox-Konten aus. Verwenden Sie Produktionszugangsdaten nur in der Produktivumgebung. Auf diese Weise können Sie sicher testen, ohne echte Kontingente zu verbrauchen.

Fazit

Warten Sie nicht, bis Sie selbst eine Katastrophe erleben. Beginnen Sie jetzt mit Stresstests, investieren Sie in geeignete Tools und bauen Sie Systeme auf, die mit Erfolg umgehen können. Ihr zukünftiges Ich und Ihre Benutzer werden es Ihnen danken, wenn der nächste Black Friday kommt und alles reibungslos funktioniert.

Der Unterschied zwischen einem erfolgreichen Event mit hohem Traffic und einem katastrophalen Ausfall liegt oft in der Vorbereitung. Machen Sie diese Vorbereitung zu einer Priorität und nicht zu einer Nebensache.

Bleiben Sie auf dem Laufenden

Abonnieren Sie unseren monatlichen Newsletter.

Ihr größtes Werk
steht vor der Tür

Kostenloser Test
UpsunFormerly Platform.sh

Join our monthly newsletter

Compliant and validated

ISO/IEC 27001SOC 2 Type 2PCI L1HIPAATX-RAMP
© 2026 Upsun. All rights reserved.