

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
<a name="gameops03-bp03"></a>

 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
<a name="implementation-guidance-5"></a>

 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](https://aws.amazon.com/fis/) è 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
<a name="implementation-steps-5"></a>
+  [Configura un ambiente di test di carico distribuito utilizzando Guidance for Kubernetes-Bases Game Load Testing.](https://aws.amazon.com/solutions/guidance/kubernetes-based-game-load-testing-on-aws/) 
+  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. 