Últimamente no paramos de ver noticias sobre esa gran novedad llamada “Tiempo real”. Twitter es uno de los servicios que más lo está aprovechando con su API User Streams, aunque también lo tenemos en cosas tan cotidianas como el RSS con el impronunciable PubSubHubBub o el correo con las notificaciones push.
Sin embargo, uno no puede dejar de pensar que esto no es más que una tontería tecnológica, un capricho de los ingenieros de software para ver hasta dónde pueden llegar. ¿Es una chuchería la web en tiempo real, o puede resultar útil para los usuarios?
¿Qué es y cómo funciona el tiempo real?
La web en tiempo real requiere un esfuerzo de ingeniería muy grande. En el modelo tradicional son los clientes los que preguntan al servidor, lo que requiere poco trabajo por parte de éste. Las peticiones llegan y el servidor responde. Fácil y sencillo. El servidor no procesa más datos de los necesarios para dar la información que piden los clientes.
Cuando pasamos al modelo del tiempo real, las cosas cambian. Ahora el servidor tiene que preocuparse de dar la información a los clientes cuando ésta se genera. Para ello necesita un registro de clientes que tienen que recibir esa información, así que no sólo tiene que procesar los datos relativos a la información que va a dar sino que además tiene que preocuparse de decidir con quién conectar y cuándo hacerlo. No sólo eso, también tiene que gestionar las conexiones y desconexiones del sistema. Es decir, un método mucho más complejo que el tradicional.
¿Qué ventajas proporciona?
Con toda esa complejidad del tiempo real, alguna ventaja tenía que darnos. La primera es para los servidores. En la web tradicional, si de repente los 200.000 clientes de un servicio deciden hacer una petición todos a la vez, el servidor puede decir “hasta aquí hemos llegado” y bloquearse por saturación. Sin embargo, si son los servidores los que gestionan las conexiones estas situaciones no pueden ocurrir: el servidor distribuye de forma normal las conexiones de forma que no haya problemas de saturación, y evitando los DDoS involuntarios.
La siguiente ventaja es bastante obvia: la instantaneidad de la información. Cuando son las aplicaciones las que tienen que preguntar al servidor, normalmente lo hacen a intervalos. Si vamos encadenando varias aplicaciones (por ejemplo, si lees Genbeta desde Twitter, primero tienes que esperar a que el post llegue al RSS, que Twitterfeed lo mande a Twitter y que tu cliente lea el tweet), los intervalos se acumulan y podemos tener retardos bastante grandes. Con la web en tiempo real, estos intervalos desaparecen y la información llega con un retraso mínimo.
Otra ventaja es que genera menos tráfico de red. Si tu cliente de correo chequea cada cinco minutos si tienes mensajes nuevos, cada cinco minutos va a estar generando tráfico hayan o no hayan mensajes nuevos. Es decir, que estará creando bastante tráfico inútil. Sin embargo, si es el servidor el que avisa al cliente, sólo se produce tráfico cuando hay correo nuevo. Es decir, el tráfico generado es siempre tráfico útil.
Para un solo usuario puede resultar insignificante, pero si juntamos todo el tráfico inútil que se produce cada hora podemos tener una cantidad muy considerable de datos.
¿Y qué desventajas tiene la web en tiempo real?
La primera, como he comentado arriba, es la complejidad y la dificultad que conlleva hacer un sistema en tiempo real. Hay que exprimir los paquetes al máximo para quitar lo irrelevante y minimizar el tráfico que genera el servidor. Hay que preparar los clientes para que reciban señales del servidor y las procesen correctamente. Hay que programar el servidor para que gestione correctamente todas las conexiones, y para que decida a quién avisar y a quién no. Para el desarrollador del sistema es muchísimo más sencillo hacerlo sin tiempo real.
La segunda es el riesgo de infoxicación o sobrecarga de información. Si nos están llegando novedades continuamente en tiempo real podemos acabar completamente saturados: aunque veamos todo lo que nos llega no nos enteramos de nada o bien no filtramos lo que es de verdad importante, y acabamos desechando todo y esa fuente de información se vuelve inútil.
Otro riesgo, aunque bastante más personal, es la distracción. Si tenemos avisos saltando continuamente es más difícil centrarse en una tarea, lo que nos hace tener rendimiento muy bajo. Aunque esto ya pasa con los programas tradicionales y los intervalos de actualización, con programas en tiempo real se vería muy acrecentado. Por suerte, esto tiene una fácil y sencilla solución: el botón de salir.
Entonces, ¿es de verdad útil este “invento”?
Para mí, sí lo es. La razón principal no es la inmediatez, sino las mejoras en rendimiento. Los servidores, aunque se tienen que encargar de gestionar los avisos a clientes, se ahorran los DDoS involuntarios por demasiados clientes conectándose a la vez. El tráfico de red disminuye, algo bastante conveniente con las actuales tarifas para móviles, y las aplicaciones sólo consumen CPU (y por ende la batería) cuando es realmente necesario, y no cada X minutos de forma fija.
Como veis, el tiempo real es sobre todo útil para dispositivos móviles como los tablets y smartphones, donde nos preocupamos más por la batería y los datos que en los ordenadores de escritorio, donde las mejoras no son tan apreciables.
Es cierto que el tiempo real es en parte una chuchería creada por los ingenieros para ver hasta donde puede llegar la tecnología, pero eso no quita que no nos pueda resultar útil. Podemos encontrar ejemplos de aplicaciones que hacen uso del tiempo real y que son bastante útiles.
El agonizante Google Wave, que permite la edición de “olas” a la vez con varios colaboradores, es un ejemplo. En Wave no era el cliente (el navegador) quien se encargaba de descargar los nuevos cambios, sino que el servidor mandaba directamente las ediciones a los clientes. Si no fuese en tiempo real, la “ola” cambiaría a intervalos fijos, lo que sería muy ineficiente e incómodo.
Otro ejemplo son las notificaciones push, que funcionan en BlackBerry, iOS y Android, y que permiten que el cliente se despreocupe de preguntar si hay correo nuevo (por ejemplo) para que sea el servidor quien avise de forma instantánea.
Con esta entrada he pretendido aclarar un poco cómo funciona la web en tiempo real, y qué ventajas e inconvenientes tiene. Si tenéis algo que añadir o corregir, no dudéis ni un momento en usar los comentarios para hacerlo.
Imagen | Body Bytes | Erik Pitty