Bragful: Un PHP escalable y confiable

PHP no ha evolucionado como otros lenguajes para cubrir la necesidad de sistemas reactivos puesta de moda y necesaria en los nuevos tiempos de la informática. Afortunadamente Bragful ha llegado para ayudar. ¿Quieres saber qué es y cómo funciona?

Bragful es una evolución de ephp concebida para ejecutar sistemas como Wordpress, Prestashop, Drupal, etc. En un entorno reactivo. Esto significa cumplir los puntos del manifiesto reactivo que conseguimos a través de sus características únicas.

Un poco de historia

A finales de 2013 comencé probando varias herramientas de análisis léxico y sintáctico. Tras mucho esfuerzo conseguí un parseador básico para PHP (y otro para SQL) con bastantes fallos pero muy prometedor. Me atraía la posibilidad de escribir código PHP para aplicaciones Erlang/OTP y dar entrada a otros a programar usando BEAM (la máquina virtual de Erlang).

A lo largo de 2014 y 2015 no pude hacer mucho pero el sistema siguió creciendo agregando cada vez más características y siendo cada vez un PHP más completo. En 2016 decidí dar un giro de tuerca y cambiar PEG por un analizador a medida y el soporte de PHP aumentó considerablemente.

Ahora a mediados de 2017 y casi con toda la implementación de orientación a objetos terminada considero que estamos preparados para dar nombre a la solución y exponer lo que es capaz de hacer… ¿Preparados?

¿Qué es Bragful y qué puede hacer?

Bragful es el nombre comercial dado a la solución. Es una compleción de ephp que agrega la capa HTTP para aceptar peticiones y otras librerías necesarias más:

  • HTTP junto con todas las funciones para manejar la entrada de peticiones y modificar la respuesta.
  • Session para crear sesiones y mantener la información entre ellas.
  • Websocket algo que PHP no puede hacer de forma nativa. Permite gestionar y atender conexiones websocket. Con una interfaz muy similar a Ratchet.
  • Delayed Job (o trabajos en segundo plano) permite gestionar trabajos a realizar en segundo plano por otros procesos sin necesidad de mediación de una base de datos. Con una interfaz similar a DJJob.
  • PDO soporte para conexión a base de datos.

Además de proporcionar herramientas de nivel empresarial como sistemas de depuración preparados incluso para depurar llamadas en producción sin afectar al resto del sistema. Tests, coverage, profiling, … todo para ayudar a generar mejor código PHP y por supuesto ayuda para el despliegue de forma segura.

La potencia de Bragful está en ayudar a los programadores y administradores de sistemas que usan PHP a escalar y diseñar software de forma más sencilla y con menos elementos en juego. Un sistema con PHP cuando escala normalmente requiere de:

  • Sistema para paliar carga: Varnish o CDN.
  • Servidor web: Apache o Nginx.
  • Intérprete: PHP (ya sea FPM o como módulo dentro del servidor)
  • Trabajo en segundo plano: Cron + RabbitMQ/ZeroMQ/Beanstalk/…
  • Cache de acceso a base de datos: Redis o Memcached.
  • Base de datos: MySQL o PostgreSQL como backend de base de datos.

En un sistema con Bragful tenemos:

  • Sistema para paliar carga: No es necesario, tenemos [Yaws][].
  • Servidor web: Yaws embebido (forma parte de Bragful).
  • Intérprete: ephp + addons = Bragful.
  • Trabajo en segundo plano: Bragful.
  • Cache de acceso a base de datos: Bragful.
  • Base de datos: Mnesia, MySQL o PostgreSQL como backend de datos.

La instalación es simple y escalable.

¿En qué fase está y cuándo verá la luz?

Estamos aún en fase activa de desarrollo. Pretendemos lanzar una versión inicial lo antes posible que tenga soporte para Wordpress. Esta será nuestra primera versión 0.1.0.

Tenemos la esperanza de poder liberar como servicio para pruebas abiertas y gratuitas a todo el que esté interesado. Si quieres estar al tanto y conseguir una cuenta gratuita para probar el sistema cuando esté en fase alpha suscríbete a nuestro boletín en la página de Bragful.

¿Cómo puedo ayudar?

Toda ayuda es bienvenida por lo que…

  • Si tienes conocimientos de Erlang y quieres aportar al código de [ephp][] puedes hacerlo a través de su web de github tanto abriendo tickets de problemas, código adicional o sugerencias.
  • Si tienes conocimientos de PHP y quieres agregar más código de prueba, más tests, puedes ver en el directorio test/code/ que hay mucho código PHP y su respectiva salida (test/code/*.out). Puedes ayudar generando más para mejorar el nivel de cobertura del código y detectar posibles problemas.
  • Si no tienes conocimientos pero quieres ver cuanto antes esta herramienta disponible siempre puedes ayudar con una donación al proyecto. Cada donación recibida se invertirá para la contratación de programadores solo y en exclusiva para este proyecto.

Conclusiones

Este ha sido un proyecto a largo plazo, comenzado hace casi 4 años. Esperamos sea de gran utilidad para potenciar PHP en un futuro y muchos puedan beneficiarse de sus características. ¿Qué te parece? ¿Probarías Bragful con soporte para Wordpress? ¿Algún otro framework o sistema que use PHP? ¡Déjanos un comentario!