Llevaba ya mucho tiempo sin escribir en el blog y hoy he encontrado un hueco para comunicar al mundo que después de casi 5 meses, hemos lanzado un proyecto del que nos sentimos particularmente orgullosos. PetrolPrices.com es un proyecto que tiene ya casi 10 años en el Reino Unido pero en el último año es cuando se ha decidido darle un empujón y crear un referente para los conductores del país.
El reto
A priori es un proyecto bastante interesante, con cerca de 3 millones de usuarios y una comunidad deseosa de actualizaciones, pero la verdad es que también constituye un reto, ya que tenemos que estar a la altura de las circunstancias. Un fallo afectará a millones de usuarios y la confianza sobre el producto ya no será la misma, a todo ello le tienes que sumar lo antiguo que es el proyecto, ya que tras mirar lo desactualizado que estaba, la única opción era la reconstrucción desde los cimientos.
El servidor
Optamos por un servidor CentOS, para la instalación hemos utilizado nuestra propia fórmula secreta mediante ansible de esta manera podemos replicar el servidor en caso de rotura o fallo de sistema en cosa de una hora
Para correr php hemos usado nginx ya que en nuestra experiencia las aplicaciones van más rápidas que en apache, además la caché FastCGI te da unos tiempos de respuesta buenísimos, lo único es que hay que entender a la perfección la aplicación que pretendes cachear y nos ha dado más de un quebradero de cabeza 🙁
La velocidad es una de las cosas que Google tendrá en cuenta para rankear nuestra web, pero más importante será dar a nuestros usuarios una buena experiencia de navegación por ello instalamos el paquete de mejoras PageSpeed
Por último, instalamos un sistema de back up para que se replique la base de datos y siempre tengamos una copia actualizada en caso de que haya algún problema con nuestra base de datos MySql
PetrolPrices.com WordPress
Para la página en sí que interactúa con el usuario hemos decidido usar WordPress, pero no la instalación estándar ya que a la hora de tener diferentes entornos (Desarrollo, Pruebas y Producción) es bastante tedioso el cambiar valores de configuración de la base de datos para amoldarlo a nuestra máquina local, con ello hemos conseguido que las bases de datos sean intercambiables y también integrar composer con nuestro WordPress.
Los plugins utilizados son la mayoría relacionados con SEO(Yoast SEO), aunque también hemos tenido que realizar un plugin para que la plataforma WordPress se comunique con la plataforma de administración (la que contiene los datos de usuarios, precios) mediante una API
Para el tema hemos usado BootStrap, ya que los dispositivos móviles y tablets son alrededor del 50% del tráfico para este proyecto. También hemos tenido en cuenta que las imágenes tengan un buen grado de compresión ya que afectará de una manera significativa a nuestra web.
Para que todos nuestro ficheros js y css estén comprimidos, sean sólo un fichero y tengan las dependencias de librerías bajo control usamos gulp, los navegadores recomiendan usar esta técnica para que el ancho de banda usado sea el menor posible y por lo tanto nuestra página cargue más rápido.
PetrolPrices.com Administración
Todo el trabajo pesado recae en la plataforma de administración, que actualiza los precios de la gasolina, contiene todos los datos importantes y transmite a través de la API la información tanto a las aplicaciones móviles y web. Hemos decidido usar una instalación de Zend Framework 2 y Doctrine 2.
Para codificar todo esto solemos trabajar con PHPStorm, la verdad es que para proyectos grandes va muy bien, puede cargar 300 Megas de código en segundos, además de la cantidad de ayuda extra a la hora de programar hace que sea de agradecer, aunque sin lugar a dudas lo mejor es la opción de hacer debug tanto en el servidor, ficheros o API REST