View a markdown version of this page

GAMEOPS05-BP01 Wählen Sie die richtige Phase, Architektur und das richtige Lasttesting-Framework, um Ihre Ziele zu erreichen - 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.

GAMEOPS05-BP01 Wählen Sie die richtige Phase, Architektur und das richtige Lasttesting-Framework, um Ihre Ziele zu erreichen

Die Vorgehensweise beim Auslastungstest eines Spiels kann stark variieren. Dies hängt von vielen Faktoren ab, darunter der Phase des Entwicklungsprozesses, in dem das Spiel durchgeführt wird, der Architektur des lastgenerierenden Systems selbst und der Wahl des Frameworks für Lasttests. Der Zeitpunkt, zu dem die Tests durchgeführt werden, sei es in den frühen Phasen, während iterativer Sprints, vor der Produktionsbereitstellung oder nach der Bereitstellung, bestimmt die Ziele und den Schwerpunkt der Testbemühungen. Verschiedene Designs der lastgenerierenden Infrastruktur haben ihre eigenen Vor- und Nachteile, und die Auswahl des Lasttesting-Frameworks hat großen Einfluss auf die Funktionen, die Benutzerfreundlichkeit und die Integrationen, die für den Testprozess zur Verfügung stehen. Durch die sorgfältige Abstimmung dieser Elemente können Entwicklungsteams den Lasttestansatz an die einzigartigen Eigenschaften des Spiels anpassen, die wertvollsten Erkenntnisse zur Leistung gewinnen und ihren Spielern ein reibungsloses Spielerlebnis bieten.

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

Implementierungsleitfaden

Belastungstests in verschiedenen Entwicklungsphasen

Durch die Durchführung von explorativen Lasttests zu Beginn der Entwicklungsphasen kann die zugrunde liegende Systemarchitektur validiert werden. Dies hilft Entwicklern, fundierte Entscheidungen über die Infrastruktur, das Datenbankdesign und die Netzwerktopologie des Spiels zu treffen, bevor umfangreiche Implementierungsarbeiten durchgeführt werden. Belastungstests identifizieren Risiken und schaffen eine Leistungsbasis, wodurch der Bedarf an kostspieligen Nacharbeiten und technischen Schulden zu einem späteren Zeitpunkt im Entwicklungszyklus potenziell minimiert wird. Sie können auch ein gemeinsames Verständnis der Leistungsanforderungen des Spiels innerhalb des Teams fördern, was zu einer besseren Zusammenarbeit und Entscheidungsfindung führt. Letztlich bilden Belastungstests in den Anfangsphasen eine solide Grundlage für ein leistungsstarkes, skalierbares und robustes Spiel und tragen so dazu bei, das Spielerlebnis insgesamt zu verbessern.

Am Ende jedes Sprints oder jeder Iteration können Lasttests die Auswirkungen der neuen Funktionen, Bugfixes und anderer Änderungen, die im letzten Zyklus eingeführt wurden, auf die Leistung bewerten. Dieser gezielte Ansatz ermöglicht es Entwicklungsteams, Regressionen oder Leistungseinbußen, die durch die neuesten Updates verursacht wurden, schnell zu erkennen, sodass sie diese Probleme beheben können, bevor sie sich weiter in der Pipeline ausbreiten, und ein konsistentes Qualitäts- und Leistungsniveau aufrechterhalten.

Vor der Bereitstellung in der Produktion unterstützen robuste Lasttests die Teams dabei, zu überprüfen, ob das System in der Lage ist, die erwarteten realen Verkehrs- und Lastbedingungen zu bewältigen. Sie können Skalierbarkeitsengpässe oder Ressourcenengpässe innerhalb der Produktionsinfrastruktur aufdecken und bieten die Möglichkeit, die Leistung des Spiels zu optimieren, sodass vom ersten Tag an ein reibungsloses und reaktionsschnelles Benutzererlebnis gewährleistet ist. Die Erkenntnisse aus den Belastungstests vor der Veröffentlichung können die Risiken am Tag der Veröffentlichung minimieren und als Grundlage für die laufende Kapazitätsplanung dienen, die den Grundstein für die langfristige Nachhaltigkeit und Skalierbarkeit des Spiels legt.

Durch Auslastungstests eines Spiels, das sich bereits in der Produktion befindet, können Teams die Leistung des Spiels überwachen und Leistungsrückgänge oder -verschlechterungen erkennen, die im Laufe der Zeit auftreten können. Auf diese Weise können sie Probleme proaktiv angehen, bevor sie sich auf das Spielerlebnis und die Nutzerbindung negativ auswirken. Darüber hinaus validieren Belastungstests in der Produktion die Wirksamkeit der implementierten Maßnahmen zur Leistungsoptimierung oder zur Skalierung der Infrastruktur. Dieser Prozess bietet Spielern ein qualitativ hochwertiges, responsives und skalierbares Spielerlebnis, auch wenn sich das Spiel weiterentwickelt und reift.

Architekturen, die Lasten erzeugen

Das Design der lastgenerierenden Architektur für Spiellasttests kann verschiedene Formen annehmen, von denen jede ihre eigenen Vorteile und Überlegungen mit sich bringt. 

Auf der einfachsten Ebene können selbstverwaltete EC2Amazon-Instances bereitgestellt und konfiguriert werden, um als Lastgeneratoren zu fungieren. Mit einem Ansatz mit Kontrollknoten und Worker-Knoten können Sie mehrere lastgenerierende Instances einrichten, von denen jede ihr eigenes Testskript ausführt und die insgesamt von einer einzigen Kontrollinstanz verwaltet werden. Die Architektur kann skaliert und mehr Last erzeugt werden, ohne die Komplexität zu erhöhen, indem zusätzliche Worker-Knoten eingerichtet werden. Bei diesem praxisorientierten Ansatz müssen sich die Teams jedoch um die Bereitstellung, Konfiguration und Verwaltung der zugrunde liegenden Infrastruktur kümmern.

Für einen skalierbareren und orchestrierteren Ansatz können Sie Amazon EKS Kubernetes-Cluster verwenden, um den Lasttesting-Workload auf eine Flotte von containerbasierten Load Agents zu verwalten und zu verteilen. Die automatischen Skalierungsfunktionen von Kubernetes können für die Skalierung der Load generierenden Pods verwendet werden, während die Teams die zugrunde liegenden EC2 Instances in dem Cluster, der die Pods hostet, selbst konfigurieren und verwalten. 

Alternativ AWS Fargatekann der serverlose Charakter von die Einrichtung von Lasttests beschleunigen und vereinfachen, indem das Infrastrukturmanagement abstrahiert wird und gleichzeitig die erforderliche Skalierbarkeit und Flexibilität gewährleistet wird. Für Hybridlösungen, bei denen bereits ein lokaler, lastgenerierender Kubernetes-Cluster vorhanden ist, aber möglicherweise zusätzliche Kapazität benötigt wird, kann EKS Anywhere beide Cluster als einen Cluster aus dem verwalten. AWS-Managementkonsole

Sie können je nach Ihren Anforderungen und Zielen auch AWS LambdaFunktionen verwenden. Lambda-Funktionen lassen sich relativ einfach einrichten und skalieren, ohne dass zusätzliche Ressourcen bereitgestellt und verwaltet werden müssen. Sie ermöglichen auch die Erstellung komplexerer und dynamischerer Testszenarien aufgrund der tiefen Integration mit anderen AWS Diensten. Lambda-Funktionen haben jedoch Beschränkungen für gleichzeitige Funktionen und Laufzeit (15 Minuten), was den Umfang und die Dauer der erreichbaren Lasttests einschränken kann. Kaltstartlatenzen können sich auch auf die Genauigkeit der Ergebnisse auswirken, und die Ressourcenbeschränkungen von Lambda sind möglicherweise nicht für sehr anspruchsvolle Lasttestworkloads geeignet.

Studios, die eine vorgefertigte Lösung verwenden möchten, können Distributed Load Testing auf verwenden. AWS Diese Lösung nutzt Amazon AWS Fargate ECS für die Bereitstellung von Containern, mit denen Simulationen von Zehntausenden verbundenen Benutzern ausgeführt werden können. Sie können dies verwenden, um Ihre Lasttestinfrastruktur schnell auf IAC-Art zu starten. AWS CloudFormation

Frameworks für Lasttests

Keine zwei Lasttest-Frameworks sind gleich aufgebaut. Einige verfügen über intuitive grafische Benutzeroberflächen für die Testerstellung, während andere vollständig auf der Befehlszeile basieren. Ein Tool kann flexibel und leistungsstark sein, erfordert jedoch Zeit und Mühe für die Konfiguration und Verwaltung, und ein anderes ist möglicherweise serverlos, aber in Bezug auf die Tests, die es erstellen und ausführen kann, eingeschränkt. Einige verfügen über große Communitys und zahlreiche Tutorials, obwohl sie sich in der Praxis noch nicht bewährt haben, was einen starken Kontrast zu anderen darstellt, die zwar in der Produktion erprobt sind, denen es jedoch an Unterstützung oder Dokumentation durch die Community mangelt. Wählen Sie das Framework, das die richtige Balance für Sie und Ihr Team bietet. Einige beliebte Optionen sind:

  • Apache JMeter: Beliebtes Java-basiertes Open-Source-Framework für Lasttests aufgrund seines robusten Funktionsumfangs und seiner Benutzerfreundlichkeit. Die Fähigkeit, komplexe Benutzerszenarien zu simulieren, die breite Palette unterstützter Protokolle, die umfassende Berichterstattung und die nachgewiesene Erfolgsbilanz machen es zu JMeter einer zuverlässigen Wahl für Lasttests.

  • Locust: Modernes, verteiltes Lasttesting-Framework, das auf einer ereignisgesteuerten Architektur basiert, wodurch es leistungsstark und gleichzeitig ressourceneffizient ist. Tests sind in Python geschrieben, was flexible Testszenarien ermöglicht, die Tausende von leistungsstarken Bibliotheken von Drittanbietern nutzen und gleichzeitig benutzerfreundlich und einfach zu lesen sind.

  • Grafana K6: Leistungsstarkes Lasttest-Framework, das Benutzerfreundlichkeit mit erweiterten Funktionen kombiniert. Die Unterstützung für die Generierung verteilter Lasten, das flexible Scripting und die nahtlose Integration mit Grafana zur Datenvisualisierung machen Grafana K6 zu einer attraktiven Wahl.

  • Gatling: Open-Source-Framework für Lasttests, das für seine Leistung und Skalierbarkeit bekannt ist. Die auf Scala basierende, domänenspezifische Sprache (DSL) ermöglicht es Entwicklern, präzise, wartungsfreundliche Lasttestskripte zu erstellen, und die robusten Berichts- und Analysefunktionen bieten detaillierte Einblicke in das zu testende System.

Implementierungsschritte

  • Belastungstestphasen: Führen Sie Lasttests in verschiedenen Entwicklungsphasen durch (frühe Entwicklung, Sprints, Vorproduktion und nach der Bereitstellung), um die Systemleistung zu überprüfen und Probleme zu identifizieren.

  • Lastgenerierende Architekturen: Wählen Sie geeignete lastgenerierende Architekturen (EKSEC2, Fargate oder Lambda) auf der Grundlage von Skalierbarkeitsanforderungen, Managementpräferenzen und spezifischen Testanforderungen aus.

  • Lasttesting-Frameworks: Wählen Sie ein Lasttesting-Framework (wie JMeter Locust, Grafana K6 oder Gatling), das Benutzerfreundlichkeit, Leistung, Flexibilität und Community-Support in Einklang bringt, um den Bedürfnissen Ihres Teams gerecht zu werden.