Reflexiones sobre Opensim (unga I)

Hace más de un año que en ai utilizamos Opensim. Al principio sólo nos interesaba evaluarlo para nuestros proyectos de arquitectura, pero nos enganchó (bueno, me enganchó a mí, Impalah, porque me gustan los juguetitos nuevos) y pronto comenzamos a utilizarlo habitualmente para realizar prototipos (bueno, Asha lo usa porque yo, Impalah, sufro hasta para arrastrar una textura en una prim).


Con el paso de las semanas fuimos desarrollando pequeñas herramientas y procedimientos. Si, por ejemplo, con Henshin conseguimos reducir hasta en un 80% el tiempo de construcción, con nuestro nuevo juguetito además el tiempo que pasábamos en Second Life ajustando texturas y modificaciones de prims se redujo al mínimo indispensable. Además podíamos jugar con nuestros terrenos y hemos desarrollado packs de texturas para terrenos que de otra forma hubiera sido económicamente poco viable.


Aún con las desventajas que tiene (sobre todo en cuanto a estabilidad y escalabilidad) Opensim nos parece una plataforma viable para nuestros proyectos. Con el paso del tiempo la estabilidad ha ido en aumento así que nos quedaba por resolver el problema de la escalabilidad.


Si se pretende crear un grid medianamente grande y poder dar acceso no ya a decenas sino a miles de usuarios no considero los servidores de grid (UGAIM) una opción viable.


No ya porque me parezca reinventar la rueda el crear un nuevo sistema para servir peticiones http/https, sino por la necesidad de tener 5 servidores corriendo sobre .NET/mono (consumo de recursos), la incomodidad de gestionarlos desde una consola poco amigable (o de manera sucia accediendo directamente a la base de datos) y la duda de si en un futuro cercano podrían atender con comodidad, pongamos, 1000 peticiones concurrentes sin necesitar máquinas excesivamente caras.

El aspecto de manejo y escalabilidad, sobre todo asociado al coste, me aterra profundamente.
Así que tomé una decisión: crear nuevos servidores UGAIM con tecnologías existentes, fiables y lo más escalables posibles.


Hablando de http la primera opción que se me vino a la mente fue Apache (más tarde light httpd, pero ya lo contaré en otra ocasión). Es fiable, robusto, escalable, corre sin problemas sobre Linux/*IX (que para mí es mucho más seguro y estable que Windows) y es usado con éxito cada día en miles de aplicaciones web.


Tendría que escoger un lenguaje de desarrollo, y a ser posible que estuviese más que probado. Las opciones eran muchas, pero las reduje a 2: PHP y Python. Java lo descarté porque le tengo cierto odio personal; que me perdonen los javeros pero yo necesito una lancha de carreras, no un petrolero.


Tras semanas de investigación, estudiando arquitecturas web me decidí a comenzar con PHP. Por si alguien no lo sabe, Facebook y Twitter corren sobre PHP y, si consiguen atender a los millones de usuarios y peticiones que tienen, seguro que podrían ayudarme a mí. Eso sí, la migración a Python es más que probable a medio plazo.


Este fue el comienzo del proyecto unga, que ahora mismo estamos usando para ejecutar nuestro grid. Tenemos una versión estable, corriendo sobre Linux/Apache (LAMP) estándar, rápida y además muy sencilla de gestionar.


¿Que cuando saldrá a la luz? Cuando estemos totalmente satisfechos con nuestro trabajo.


En próximos post iré contando más detalles.


Impalah