¿Qué hay por detrás? Pinceladas de nuestro backend

No, no os penséis que ha habido un golpe de estado, y los tecnólogos frikis nos hemos hecho con el poder de las comunicaciones en la empresa, pero ya iba siendo hora de hablar de temas «divertidos» para el pequeño grupo de developers que hay suelto por el mundo. Eso sí, no voy a profundizar mucho, para que a la gente «normal» no le explote la cabeza (y para poder pasar la censura, claro, claro).

Para el backend necesitábamos algo que nos permitiese leer muy rápido independientemente de que tuviesemos una entrada, un millón o un billón y, para esto, diseñamos unos algoritmos y unas estructuras de datos especiales (que ya hemos modificado varias veces). Pero también necesitamos poder escalar con facilidad, intentar garantizar que cuando empecéis a contar a todos vuestros amigos lo que mola gpmess no tengamos una de esas caídas tan tipicas que ya parecen ser habituales y tomadas como algo normal. Pues permitidme decir: ¡NO ES NORMAL! Si se han hecho las cosas como se debe un sistema no se debe caer por mucho que se incremente la demanda en un 1000%. Cierto es que no hay que sobrediseñar en exceso, pero si estás en un entorno de alta incertidumbre y haciendo algo que esperas que sea de uso mundial, hay que estar preparados, sobre todo si no supone un gran sobreesfuerzo. Y a lo mejor estoy escupiendo hacia arriba, pero por el momento creo que tenemos los deberes hechos.

Windows Azure

La mayor parte de mi experiencia profesional (no la personal/pasional) ha girado en torno a Microsoft, y aunque quien me conoce sabe que no me caso con nadie, he de reconocer que estos se preocupan por los desarrolladores. Sí, sé que es algo controvertido, y me costó una discusión con Bernardo Hernandez cuando estuve visitando Google, pero al César lo que es del César y Microsoft piensa mucho en los developers (casi siempre). Y no, no lo digo por el famoso vídeo de Ballmer, sino porque Microsoft prepara un camino tecnológico muy sencillo con herramientas estupendas. También diré que discrepo muchísimo con algunas líneas tecnológicas que han seguido que me han parecido casi aberrantes.

Tal vez por esto, o tal vez porque en mis pruebas de Appengine y AWS no quedé muy contento y Heroku me pareció muy verde, elegimos Azure para desarrollar el backend. ¿Qué nos da Azure? Nos permite abstraernos de un montón de dificultades técnicas que impone un sistema de este tipo. Al programar no necesitamos pensar en que hay un balanceador de carga, o en que los datos están replicados para evitar pérdidas, simplemente nos tenemos que preocupar de por dónde vienen, cómo se modifican y a dónde van. Simple. Además, si la programación ha sido medianamente orientada a la plataforma, permitirá escalar simplemente cambiando un numerito (y pagando obviamente), lo que da un tiempo para optimizar los procesos que lo requieran.

El resultado es que las lecturas tardan lo mismo ahora que tenemos bastante más de 1 millón de yipis, que cuando no teníamos ninguno, y que el sistema no se resiente ni cuando se están escribiendo muchos yipis, ni siquiera cuando se están realizando tareas intensivas en background. Además, según las pruebas, y a falta de optimizar muchísimas cosas, soportaríamos más de 7500 usuarios sólo con lo que ya tenemos (recursos gratuitos). No son malos números ¿verdad?

Imagen tomada de WindowsAzure.com