El portal europeo de apuestas bet365 sobre cómo el lenguaje de programación Erlang y el almacén de datos NoSQL Riak le está ayudando a manejar millones de transacciones a la vez.
La necesidad de ampliar los servicios en línea para mantener el ritmo de la creciente demanda es un reto familiar para las empresas modernas.
El portal de apuestas online bet365 puede gestionar hasta dos millones de apuestas a la vez y el servicio a un número cada vez mayor de clientes ha supuesto que la empresa con sede en el Reino Unido dedicara gran parte de su tiempo a la reelaboración de sistemas basados en el lenguaje de programación Java.
«Debido a que seguimos creciendo a tal ritmo, tuvimos que rediseñar constantemente muchos de nuestros sistemas centrales, no para entusiasmar a nuestros clientes y crear nuevos productos que generen ingresos, sólo para manejar la carga», dijo Dan Macklin, director de I+D de bet365.
La empresa, que procesó más de 26.500 millones de libras esterlinas en apuestas durante el pasado ejercicio, necesitaba resolver lo que Macklin llama el «dilema de la innovación de escala».
«Todo su equipo está cambiando constantemente el mismo software de escala, por lo que ya no se puede hacer ninguna innovación, y cuando se hace la innovación se preocupa `¿Puede escalar?
Para distribuir mejor la carga, bet365 eligió construir sistemas clave en el lenguaje de programación Erlang y mantener la consistencia de los datos, cuando se distribuyen a través de muchas máquinas diferentes, se decidió por el almacén de datos NoSQL Riak.
Erlang es un lenguaje de programación creado por la empresa sueca de telecomunicaciones Ericsson hace casi tres décadas para ayudar a construir aplicaciones de telefonía. El lenguaje fue diseñado para soportar enrutamiento a gran escala de llamadas telefónicas y manejar fallas sin colapsar, lo que lo convierte en una buena opción para construir sistemas similares hoy en día.
«Elegimos Erlang por su simplicidad, fiabilidad y escalabilidad. Si se observa lo que ocurría con los conmutadores telefónicos en la década de 1990, se pueden establecer algunos paralelismos con los sistemas web modernos de hoy en día».
Uno de ellos fue el sistema de mensajes Push de bet365 que muestra a los jugadores las probabilidades cambiantes cuando realizan apuestas durante un evento deportivo, lo que se conoce como apuestas In-Play. Para funcionar, el sistema necesita entregar información actualizada a hasta dos millones de clientes a la vez.
«El objetivo es que la información sobre las apuestas -los cambios de precio y de puntuación- llegue a todos esos clientes lo más rápido posible y con una latencia mínima», dijo Macklin.
Erlang ayuda a bet365 a transmitir probabilidades actualizadas dividiendo el trabajo que se debe realizar en millones de tareas que se pueden ejecutar en paralelo. En pocas palabras, a nivel técnico, Erlang puede manejar cientos de miles de procesos aislados y ligeros en cada servidor de 32 núcleos. Estos procesos se ejecutarán simultáneamente y si uno de ellos falla, se reiniciará automáticamente sin afectar a sus vecinos. Como dice Macklin, «con Erlang dejas que se estrelle».
«En lugar de tener grandes interrupciones del sitio cuando hay un problema, terminamos con problemas mucho más finos y manejables con los que podemos lidiar».
Es un ejemplo de lo que se llama un problema vergonzosamente paralelo, en el que el trabajo que hay que hacer se puede dividir en muchas tareas que se pueden llevar a cabo en tándem. No sólo eso, sino que cada tarea es independiente entre sí, sin tener que esperar a que se complete ninguna otra tarea.
La destreza técnica de Erlang para manejar este tipo de tareas es la razón por la que WhatsApp de Facebook utiliza Erlang para manejar las decenas de miles de millones de mensajes enviados por el servicio cada día.
«Erlang es un lenguaje muy pequeño, con confiabilidad y escalabilidad incorporadas como base central», dijo Macklin.
«Hemos descubierto que podemos hacer funcionar las cosas mucho más en paralelo, usar más de la CPU en la caja y, como la semántica de concurrencia es a través del paso de mensajes, simplifica enormemente el software que estamos escribiendo».
El código compacto y modular habilitado por Erlang ha resultado en una «reducción masiva» del tamaño de las aplicaciones en comparación con Java, lo que a su vez ha permitido a bet365 «reducir masivamente las pruebas».
La facilidad con la que Erlang maneja vergonzosamente problemas paralelos también llevó a que fuera seleccionado para construir un nuevo sistema que maneja la oferta de Cash Out de bet365, que permite a la gente reclamar dinero de una apuesta antes de que el evento en el que apostaron haya concluido.
«Ese es un problema muy difícil porque para las actualizaciones de las probabilidades tenemos que calcular todos esos cambios de probabilidades para cada apuesta abierta que tenemos en el sistema».
Sin embargo, Erlang no es una bala de plata, mientras que mastica problemas vergonzosamente paralelizables con facilidad, hay lenguajes cuyo rendimiento se adapta mucho mejor a tareas tales como el crujido de números o la construcción de una interfaz de usuario. Alrededor del 10 por ciento de los 300 desarrolladores de bet365 ahora usan Erlang, y Macklin dice que mientras que su sintaxis desconocida estaba inicialmente desviando a los desarrolladores que venían de Java, aquellos que hicieron el cambio lo encuentran como un lenguaje «estimulante intelectual».
Protección de datos vitales
Más allá de encontrar una forma de construir aplicaciones que pudieran escalar fácilmente con la demanda, bet365 necesitaba hacer sus datos igualmente flexibles.
bet365 utiliza Microsoft SQL Server como su base de datos principal, pero donde los datos necesitan ser manipulados en masa, la empresa está utilizando cada vez más el almacén de datos NoSQL Riak.
«Con respecto a SQL, sin esfuerzo, llevamos las cosas lo más alto posible y nos dimos cuenta de que con Riak somos capaces de construir sistemas simples que funcionan a la escala que necesitamos. Es una gran inversión decidir destruir su infraestructura SQL porque cuesta mucho dinero y añade mucha complejidad».
bet365 utiliza Riak para respaldar su sistema de retiro de dinero y en algunos de sus procesos de transacción. Mientras que muchas bases de datos NoSQL ofrecen escalabilidad, Macklin dijo que bet365 eligió a Riak por las garantías que proporciona sobre la precisión de los datos.
«La parte más difícil es equilibrar la escalabilidad con la corrección», dijo.
«En varios escenarios quieres asegurarte de no perder la mitad de tus datos.»
Macklin dice que el enfoque que muchos almacenes de datos NoSQL de la competencia toman para resolver los problemas de acceso a los datos puede resultar en tal pérdida. Estos problemas pueden surgir cuando varias máquinas intentan actualizar los mismos datos al mismo tiempo o cuando los servidores de bases de datos se vuelven inaccesibles.
«Cuando la red se cure a sí misma y se reincorpore de nuevo, dirá:’Oh, ¿qué fue lo último que se escribió? Voy a escribir eso y habrás perdido un montón de datos».
Riak, por el contrario, ofrece características que permiten que se configure para actualizar automáticamente el sistema con los datos correctos en caso de que se produzcan tales problemas. En la mayoría de los casos, es capaz de resolver con éxito estos problemas, según Macklin.
«Usted obtiene el beneficio de escribir una arquitectura libre de sincronización que lanza los datos a una base de datos NoSQL y en caso de concurrencia o fallo, en la mayoría de los casos de uso que tenemos, se curará automáticamente.
«No es para todo, pero creo que el principal punto de venta de Riak es que te permite correr a escala y también te dan un grado de corrección».
Los sistemas basados en Erlang de bet365 pueden manejar alrededor de cinco veces más usuarios que sus predecesores y con los Juegos Olímpicos a poco más de un año de distancia no pasará mucho tiempo antes de que tenga la oportunidad de ver cómo se las arreglan bajo una carga muy pesada.
«En un negocio como el nuestro tenemos picos masivos y queremos que la experiencia de usuario en la cima de ese pico sea realmente buena».
Suscríbase al boletín informativo de ConsejoTecnologico.com en el Reino Unido.
Suscribirse
Lecturas adicionales