PokerRoom, Ongame y MySQL
He encontrado un interesante caso de estudio sobre el uso de MySQL en la operación de la red de sitios de poker Ongame.
Una red de sitios de poker es una infrastructura que interconecta diversos sites de poker, juntando todos los jugadores en las mismas mesas. Todos los sitios que participan en la red (también denominados skins, “pieles” de la red, puesto que son en el fondo el mismo sitio con distintas caras) se benefician de pertenecer a dicha red, puesto que pueden garantizar una mayor variedad de juegos y un volúmen de jugadores inacabable. Nadie quiere jugar en un sitio de poker pequeño si éste no puede garantizar un mínimo de tráfico, al margen de cuán buenos puedan ser sus bonos o ofertas para nuevos jugadores – al final, lo que el usuario quiere es poder jugar al poker en cualquier momento, a los stakes que quiera, ya sea en juegos short-handed, o un anillo completo, y ya sea en torneos, o en cash games.
Ongame es una de las mayores redes de sitios de poker. En horas punta, junta hasta 27.000 jugadores simultáneamente, de acuerdo con las estadísticas no oficiales que flopturnriver.com publica. Los sitios de poker más conocidos que participan de la red Ongame son PokerRoom y bwin. Otras webs que participan son Hollywood poker, mansion poker, y europoker.
Como iba diciendo, encontré este interesante artículo que analiza el rol de MySQL en PokerRoom y la red Ongame. En él, se explica que en los inicios de PokerRoom, sus fundadores buscaron herramientas de a la vez alta calidad y bajo coste, y como otros tantos en el mundo del e-business, decidieron utilitzar la típica configuración Linux + Apache + MySQL + PHP, tan popular hoy en día que incluso tiene su propio mote: LAMP.
El artículo también hace incapié en el uso de MySQL en la red Ongame, que entra en juego a cada mano de poker que se reparte cada uno de los sitios que forman parte de dicha red. Menciona también la necesidad vital de proporcionar un entorno seguro, cosa siempre importante en un sitio donde el dinero cambia contínuamente de manos y, si me permiten añadir, en un sistema tan susceptible de intentos de intrusión: después de todo, poder ver las cartas de un oponente sería una manera de ganar dinero increible para un hipotético atacante, y sería de muy difícil detección si se hiciera con el debido ciudado. Es fácil de entender el porqué el artículo no ofrece demasiada información sobre un algoritmo que emplean para detectar a los tramposos (seguramente, para detectar la denominada collusion), que estaría basada en una red neural.
El tercer punto en qué el artículo hace hincapié es el rendimiento de la plataforma. Como ya se ha mencionado, el número de jugadores simultáneos puede llegar a 27.000 a día de hoy. Es fácil imaginar el estrés que puede conllevar para la base de datos. El artículo menciona una carga media de 2000 transacciones MySQL por segundo, con picos de 4000, y esto era en 2004, carga que en el momento era servida por un servidor master Dell 2650 con dos procesares a 2.8GHz, más dos nodos esclavos. Los servidores de juego se ejecutaban en una docena más de máquinas Dell. Los sistemas ejecutaban el sistema operativo Red Hat Enterprise Linux.
En definitiva, aunque el artículo está ligeramente desfasado, es una lectura interesante para los jugadores más geek, aunque sólo sea un artículo destinado a convencerte de que MySQL es la mejor base de datos sobre la faz de la tierra. Los amantes de PostgreSQL pueden también encontrar su base de datos favorita en uso en el mundo del poker a través de pokertracker, que la usa para almacenar la información sobre las manos que analiza.
Pueden obtener el artículo aquí. Hay otra versión del artículo aquí en el que se focaliza más en el uso de tecnologías de HP y no se mencionan las máquinas Dell.