Vorrei approfondire il recente blog di Paul: "I vostri test di pre-produzione sono efficaci? Paul ha parlato dell'utilizzo della CPU e dei percorsi del codice, ma c'è un altro aspetto molto importante di molte applicazioni: l'utilizzo della rete. Molte applicazioni sono testate in un ambiente LAN con latenze nella gamma dei sub-millisecondi e larghezza di banda di almeno 100 mbps. Vengono poi distribuite per essere utilizzate su una WAN con larghezze di banda più piccole e latenze molto più elevate. Il risultato può essere un disastro.
Mentre i test in un ambiente LAN scopriranno la maggior parte dei bug relativi alla rete, potrebbero esserci bug relativi a pacchetti caduti o segmentazione inaspettata (il TCP NON manterrà i confini dei messaggi) che è meno probabile che si vedano in un ambiente LAN. È anche molto meno probabile che si noti un design non ottimale in un ambiente LAN veloce e poi in un ambiente WAN lento. È quindi molto importante testare qualsiasi applicazione basata sulla rete nell'ambiente di rete peggiore previsto, con una bassa larghezza di banda, alte latenze e non dimenticare le percentuali di perdita di pacchetti.
Ci sono due modi per farlo.
Il primo è quello di utilizzare l'ambiente reale. Mettere il server (o client) su un host in rete e vedere come funziona. Questo ha il vantaggio di utilizzare l'infrastruttura reale. Lo svantaggio è che non si ha alcun controllo sull'ambiente, cosa che è critica quando si cerca di duplicare un problema o di testare un bug fix.
Il secondo è quello di utilizzare un simulatore WAN. Esistono solo simulatori hardware e software, commerciali e open source (gratuiti). Il vantaggio è che si ha il controllo totale della latenza, della velocità di caduta dei pacchetti e di altri parametri di rete, e non è necessario coinvolgere altri gruppi (cioè mettere il software sul sistema di qualcun altro). Lo svantaggio è il costo e la curva di apprendimento. Anche se usate software libero dovete fornire un sistema (tipicamente un po' di Unix) su cui eseguirlo e imparare ad usarlo. Diversi anni fa ho scritto un tutorial su Dummynet. All'epoca era uno dei pochi simulatori gratuiti disponibili. Ora ce ne sono molti altri, basta cercare su Google "wan simulatore".
In base alla mia esperienza nell'analisi delle prestazioni e dei problemi di malfunzionamento delle applicazioni, credo che questo tipo di test si ripagherà più di quanto non si ripaghi con una riduzione delle interruzioni di produzione dovute a bug e un aumento delle prestazioni sia dell'applicazione che dei suoi utenti.