Attualmente sto lavorando su un'architettura che abbia la seguente struttura:
(central server)
/ | \
(local server) (local server) (local server)
/ | | | | \
(PC) ... (PC) (PC) ... (PC) (PC) ... (PC)
C'è un server centrale che comunica con più server locali (oltre 100) e ogni server locale parla con più PC.
Il server centrale riceve una grande quantità di dati ogni giorno più volte al giorno e dopo una certa manipolazione sincronizza i dati sul server locale, dopo che i server locali hanno diffuso i dati sui loro PC.
Tutte queste macchine comunicano tra loro tramite richieste HTTP, ogni scambio di dati avviene con un POST HTTP di un file JSON.
È fondamentale che tutte le informazioni ricevute dal server centrale siano correttamente ricevute e archiviate sul server locale prima e sul PC dopo.
Ora devo testare se la sincronizzazione funziona correttamente e voglio automatizzare i test in modo che uno script venga eseguito continuamente sul server centrale e controllare se i dati appena arrivati sono sincronizzati con le macchine sottostanti.
Quindi la mia prima domanda è: ha senso testare ogni volta TUTTI i dati ricevuti dal server centrale? (Stiamo parlando di decine di migliaia di voci di database per ogni singolo server locale, quindi centinaia di migliaia in totale.)
Anche per i PC le prestazioni sono un grosso problema, non posso rubare troppe risorse CPU o RAM da loro.
Se la risposta è no, ha senso testare solo un sottoinsieme dei dati presi casualmente?
Se no, qual è il modo migliore per agire?
UPDATE I dati vengono passati al server locale in questo modo: Un servizio sul server centrale riceve i dati e li archivia su un database, viene chiamato un altro servizio, questo preleva i dati dal database in formato COPY e colloca COPY in un file. Il file viene inviato al server locale tramite una richiesta HTTP POST.