211service.com
El secreto detrás del crecimiento de Twitter
En el Web 2.0 Expo hoy en San Francisco, Alex Payne de Twitter discutió los detalles técnicos del lenguaje de programación que espera pueda ayudar a su empresa a manejar el aumento en el tráfico que ha experimentado en los últimos años. La compañía está dejando atrás un lenguaje de programación que le ha causado mucho dolor en el pasado y, en cambio, está adoptando un lenguaje nuevo y algo oscuro llamado Scala.
Algunos antecedentes: Twitter, un servicio que permite a las personas publicar mensajes de 140 caracteres a amigos y al público, se lanzó en 2006 y ahora se estima que tiene aproximadamente ocho millones de usuarios únicos. Cuando una persona publica un mensaje corto en Twitter, el servicio lo publica en la Web y lo envía a los teléfonos celulares de las personas y a las aplicaciones de software de Twitter. El concepto es simple, pero bajo el capó, la tecnología es más complicada.
El popular lenguaje de programación web Ruby on Rails es responsable de la apariencia de la interfaz de usuario de Twitter, así como la de muchos otros sitios web. Dado que la interfaz de usuario, conocida como el front-end, dependía de Ruby, también tenía sentido usar Ruby para operaciones de back-end como poner mensajes en cola. Pero a medida que la popularidad de Twitter creció, el back-end construido por Ruby no pudo manejar el torrente de mensajes que se le presentaron, una situación que creó la repentina popularidad de Falla ballena , el mensaje de error que Twitter envía a los usuarios cuando el servicio falla.
Entonces el equipo de Twitter recurrió a Escalera , un lenguaje de programación con su orígenes en el trabajo por Martin Odersky , profesor en EPFL en Lausana, Suiza, alrededor de 2003. Durante su presentación, Payne, quien también está escribiendo un libro sobre el idioma, explicó que Scala tiene muchos de los beneficios de otros idiomas pero sin los inconvenientes. Algunas de las características que hacen que Scala sea tan atractivo para Twitter es que puede manejar de manera eficiente el procesamiento simultáneo, es decir, instrucciones separadas que necesitan usar los recursos del sistema al mismo tiempo. Esto es útil cuando los mensajes de millones de personas deben enviarse instantáneamente a diferentes dispositivos en todo el mundo.
También es flexible para que lo utilicen los programadores, dice Payne. Si un programador quiere más estructura, Scala ofrece estructura, pero si quiere más programación de forma libre, también lo permite. Y lo que es más importante, para Payne y los ingenieros de Twitter, Scala es un lenguaje nuevo, emocionante y hermoso que mantiene al equipo comprometido. Todavía hay espacio para que los programadores sientan que están contribuyendo al desarrollo de algo nuevo y fresco. Este no es el caso de lenguajes más establecidos, como Java o C ++.
Scala no es perfecto, señala Payne, pero sus beneficios superan con creces sus inconvenientes. El inconveniente más evidente es que es algo difícil de aprender porque tiene un montón de características y una sintaxis con la que algunos programadores podrían no estar familiarizados, dice. Además, es relativamente nuevo, lo que significa que no tiene un historial probado. Pero Payne dice que él y Twitter están dispuestos a correr el riesgo porque el lenguaje ya funcionó bien en varios casos de prueba.
En este momento, el servicio de Twitter es un híbrido de lenguajes de programación, dice Payne. La interfaz de usuario se ejecuta en Ruby on Rails, lo que está bien para las personas que hacen clic en las páginas web, dice. Pero para fin de año, Twitter espera tener un conjunto de servicios en el back-end que estén escritos íntegramente en Scala. Y el plan de la empresa es asegurarse de que todos los servicios de terceros que se conectan a Twitter a través de la interfaz de programación de aplicaciones (API) pasen por el código Scala, sin pasar por Ruby on Rails por completo. Cuando se habla de un montón de programas que llegan rápidamente a la API, Payne dice: Descubrimos que podemos optimizar mejor las cosas ... usando Scala.