In passato, ho lavorato in una varietà di ambienti. App per desktop, giochi, roba incorporata, servizi Web, lavori a riga di comando, siti Web, rapporti di database e così via. Tutti questi ambienti condividevano lo stesso tratto: indipendentemente dalla loro complessità, indipendentemente dalle loro dimensioni, potevo sempre avere un sottoinsieme o una fetta dell'applicazione sul mio computer o in un ambiente di sviluppo da testare.
Oggi no. Oggi mi trovo in un ambiente il cui obiettivo primario è la scalabilità. Riprodurre l'ambiente è proibitivo. Prendendo una fetta dell'ambiente, mentre è plausibile (alcuni dei pezzi dovrebbero essere simulati, o usati in una modalità a istanza singola che non sono fatti per fare), blocca in qualche modo lo scopo poiché oscura la concorrenza e il caricamento che il vero sistema incontra. Anche un piccolo sistema di "test" ha i suoi difetti. Le cose si comportano diversamente quando hai 2 nodi e quando hai 64 nodi.
Il mio approccio abituale all'ottimizzazione (misurare, provare qualcosa, verificare la correttezza, misurare le differenze, ripetere) in realtà non funziona qui poiché non posso fare efficacemente i passaggi 2 e 3 per le parti del problema che contano (solidità della concorrenza e prestazioni sotto carico). Questo scenario non sembra però unico. Qual è l'approccio comune a svolgere questo tipo di attività in questo tipo di ambiente?
Ci sono alcune domande correlate: