Grande e piccolo

By abell on 2009-03-02-00:54:22 | In arduino ec2 cluster microcontroller physical computing

E' affascinante trovarsi a programmare per sistemi su scale diverse a quelle a cui ci si è abituati. I problemi da risolvere cambiano parecchio se ci si trova a dover utilizzare un processore a 8 bit con pochi kilobyte di ram (kilobyte, non giga, né mega) o un cluster di 1000 computer. In un caso, bisogna evitare qualsiasi spreco, nell'altro, usare strategie che siano in grado di funzionare bene su larga scala. Ci sono industrie basate sull'utilizzo di microcontroller e centri di calcolo che utilizzano grid con enormi quantità di server. Se non avete l'occasione di collaborare con le une o gli altri, ci sono però opportunità a portata di mano per sperimentare sistemi del genere e ampliare il proprio arsenale tecnologico, senza dover affrontare spese enormi.

Arduino è una piattaforma per il "physical computing". Si tratta di una basetta con processore dotata di una serie di input e output digitali e analogici e una porta USB. I canali di IO possono essere usati per pilotare LED o servomotori e leggere segnali da sensori di vario tipo. La programmazione avviene in un ambiente di sviluppo su PC e il programma viene poi riversato sul processore tramite il collegamento USB. Non c'è bisogno di ulteriori e costose parti hardware, tipo programmatori di EPROM, e il costo è contenuto (circa 25 euro per il solo Arduino, circa il doppio per un kit che aggiunge anche componenti elettroniche per sensori e attuatori).

All'altro estremo, il servizio EC2 di Amazon permette di utilizzare un numero arbitrario di server secondo le proprie necessità. Più che tecnologica, la grande novità è organizzativa e economica: è possibile attivare e disattivare i server in tempo reale e pagarli su base oraria. Avere 24 server per un'ora costa quanto avere un server per un giorno intero ed il prezzo è contenuto: dai 10 agli 80 centesimi di dollaro per un'ora-server. Immaginiamo di dover portare a termine un'operazione parallelizzabile che richiederebbe 10 giorni su un solo server. Possiamo prendere 300 server per un'ora (includendo un margine per eventuali inefficienze) e avremmo il risultato in tempi record, con una spesa di poche decine di euro.