PHAS-JS: Servidor de Aplicaciones

Después de bastante tiempo de trabajo, al fin, conseguí liberar la primera versión estable de PHAS-JS, un servidor de aplicaciones JavaScript con base en PHP e interfaz de administración en Django.

¿Por qué tanta variedad?, en principio, he empleado PHP porque tiene todos los elementos básicos y necesarios para construir en poco tiempo la infraestructura que quería montar… pero igualmente, no quería que se mezclase el núcleo del programa con la interfaz de usuario, ya que sino, se tiende a confundir y enrarecer. En este caso, el único nexo de unión entre sistema e interfaz sería la base de datos.

Spidermonkey es un sistema probado desde hace mucho tiempo en navegadores como Firefox, donde se emplea JavaScript de forma segura, sin que interfiera ni dañe al resto de ejecuciones ni al propio núcleo del sistema, y por ende, tampoco al servidor ni elementos asociados a él. Por ello, el despliegue de aplicaciones es completamente seguro.

La interfaz, igualmente, se encarga de la gestión de la base de datos, tanto para la creación de la misma a través de las herramientas que incorpora Django.

Características

PHAS-JS se compone de cinco partes: entrada de datos, proceso, sesión, acceso a datos y salida de datos. Con respecto a estos elementos, se aportan las siguientes características:

  • Entrada de Datos: la entrada de datos, normalmente, se realizará mediante la parte de query de la URL, pero también puede incluirse en el cuerpo de la petición a modo POST. Igualmente, se puede realizar una entrada de datos de tipo SOAP.
  • Proceso: el proceso se realiza a través de la ejecución de un código JavaScript almacenado en la base de datos interna del sistema.
  • Sesión: la sesión es un espacio de información que se mantiene activo entre llamadas. Este espacio se puede almacenar en sesiones normales y corrientes de PHP, con lo que se pueden configurar con los mecanismos que soporta PHP para distribuir las sesiones en varias máquinas en caso de que se quiera, o el uso de la implementación específica de Memcache o MongoDB que se ha realizado y probado para ello.
  • Acceso a Datos: a través de la interfaz, se puede habilitar, para los procesos, el uso de conexiones a base de datos específicas. Estos procesos accederán referenciando el nombre, nunca la forma de conexión completa.
  • Salida de Datos: una vez se ha realizado el procesado, la ejecución del código, se retornan los datos ya sea mediante respuesta SOAP (únicamente si la entrada ha sido SOAP) o algún tipo de serialización que puede indicarse explícitamente, como: YAML, JSON, serialización de PHP, XML o en texto plano (salida print_r de PHP).

Además, el sistema tiene caché a varios niveles:

  • Caché explícita a nivel de petición: en caso de indicar entre los parámetros de entrada cache, el sistema activa la caché con el tiempo que se haya configurado. Con lo que las siguientes peticiones ya no saturarían al sistema o serían mucho más rápidas, en caso de que la petición en sí fuese costosa.
  • Caché a nivel de consulta: a través de una consulta en la función dql de DataAccess, se puede activar la caché por consulta, que hace que el propio proceso pueda emplear caché para las consultas individuales que realiza a la base de datos.

Futuro…

Mientras desarrollaba esta versión iban surgiendo las ideas y las fui anotando en tickets que fueron a parar en lo que se ha convertido en el roadmap como la versión 1.1. Por lo que, en el futuro, el sistema tendrá una mejor integración con MongoDB, prubas unitarias en interfaz de administración y marcado de cuales son buenas para producción y cuales no, entornos de desarrollo, producción y test, además de otros que se quieran crear…

Espero que sea útil… aquí la web: http://phas-js.org