View a markdown version of this page

GAMEOPS03-BP03 Test di caricamento precoce e frequente - Games Industry Lens

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

GAMEOPS03-BP03 Test di caricamento precoce e frequente

Il test di carico è il processo di simulazione del traffico reale su un sistema per valutarne l'affidabilità e le prestazioni.

Livello di rischio associato se questa best practice non fosse adottata: elevato

Guida all’implementazione

Il test di carico è un fattore chiave per lo sviluppo di una base prestazionale per le risorse e la comprensione della capacità del sistema, che può guidare le previsioni finanziarie, la progettazione dell'architettura, l'allocazione delle risorse, le configurazioni di scalabilità automatizzate e le attività di pre-scalabilità post-lancio. I vantaggi aggiuntivi includono:

  • Infrastruttura ottimizzata: il provisioning delle risorse potrebbe essere eccessivo o insufficiente. La comprensione delle risorse necessarie comporterà una riduzione dei costi e una minore infrastruttura da gestire.

  • Predisposizione alla scalabilità: alcuni meccanismi e funzionalità possono spingere gli utenti a iniziare rapidamente a giocare. Sapere quando e come scalare può fare la differenza tra soddisfare adeguatamente l'aumento della domanda e perdere giocatori. Utilizza i risultati dei test di carico per preparare i runbook con soglie di sistema, punti di avviso e punti di avviso critici a diversi livelli di scala.

  • Codice di qualità superiore: problemi come l'eccessiva diafonia tra i servizi, le chiamate al database non in batch, gli algoritmi inefficienti, le perdite di memoria e i problemi di degrado del servizio sono a volte più semplici da identificare su larga scala.

  • Convalida del comportamento: l'inserimento di diversi tipi di errori nei test può convalidare il comportamento previsto del sistema o scoprire problemi di gestione degli errori che devono essere corretti.

Idealmente, gli sviluppatori dovrebbero eseguire i test di carico in più punti durante il processo di sviluppo, poiché ognuno di essi può offrire vantaggi diversi: nella fase iniziale, guidano le decisioni sull'architettura e le attività di refactoring, mentre è più economico e semplice apportare modifiche. Alla fine di ogni sprint o iterazione, convalidano le prestazioni dell'applicazione con le caratteristiche e le funzionalità più recenti.

Prima dell'implementazione in produzione, i test di carico su larga scala che simulano i modelli di utilizzo previsti nel mondo reale confermano la capacità del sistema di gestire il carico di lavoro di produzione. Dopo l'implementazione, i test di carico periodici monitorano le prestazioni del sistema e identificano i cambiamenti o le strozzature che possono insorgere nel tempo.

Per simulare il traffico dei giocatori, sono necessari client o bot leggeri che emulino i flussi del client di gioco e che interagiscano con il backend del gioco per simulare il comportamento dei giocatori nel mondo reale. Questi dati vengono generalmente acquisiti attraverso i log di gioco e i dati generati da test di controllo qualità condotti da persone, nonché attraverso alfa o beta test reali su scala limitata in cui i giocatori reali sono invitati a giocare a una versione del gioco ad accesso anticipato.

È importante registrare il comportamento del sistema in un runbook operativo per facilitare la risoluzione di possibili guasti futuri e conservare i parametri prestazionali con cui confrontare i test di carico futuri. Si consiglia inoltre di far testare il gioco da personale addetto al controllo qualità durante il test di carico, in quanto potrebbe scoprire problemi che i bot non riescono a identificare e che le metriche non riflettono.

AWS Fault Injection Service è un servizio completamente gestito per l'esecuzione di esperimenti di iniezione dei guasti che semplificano il miglioramento delle prestazioni, dell'osservabilità e della resilienza di un'applicazione. Gli esperimenti di iniezione dei guasti vengono utilizzati nell'ingegneria del caos, ovvero la pratica di stressare un'applicazione in ambienti di test o di produzione creando eventi dirompenti, come un aumento improvviso del consumo di CPU o memoria, osservando la risposta del sistema e implementando miglioramenti. Gli esperimenti di iniezione dei guasti aiutano i team a creare le condizioni reali necessarie per scoprire i bug nascosti, monitorare i punti ciechi e le strozzature prestazionali difficili da individuare nei sistemi distribuiti.

Passaggi dell’implementazione

  • Configura un ambiente di test di carico distribuito utilizzando Guidance for Kubernetes-Bases Game Load Testing.

  • Personalizza e distribuisci Locust Control e Worker Pods all'interno del cluster EKS utilizzando i file di distribuzione forniti, abilitando una generazione di carico scalabile e gestibile.

  • Registra il comportamento e le metriche del sistema durante i test di carico in un runbook operativo per facilitare la risoluzione dei problemi futuri e stabilire le linee di base delle prestazioni.

  • Utilizza esperimenti di fault injection per simulare interruzioni nel mondo reale e scoprire problemi nascosti nelle prestazioni, nell'osservabilità e nella resilienza del sistema.