View a markdown version of this page

GAMEOPS03-BP03 Frühzeitiger und häufiger Lasttest - Linse für die Spieleindustrie

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

GAMEOPS03-BP03 Frühzeitiger und häufiger Lasttest

Beim Auslastungstest wird der reale Verkehr auf einem System simuliert, um dessen Zuverlässigkeit und Leistung zu bewerten.

Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: Hoch

Implementierungsleitfaden

Auslastungstests sind ein wichtiger Faktor bei der Entwicklung einer Leistungsbasis für Ihre Ressourcen und beim Verständnis der Kapazität Ihres Systems. Dies kann als Grundlage für Finanzprognosen, Architekturdesign, Ressourcenzuweisung, automatisierte Skalierungskonfigurationen und Aktivitäten vor der Skalierung nach dem Start dienen. Weitere Vorteile:

  • Optimierte Infrastruktur: Ressourcen sind möglicherweise über- oder unterversorgt. Wenn Sie wissen, welche Ressourcen benötigt werden, können Sie die Kosten senken und die zu verwaltende Infrastruktur verringern.

  • Bereitschaft zur Skalierbarkeit: Bestimmte Mechanismen und Funktionen können dazu führen, dass Benutzer schnell in ein Spiel einsteigen. Zu wissen, wann und wie skaliert werden muss, kann den Unterschied zwischen der angemessenen Erfüllung der gestiegenen Nachfrage und dem Verlust von Spielern ausmachen. Verwenden Sie die Ergebnisse von Auslastungstests, um Runbooks mit Systemschwellenwerten, Warnpunkten und kritischen Warnpunkten auf unterschiedlichen Skalierungsebenen vorzubereiten.

  • Höherer Qualitätscode: Probleme wie übermäßiger Crosstalk zwischen Diensten, Datenbankabrufe ohne Batch, ineffiziente Algorithmen, Speicherlecks und Probleme mit der Beeinträchtigung von Diensten lassen sich manchmal leichter in größerem Umfang identifizieren.

  • Verhaltensvalidierung: Wenn Sie verschiedene Arten von Fehlern in Ihre Tests einbeziehen, können Sie das erwartete Verhalten des Systems validieren oder Probleme bei der Fehlerbehandlung aufdecken, die behoben werden müssen.

Idealerweise sollten Entwickler Lasttests an mehreren Stellen des Entwicklungsprozesses durchführen, da jeder unterschiedliche Vorteile mit sich bringen kann: Schon früh leiten sie Architekturentscheidungen und Refactoring-Bemühungen, während es billiger und einfacher ist, Änderungen vorzunehmen. Am Ende jedes Sprints oder jeder Iteration validieren sie die Leistung der Anwendung anhand der neuesten Features und Funktionen.

Vor der Bereitstellung in der Produktion wird durch groß angelegte Lasttests, bei denen zu erwartende reale Nutzungsmuster simuliert werden, bestätigt, dass das System in der Lage ist, die Produktionslast zu bewältigen. Nach der Bereitstellung überwachen regelmäßige Lasttests die Leistung des Systems und identifizieren Änderungen oder Engpässe, die im Laufe der Zeit auftreten können.

Um den Spielerverkehr zu simulieren, benötigen Sie einfache Clients oder Bots, die die Abläufe der Spielclients emulieren und Transaktionen mit dem Spiel-Backend durchführen, um das reale Spielerverhalten zu simulieren. Diese Daten werden im Allgemeinen anhand von Spielprotokollen und Daten erfasst, die durch von Menschen gesteuerte QA-Tests generiert wurden, sowie durch Alpha- oder Betatests in begrenztem Umfang unter realen Bedingungen, bei denen echte Spieler eingeladen werden, eine Early-Access-Version des Spiels zu spielen.

Es ist wichtig, das Verhalten des Systems in einem Runbook aufzuzeichnen, um mögliche Fehler in der future beheben zu können und Leistungskennzahlen beizubehalten, mit denen future Lasttests verglichen werden können. Es wird außerdem empfohlen, das Spiel während des Auslastungstests von menschlichem QA-Personal testen zu lassen, da sie möglicherweise Probleme entdecken, die Bots nicht identifizieren können und die Metriken nicht widerspiegeln.

AWS Der Fault Injection Service ist ein vollständig verwalteter Service für die Durchführung von Fault-Injection-Experimenten, mit denen die Leistung, Beobachtbarkeit und Stabilität einer Anwendung auf einfache Weise verbessert werden kann. Fault-Injection-Experimente werden im Bereich Chaos Engineering eingesetzt. Dabei handelt es sich um eine Praxis, bei der eine Anwendung in Test- oder Produktionsumgebungen durch störende Ereignisse wie einen plötzlichen Anstieg des CPU- oder Speicherverbrauchs belastet wird, beobachtet wird, wie das System reagiert, und Verbesserungen implementiert werden. Experimente zur Fehlerinjektion helfen Teams dabei, die realen Bedingungen zu schaffen, die erforderlich sind, um versteckte Fehler aufzudecken, blinde Flecken zu überwachen und Leistungsengpässe zu überwachen, die in verteilten Systemen schwer zu finden sind.

Implementierungsschritte

  • Richten Sie mithilfe von Guidance for Kubernetes-Bases Game Load Testing eine Umgebung für verteilte Lasttests ein.

  • Passen Sie Locust Control und Worker Pods innerhalb des EKS-Clusters mithilfe der bereitgestellten Bereitstellungsdateien an und implementieren Sie sie, um eine skalierbare und verwaltbare Lastgenerierung zu ermöglichen.

  • Erfassen Sie das Systemverhalten und die Messwerte während des Auslastungstests in einem Runbook, um Sie bei der future Fehlerbehebung zu unterstützen und Leistungsbasislinien festzulegen.

  • Verwenden Sie Fault-Injection-Experimente, um Störungen in der realen Welt zu simulieren und versteckte Probleme in Bezug auf Systemleistung, Beobachtbarkeit und Ausfallsicherheit aufzudecken.