211service.com
Il segreto della crescita di Twitter
Al Expo Web 2.0 oggi a San Francisco, Alex Payne di Twitter ha discusso i dettagli tecnici del linguaggio di programmazione che spera possa aiutare la sua azienda a gestire l'aumento del traffico che ha sperimentato negli ultimi anni. L'azienda si sta lasciando alle spalle un linguaggio di programmazione che gli ha causato molto dolore in passato e abbraccia invece un linguaggio nuovo e un po' oscuro chiamato Scala.
Alcuni retroscena: Twitter, un servizio che consente alle persone di inviare messaggi di 140 caratteri ad amici e al pubblico, è stato lanciato nel 2006 e si stima che ora contenga circa otto milioni di utenti unici. Quando una persona pubblica un breve messaggio su Twitter, il servizio lo pubblica sul Web e lo invia ai telefoni cellulari e alle applicazioni software di Twitter. Il concetto è semplice, ma sotto il cofano la tecnologia è più complicata.
Il popolare linguaggio di programmazione Web Ruby on Rails è responsabile dell'aspetto dell'interfaccia utente di Twitter, così come di quella di molti altri siti web. Poiché l'interfaccia utente, nota come front-end, si basava su Ruby, aveva senso utilizzare Ruby anche per operazioni di back-end come l'accodamento dei messaggi. Ma con l'aumentare della popolarità di Twitter, il back-end creato da Ruby non è stato in grado di gestire il torrente di messaggi che arrivava sulla sua strada, una situazione che ha creato l'improvvisa popolarità del Fallire la balena , il messaggio di errore che Twitter invia agli utenti ogni volta che il servizio si arresta in modo anomalo.
Quindi il team di Twitter si è rivolto a Scala , un linguaggio di programmazione con i suoi origini al lavoro da Martin Odersky , professore a EPFL a Losanna, in Svizzera, intorno al 2003. Durante la sua presentazione, Payne, che sta anche scrivendo un libro sulla lingua, ha spiegato che Scala ha molti dei vantaggi di altre lingue ma senza gli svantaggi. Alcune delle caratteristiche che rendono Scala così attraente per Twitter è che è in grado di gestire in modo efficiente l'elaborazione simultanea, ovvero istruzioni separate che devono utilizzare le risorse del sistema contemporaneamente. Questo è utile quando i messaggi di milioni di persone devono essere inviati istantaneamente a diversi dispositivi in tutto il mondo.
È anche flessibile da usare per i programmatori, afferma Payne. Se un programmatore vuole più struttura, Scala offre la struttura, ma se vuole una programmazione più libera, consente anche questo. E, cosa importante, per Payne e gli ingegneri di Twitter, Scala è un linguaggio nuovo, entusiasmante e bello che tiene impegnato il team. C'è ancora spazio per i programmatori per sentirsi come se stessero contribuendo allo sviluppo di qualcosa di nuovo e fresco. Questo non è il caso di linguaggi più affermati, come Java o C++.
Scala non è perfetto, osserva Payne, ma i suoi vantaggi superano di gran lunga i suoi svantaggi. Lo svantaggio più evidente è che è un po' difficile da imparare perché ha un sacco di funzioni e una sintassi con cui alcuni programmatori potrebbero non avere familiarità, dice. Inoltre, è relativamente nuovo, il che significa che non ha una comprovata esperienza. Ma Payne dice che lui e Twitter sono disposti a correre il rischio perché il linguaggio ha già funzionato bene in una serie di casi di test.
In questo momento il servizio di Twitter è un ibrido di linguaggi di programmazione, afferma Payne. L'interfaccia utente funziona su Ruby on Rails, il che va bene per le persone che fanno clic sulle pagine Web, dice. Ma entro la fine dell'anno, Twitter spera di avere una serie di servizi nel back-end scritti interamente in Scala. Ed è il piano dell'azienda assicurarsi che tutti i servizi di terze parti che si connettono a Twitter tramite l'interfaccia di programmazione dell'applicazione (API) passino attraverso il codice Scala, aggirando completamente Ruby on Rails. Quando parli di un sacco di programmi che colpiscono rapidamente l'API, dice Payne, abbiamo scoperto che possiamo ottimizzare meglio le cose...usando Scala.