Banderitas en la nube
2010-04-29 18:04:07
Hacia tiempo que le tenia ganas a la nube, pero una traba relacionada con la liquidez, en particular, la falta de ella, me impedia pegarme con los grandes pesos pesados. Porque ganas e ideas para webs tengo, pero de fundirme doce o trece euros al mes en un servidor virtual para que luego no entre ni dios, no tanto. Por tanto, solo me quedaba la posibilidad de intentarlo con AppEngine y Heroku, que son, posiblemente, los primos pobres de la computación en la red de redes: nada de maquinas virtuales, tu subes el programa y nosotros te lo ejecutamos.
Me decidí por AppEngine tanto por la sencillez de uso como por el lenguaje elegido, Python. Tambien se puede programar en Java, pero mi consejor super especial del dia es: ¡NO! No toqueis la versión de Java de AppEngine ni con un palito, o tendreis que aguantar toda una retahila de bugs conocidos, APIs incomprensibles, APIs incomprensibles de terceros para intentar normalizar las anteriores, falta de documentacion o directamente erronea y en general una ciudadania de segunda clase con respecto a la versión en Python. Por su parte, Heroku, es bastante especialito, usando Ruby para el codigo y Git para las actualizaciones, rollo muy Rockstar-programo-con-mi-Mac-en-un-Starbucks.
Pues bien, mi experiencia AppEngine ha sido, en general, bastante lamentable, como mínimo, pero sobre todo lo que mas me ha alucinado es los programas en AppEngine no parecen seguir un flujo determinista, es decir, el mismo programa con la misma entrada a veces da resultados diferentes, incluso, durante el desarrollo de mi prueba, un par de veces tuve que parar el servidor porque el programa no funcionaba, y al volver a reiniciar, todo iba perfectamente. O subir una copia del programa que funciona en local y que en la nube deje de ir sin dar error... y que pasado un rato empiece a ir al pelo. Frustrante, y eso que era una prueba con un código bastante pequeño, no quiero ni pensar lo que puede ser intentar sacar adelante un proyectazo en esas condiciones.
Y esa es otra: ¿cual era la prueba? Reemplazar mi servicio de geolocalización en PHP (las banderitas de los comentarios). Resultado: en ocho horas, fundida toda la CPU asignada para el dia (cada 24 horas te dan 6.5 horas de CPU de cuota, y si te pasas, te cierran el grifo)(o a pagar claro, que va a ser que no). Un programa consistente en un acceso a memoria (memcache), a veces una query (ojo, una, y no siempre) y muy raramente, del orden de una de cada cien peticiones, una lectura HTTP de mi propio servidor de geolocalización para alimentar la base de datos.
AppEngine vende la moto de que, en su versión gratuita, da para un blog con cinco millones de visitas al mes. ¡Vamos, ni de coña, si mis banderitas lo funden con lo que serian unas 250 mil sencillisimas peticiones al mes! (Es decir, diez veces menos de lo prometido) Un desastre, y claro, lo tuve que quitar el mismo dia que lo puse, ocho horas de reloj me duraron las banderitas en la nube.
Hay que pensar en positivo, al menos estoy aprendiendo Python con esta historia.
Rollos antiguos
2010-04-24 18:24:48 - Numeros aleatorios en Python.
2010-04-23 16:46:44 - Adios, Torpedo.
2010-04-19 08:12:34 - Ejecutar maquinas virtuales VMWare en segundo plano.
2010-04-19 05:48:16 - Idioma del teclado en maquinas virtuales remotas.
2010-04-13 10:03:06 - La verdadera y triste historia de ReadyBoost.